首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2013-03-27 
怎么在这个程序里加一个计时器T1实现同样的目的#includereg51.h//让P1.0引脚上的指示灯按每1s亮一下的频

怎么在这个程序里加一个计时器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只是个名字,看自己喜好取名了

热点排行