粗略延时xms
12M晶振
void delayms(uchar x)
{
int i,j;
for(i=x;i>0;i--)
for(j=0;j<120;j++);
}
11.0592M晶振
void delayms(uchar x)
{
int i,j;
for(i=x;i>0;i--)
for(j=0;j<110;j++);
}
定时器0
#define CRYSTAL_FREQ 12000000 //可换
#define INTERRUPT_PERIOD_0 1000 //定时器0中断1/1000秒,可换
void Interrupt_Init()
{
TMOD = 0x01; //定时器0配置16位工作模式
//-----16位定时器初值设定-----
TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) / 256;
TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) % 256;
ET0 = 1; //允许T0中断
TR0 = 1; //T0开始
EA = 1; //允许总中断
}
void Timer0() interrupt 1
{
//-----16位定时器初值设定-----
TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) / 256;
TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) % 256;
}