之前我编写的小定时函数(我省略了定义):
void delay(unsigned int t)
{ while(--t);}
void main()
{ for(i=0;i<8;i++)
{P1=LED[i];
BZ=0;
delay(2050);}
for(j=0;j<8;j++)
{P1=LED0[j];
BZ=1;
delay(2050);}
}
那么上面这个我用的是软件延时,但是我怎么能用定时器代替这段函数,就是能不能直接在上面定义完定时器后直接在主函数中调用?我编写了以下的函数,但是好像不对劲。。
void Timer_0()
{ TMOD=0x01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;}
void Timer_IRS() interrupt 1
{ TH0=0x00;
TL0=0x00;
BZ=~BZ;}
void mian()
{ Timer_0();
while(1)
{for(i=0;i<8;i++)
{P1=LED[i];}
}
好像实现不了我第一段用软件延时编写的程序的功能,请问我该怎么改还是说,直接就是错的。
除了这种,我在编程的途中可以随时调用delay函数进行延时,可是这个定时器是不是没办法直接调用,必须得等待溢出打断,如果这样的话它怎么代替延时函数?
小弟刚刚学习51单片机,学到定时器这里卡主了,苦思冥想一晚上还有许多疑问解不开,请各位资深大哥帮我一帮~~万分感谢~~
对了,忘记说一点,BZ我设置的是蜂鸣器,好惆怅。。
如何使用51单片机定时器实现定时功能
3. 定时器的工作模式 51单片机的定时器还有多种工作模式,比如,定时器0\/1的工作模式有 0 - 模式、1 - 模式、2 - 模式、3 - 模式;而定时器2的工作模式有 T0\/T1 方式、T2 方式、外部计数输入方式。在掌握这些工作模式的使用方法后,定时器就可以更加灵活地应用到实际工程中。4. 定时器在单片...
请问51单片机怎么用定时器延时?
51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器\/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器\/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易...
51单片机如何用一个定时器当多个延时电路用, 就是按下开关一 ,亮三秒...
TMOD |= 0x10;\/\/设置定时器模式 TL1 = 0x0C;\/\/设置定时初值 TH1 = 0xFE;\/\/设置定时初值 TF1 = 0;\/\/清除TF1标志 ET1 = 1; \/\/使能定时器1中断 TR1=1; \/\/定时器1开始计时 EA =1; \/\/开总中断 } void main(void){ LED1=1;LED2=1;LED3=1;KEY1=1;KEY2=1;KEY3=1...
51单片机中,定时器怎么做延时函数用,比如说,要精确延时1s,该怎么写...
void main(){ while(1){ Delay1ms(1000);\/\/1s延时;} } void Delay1ms(unsigned int a)\/\/0~65535 { unsigned long b;\/\/0~0xffffffff b = TimeTickCount;\/\/记下及时器初始值 while((TimeTickCount-b<a)||(0xffffffff+TimeTickCount-b...
51单片机如何用一个定时器当多个延时电路用, 就是按下开关,一,灯泡...
void TIMER1(void) interrupt 3 \/\/定时器1中断函数使用默认寄存器组 { TH1 = 0XFE; \/\/定时器1定时时间=500us TL1 = 0X0C;if(YSJS1!=0){ YSJS1--;} else LED1=1;if(YSJS2!=0){ YSJS2--;} else LED2=1;if(YSJS2!=0){ YSJS2--;} else LED2=1;} ...
怎么用51单片机定时器定时1.5秒
简单,选择一个定时器,设置多少次中断一次。设置一个参数专门计数,计算出多少次中断就可以达到1.5秒。然后参数清零,重复计数
c编程时,51单片机怎么用定时器写一个延时1ms的子函数
51单片机的定时器工作方式有4中,其中3种需要在中断函数中重装初值,而且C51明确规定中断函数不能传入参数也不能返回参数,那么这样一来就只能用不用重装初值的工作方式2了,我给出了工作方式2的初始化函数:void init(unsigned int x){ TMOD=0x02;TH0=x;TL0=x;EA=1;ET0=1;TR0=1;} 这样将x...
怎样用51单片机实现小时级延时
51单片机的机器周期是晶振的12分频的倒数。所以你24Mhz的机器周期是T=12\/12M=0.5us。假设你要定时的数是M,则初值等于M\/机器周期(表示执行多少个机器周期)。若初值小于65536 TH0=(65536-初值)%256 TL0=(65536-初值)\/256 51在24MHZ的最大定时是65536*T=0.032768s,远小于一小时。所以为了...
怎样使用51单片机的定时器?
51单片机定时器的使用 51单片机定时器\/计时器的使用 步骤:1、 打开中断允许位:对IE寄存器进行控制,IE寄存器各位的信息如下图所示:EA: 为0时关所有中断;为1时开所有中断 ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES: 为0时关串口中断;为1时开串口中断 ET1:...
求C51单片机延时程序…要求是用查询法的…且要用if语句的。
根据你所说的延时方法,应该是用定时器中断里面设定标志位来产生延时的方法。比如你可以把定时器设定为每1ms进一次中断,在中断里面把一个标志位(如flag)置一 当你需要1ms延时的时候你可以先初始化定时器,然后查询标志位是否置一,置一则执行if后面的语句,即if(flag){};当你需要10ms延时时,你...