利用定时中断原理实现1S的定时,代码如下:
#include "reg51.h"
#include "intrins.h"
sbit led=P0^0;
void delay_50ms(char cnt);
void timeinit();
/*********************************
*主函数
**********************************/
void main()
{
unsigned char w=0x01;
timeinit();
while(1)
{
P0=w;
delay_50ms(20);
w=_cror_(w,1);
}
}
/*********************************
*50ms延时 50000us=50ms
**********************************/
void delay_50ms(char cnt)
{
char i=0;
for(i=0;i<cnt;i++)
{
TH0=(65536-50000)/256; //设置计数初值 50000us=50ms
TL0=(65536-50000)%256; //设置计数初值
TR0=1; //启动T0
while(!TF0); //如没有中断溢出 等待
TF0=0; //溢出清零
}
}
/*********************************
*定时器初始化 定时器0 方式一
**********************************/
void timeinit()
{
TMOD=0X01;//定时器0 方式一
}
仿真结果如下: