当前位置: 代码迷 >> 单片机 >> 如何在这个程序里加一个计时器T1实现同样的目的
  详细解决方案

如何在这个程序里加一个计时器T1实现同样的目的

热度:91   发布时间:2016-04-28 15:28:13.0
怎么在这个程序里加一个计时器T1实现同样的目的
#include<reg51.h>   //让P1.0引脚上的指示灯按每1s亮一下的频率进行闪烁

sbit P10=P1^0;   //P1^0是表示在单片机上的第一个管脚//
void Delay(unsigned int nN);   //此处没有unsigned也是可以的,但现在不知道为什么

void main()
{
   P1=0xFF;
   P10=0;
   while(1)
   {
      P10=~P10;  //用位逻辑“非”对引脚进行取反处理,相当于“CPL P1.0”
  Delay(40);  //延时
   }
}

void Delay(unsigned int nN)  //延时函数
{
   unsigned int a=0,b=0,c=0;   
   for(a=0;a<nN;a++)
   {
      for(b=0;b<200;b++)

      for(c=0;c<200;c++)
  {
      ;
  }
    }
}
计时器T1

------解决方案--------------------

unsigned char t0cnt=0;
void main(void)
{
TMOD=0X21;  //T0,T1工作于16,8位定时
TH0=0XD8;
TL0=0XF0;
TR0=1;
ET0=1;
EA=1;
        P10=1;
        while(1);
}
void Timer0(void) interrupt 1
{
t0cnt++;
TH0=0XD8;
TL0=0XF0;//根据实际情况自己调整初始值
        if(t0cnt>=10)//根据实际速度调整这个值
        {P10=~P10;t0cnt=0;}
}


自己百度,丰衣足食
------解决方案--------------------
引用:
请问    TMOD=0X21;     //T0,T1工作于16,8位定时
和TMOD=0x01;有什么区别吗
还有unsigned char t0cnt=0;为什么t0cnt定义为char,而不是int
t0cnt是习惯性定义的吗,我看有些地方用nJsq,有没有什么含义

TMOD=0X21;     //T0,T1工作于16,8位定时
 和TMOD=0x01;有什么区别吗
有区别,一个设置了T0,T1,2个定时器,1个只设置了一个,具体你看TMOD寄存器说明

t0cnt定义为char是因为只需要它计数几十个就够了,不需要很多,用char一个字节节省资源

t0cnt只是个名字,看自己喜好取名了
  相关解决方案