各位大虾帮我看看下面的程序啊,怎么定时器对程序的运行有影响的?<br />程序如下:<br />#include<reg51.h><br />#define uchar unsigned char<br />#define uint unsigned int<br />#define ulong unsigned long<br /><br />extern show(uchar showdata);<br /><br />ulong IRcode=0x00000000; //32位的键代码<br />uchar Lcustomcode=0x92; //低八位用户码<br />uchar Hcustomcode=0x82; //高---- <br />uchar datacode=0xf8; //8位键数据码<br />uchar Rdatacode=0x80; //8位键数据反码<br /><br />void delay()<br />{<br /> uchar i,j,k;<br /> for(i=200;i>0;i--)<br /> for(j=200;j>0;j--)<br /> for(k=5;k>0;k--) ;<br />}<br /> <br /><br /><br />void init()<br />{ <br /> TMOD=0x11; //定时器0,工作方式1 ; 定时器1,工作方式1<br /> TCON=0x01; //外中断0下降沿触发,(包括TR1=0,TR0=0)<br /> TH0=0x3c; //初始化定时器0,定时50ms<br /> TL0=0xb0;<br /> TH1=0x00; //初始化定时器1 <br /> TL1=0x00;<br /> <br /> EA=1; //开全中断<br /> ET0=1; //开放T0中断<br /> ET1=1; //开放T1中断<br /> EX0=1; //开放外中断0<br /> <br />}<br /><br />void remoteint() interrupt 0 using 0 //遥控器中断处理函数<br />{<br /> <br /> EX0=0; <br /> IRcode=code; //code为读到的32位的值<br /> <br /> Lcustomcode=IRcode; <br /> IRcode=IRcode>>8; <br /> Hcustomcode=IRcode;<br /> IRcode=IRcode>>8; <br /> datacode=IRcode; <br /> IRcode=IRcode>>8; <br /> Rdatacode=IRcode; <br /> <br /> TR1=1; //开始计时????????? <br /> EX0=1;<br /> <br />}<br /><br />void main()<br />{<br /> <br /> init(); <br /> <br /> while(1) <br /> { <br /> <br /> show(Lcustomcode); <br /> delay();<br /> show(Hcustomcode);<br /> delay(); <br /> show(datacode);<br /> delay();<br /> show(Rdatacode); <br /> delay(); <br /> <br /> } <br />}<br />问题就出在TR1=1上,有了这句之后显示的数码管就一闪一闪的了,并且数据也不正确,但删掉这句后,程序就正常,或者一开始就关闭T1(ET1=0)也没影响,程序运行也正常,难到定时器的中断对程序也有影响吗?<br />谢谢各位! |
|