完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是我写的一个让蜂鸣器发出不同频率声音的程序,可是运行结果并不和我的想法相同,我查不出原因,希望大神指教!我的预想:从第一个频率运行到最后一个频率,再从头开始重复运行
运行结果:运行到最后一直重复最后一个频率的声音 #include #define uint unsigned int ***it beep=P2^3; uint t0,t1,num; void init(); void main() { init(); while(1); } void init() { num=46080; TMOD=0x11; TH0=(65536-num)/256; TL0=(65536-num)%256; TH1=(65536-46080)/256; TL1=(65536-46080)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; } void f() interrupt 1 { TH0=(65536-num)/256; TL0=(65536-num)%256; t0++; if(t1<40)//输出频率为1Hz的方波 { if(t0==10) { t0=0; num=46080; beep=~beep; } } if(t1>=40&&t1<80)//输出频率为10Hz的方波 { t0=0; num=46080; beep=~beep; } if(t1>=80&&t1<120)//输出频率为50Hz的方波 { t0=0; num=9216; beep=~beep; } if(t1>=120&&t1<160)//输出频率为100Hz的方波 { t0=0; num=4608; beep=~beep; } if(t1>=160&&t1<200)//输出频率为200Hz的方波 { t0=0; num=2304; beep=~beep; } if(t1>=200&&t1<240)//输出频率为400Hz的方波 { t0=0; num=1152; beep=~beep; } if(t1>=240&&t1<280)//输出频率为800Hz的方波 { t0=0; num=576; beep=~beep; } if(t1>=280&&t1<320)//输出频率为1000Hz的方波 { t0=0; num=288; beep=~beep; } } void t() interrupt 3//定时器1中断用来产生2s时间定时 { TH1=(65536-46080)/256; TL1=(65536-46080)%256; t1++; if(t1==320) { t1=0; num=46080; } } |
|
相关推荐
3个回答
|
|
是不是刚开始两个中断时间太近了,导致定时器0一直优先定时器1一直没机会执行
|
|
|
|
|
|
|
|
可是第一遍执行没有问题啊!是从第一个频率逐个执行到最后一个的,只是到了最后一个就不返回前面的了,一直发出最后一个频率的声音 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2024年上海海思MCU开发者体验官招募,手机/MatePad大奖等你拿!
341 浏览 0 评论
【xG24 Matter开发套件试用体验】蓝牙控制板载LED
405 浏览 0 评论
506 浏览 0 评论
电赛:mspm0l1306的开发板可以烧录程序,但是程序运行不了,怎么解决这个问题?
857 浏览 1 评论
【xG24 Matter开发套件试用体验】Silicon Labs 基于 EFR32MG24 Explorer Kit 开发板 开箱试用体验
726 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10491 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-4 09:26 , Processed in 0.795683 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191