完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
本帖最后由 dongyumin 于 2013-8-6 15:53 编辑
各位前辈们,大家好,我是初学单片机,刚学到定时这用定时器1工作在方式1产生1S定时,然后LED取反,闪烁,,反反复复搞了好多次就是不知道错误在哪,身边又没有人能解答的,麻烦各位不吝赐教,到底哪里有问题,感激不尽。 #include unsigned char i; ***it led=P1^0; void main() { TMOD=0x01; TR1=1; TH1=0x0B; TL1=0x7F; EA=1; ET1=1; while(1); } //初始化 void timer1()interrupt 5 { TF1=0; TH1=0x0B; TL1=0x7F; i++; if(i==50) //定时0.02S*50 { i=0; led=~led; } } |
|
相关推荐
18个回答
|
|
|
|
|
|
|
|
|
.你这程序问题不少额。
一段一段来吧。 void main() { TMOD=0x01; TR1=1; TH1=0x0B; TL1=0x7F; EA=1; ET1=1; 以上这段,TMOD设置,高4位是设置定时器1,低四位是设置定时器0.上面TMOD=0x10吧。 void timer1()interrupt 5 { TF1=0; TH1=0x0B; TL1=0x7F; i++; if(i==50) //定时0.02S*50 { i=0; led=~led; } } 这一段,void timer1()interrupt 5 这里,interrupt x 这个x的数字在stc单片机中,只有0-4,分别代表外部中断0,定时器0,外部中断1,定时器1,串行口。所以应该是void timer1()interrupt 3 才对。然后TF1=0这句,进入中断程序就会自动清零的,不用手动清零,当然,写了也没错。这样应该就差不多了。 |
|
|
|
|
|
楼上说得对这个interrupt 5错了
|
|
|
|
|
|
中断算是子函数 应该先声明吧 而且 你的程序编的有问题吧 你自己单步运行下看看时序对不
|
|
|
|
|
|
中断向量号写错了
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
应先声明?就是在开头写下void timer1()么? |
|
|
|
|
|
|
|
|
|
|
|
我设置了一个也差不多,我都不是interrupt 5,是interrupt 1,或interrupt 0都没用,就是不出效果
|
|
|
|
|
|
|
|
|
中断函数是不需要声明的
|
|
|
|
|
|
|
|
|
|
|
|
果然有高人指点。
|
|
|
|
|
|
我只知道在51单片机中,interrupt x 这个x的数字0-5分别代表外部中断0、外部中断1、定时器0中断、定时器1中断、定时器2中断和串行口中断。(有些没有定时器2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:27 , Processed in 1.061786 second(s), Total 104, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3429