完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
写了一个51单片机的程序if(flag==0)
{ while(TF0==0); TF0=0; i=P0>>7; P0=i+(P0<<1); } 在这段话里,我并没有对TH0和TL0重新赋值,在while(TF0==0);等待之后,定时器0的TH0和TL0都应该为计满状态了,但是为什么无论我用keil仿真还是proteus仿真结果此时TH0与TL0的值都是0X00,0X02;请大侠们帮看看。多谢了 以下是源代码 #include"AT89X51.h" bit flag=0; bit a=0;//为了使一开始没有流水效果定义(删掉也行) void EXIT0(void) interrupt 0 { if(a==0)P0=0XFE; flag=0; a=1; } void EXIT1(void) interrupt 2 { if(a==0)P0=0XFE; flag=1; a=1; } void main() { unsigned char i; EA=1; EX1=1; EX0=1; IT1=1; IT0=1; /***************/ TMOD=0X01;//定时器0,工作方式1 TH0=0XD8; TL0=0XEF; TR0=1;//开启定时器 while(1) { if(flag==0) { while(TF0==0); TF0=0; i=P0>>7; P0=i+(P0<<1); } if(flag==1) { while(TF0==0);//使用查询方式,等待定时完成 TF0=0; i=P0<<7; P0=i+(P0>>1); } } } |
|
相关推荐
3个回答
|
|
|
执行指令是需要时间的,并且定时器一旦启动是一直计数的
|
|
|
|
|
|
计满了,我没有赋初值为什么还会计数
|
|
|
|
|
|
计数满了是不会停止计数的!
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2031 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4790 浏览 0 评论
4271 浏览 9 评论
3859 浏览 16 评论
4432 浏览 1 评论
4258浏览 3评论
3434浏览 0评论
1201浏览 0评论
2887浏览 0评论
3950浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 15:40 , Processed in 1.056986 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3817