你说的应该是51单片机,1S的延时定时器直接产生做不到,但是可以定义变量判断得到。
void InitTimer0(void)
{ TMOD = 0x01; TH0 = 0x0D8; TL0 = 0x0F0; EA = 1; ET0 = 1; TR0 = 1; } void Timer0Interrupt(void) interrupt 1 { unsigned char 1; TH0 = 0x0D8; TL0 = 0x0F0; i++; if(i>100) { i=0; //在这写下你要实现的功能就行了// } }
这个是产生10ms的,可以在定时器中断定义一个变量i,然后自加到100就是1S了写下实现什么功能即可
其他的也一样。
阻塞 延时,在裸机中不建议,这样降低了系统的性能。
可考虑状态机。
将定时器配置成1ms中断一次,然后定时器中断里面放一个全局变量,中断函数就是这个变量++。
延时函数使用阻塞的方式,一直读取这个全局变量的值,知道读取的值和刚进入函数的时候的值相差1000,这便是1s延时