1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序要求:同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔2s依次输出1,10,50,100,200.400,800,1000hz的方波,晶振频率12mhz timer0 函数实现的应该是依次输出不同频率的功能,想问下timer0 函数里面为什么那么写?里面的40,80,120,160,320什么的都是怎么出来的,还有,flag和tt是想做什么用?谢谢大家 #include #include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 ***it beep=P2^3; uchar tt; uint fre,flag; void main() //主函数 { fre=50000; beep=0; TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 ET1=1; TR1=1; TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0() interrupt 1 //定时器0中断 { TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失 TH0=(65536-fre)/256; TL0=(65536-fre)%256; tt++; if(flag<40) //以下几个if分别用来选取不同的频率 if(tt==10) { tt=0; fre=50000; beep=~beep; } if(flag>=40&&flag<80) { tt=0; fre=50000; beep=~beep; } if(flag>=80&&flag<120) { tt=0; fre=10000; beep=~beep; } if(flag>=120&&flag<160) { tt=0; fre=5000; beep=~beep; } if(flag>=160&&flag<200) { tt=0; fre=2500; beep=~beep; } if(flag>=200&&flag<240) { tt=0; fre=1250; beep=~beep; } if(flag>=240&&flag<280) { tt=0; fre=625; beep=~beep; } if(flag>=280&&flag<320) { tt=0; fre=312; beep=~beep; } if(flag>=320&&flag<360) { tt=0; fre=156; beep=~beep; } TR0=1; } void timer1() interrupt 3 //定时器1中断用来产生2秒时间定时 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; flag++; if(flag==360) { flag=0; fre=50000; } } |
|
相关推荐
3个回答
|
|
timer0函数为中断函数·····标准格式是::
void 函数名() 中断号 using 工作组 { 中断服务程序内容 } using 工作组可省略; flag,tt;为标志常量,因为一次16位定时器最多能定时65536ns;所以2s要用flag来累加;
最佳答案
|
|
|
|
|
|
|
|
谢谢,终于搞明白了 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
386 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1670 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1123 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1005 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1229 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12018 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 13:22 , Processed in 0.696622 second(s), Total 74, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号