完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
9.用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为2∶1,设单片机的时钟频率为12MHz,编写有关程序。 #include
unsigned char i; ***it 1_1=P1^1; void main() { i=0; TMOD=0x10; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1); } void timer1_int(void) interrupt 3 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; i++; if(i==2) P1_1=0; else if(i==3) { i=0; 1_1=1; } } 这个程序正确吗?赋初值是对TO赋的 TH0=(65536-10000)/256,开启的 ET1=1使能。 还是我的理解错误了? |
|
相关推荐
10个回答
|
|
肯定啦。。。。你一直都只是在对T1配置,中断函数也是T1的程序没跑飞就好了。。。T0赋值木有用,你只是默认了(TH1=TL1=0)而已。。。。。
|
|
|
|
TH0改成TH1.........占空%50吗。。。1:2吧。。。。
|
|
|
|
这不重要。 我想知道:为什么对T0赋初值,却进入了T1的中断?
|
|
|
|
搞错对象了!!
|
|
|
|
肯定进入T1中断啊。。配置的是T1的。。
|
|
|
|
你给T0附了值,T1没给,那他应该默认为T1为0-65536
|
|
|
|
i是局部变量,放外面
|
|
|
|
|
|
|
|
你这是太粗心了。配置的是定时器1,初始值赋给了定时器0的TH0.TL0,而不是TH1.TL1
|
|
|
|
如楼上所说,使用定时器T1,却对定时器T0进行设置,这时错的。
二,定时时间需要自己计算,波形周期100hz,占空比2:1,所以定时时间是100hz的三分之一。 三, IF(i==2) P1_1=0; 这里的P1_1应该是1_1。 四,把TH0,TL0改为TH1,TL1 |
|
|
|
只有小组成员才能发言,加入小组>>
3284 浏览 9 评论
2960 浏览 16 评论
3464 浏览 1 评论
9008 浏览 16 评论
4054 浏览 18 评论
1126浏览 3评论
579浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
572浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2306浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1863浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 19:37 , Processed in 1.449865 second(s), Total 97, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号