完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现我用定时器0方式1,定时中断方式输出频率可变的低电平固定(200US)的脉冲,脉冲是20次/分钟到120000次/分钟可调,现写了一段程序,好像输出的频与实际不一样,在36000次/分钟用试波器测只有299点几HZ,实际应是600HZ。程序如下:
//定时器0中断处理程序 void timer0_Int (void) interrupt 1 { static uchar i=0; static uchar t=0; if(t==1) { i=0; t=0; P42=0; Delay(Out_Pwm); //延时200US P42=1; } i++; if((Timer_Data/65536)>0) { if(i<=(Timer_Data/65536)) { TH0=0; TL0=0; } if(i>(Timer_Data/65536)) { t=1; TH0=((65536-Timer_Data)%65536)/256; TL0=((65536-Timer_Data)%65536)%256; } } if((Timer_Data/65536)==0) { t=1; TH0=(65536-Timer_Data)/256; TL0=(65536-Timer_Data)%256; } } 以上Timer_Data=60000000/Display_Data+Out_Pwm Display_Data:是每分钟脉冲次数,是可调的,通过按键来调 Out_Pwm:是低电平时时间(200US) Timer_Data:是将每分钟的次数转换成单次的时间,单位是US |
|
相关推荐
6个回答
|
|
那位帮帮查下什么问题?急
|
|
|
|
|
|
|
|
不知道我的思路对不对,有没有更好的方法,刚接触51一时找不到问题所在,帮帮分析下
|
|
|
|
不知道我的思路对不对,有没有更好的方法,刚接触51一时找不到问题所在,帮帮分析下
|
|
|
|
原子老师,帮帮看下
|
|
|
|
我都不用51了...
|
|
|
|
只有小组成员才能发言,加入小组>>
3280 浏览 9 评论
2958 浏览 16 评论
3460 浏览 1 评论
9004 浏览 16 评论
4052 浏览 18 评论
1115浏览 3评论
573浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
571浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2303浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1860浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:50 , Processed in 1.280420 second(s), Total 93, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号