完善资料让更多小伙伴认识你,还能领取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个回答
|
|
执行指令是需要时间的,并且定时器一旦启动是一直计数的
|
|
|
|
计满了,我没有赋初值为什么还会计数
|
|
|
|
计数满了是不会停止计数的!
|
|
|
|
只有小组成员才能发言,加入小组>>
3284 浏览 9 评论
2960 浏览 16 评论
3464 浏览 1 评论
9008 浏览 16 评论
4054 浏览 18 评论
1124浏览 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 09:45 , Processed in 1.148468 second(s), Total 52, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号