经常不知道 CPU 是死机,还是所写代码有问题,干脆弄个灯来观察 CPU 是否正常。
void Timer1 (void) interrupt 3 // T1 的中断号为 3
{
static uchar numBlueLED = 40; // 2S (2/0.05)
TR1 = 0; // 停 T1
TL1 = -50000; // 低 8 位
TH1 = (-50000) >> 8; // 高 8 位
TR1 = 1; // 开 T1
// 开蓝生命灯 5x50mS, 周期 2S
numBlueLED--;
if (numBlueLED == 5)
{
IO_BLUELED = 0; // 开蓝灯
}
else if (numBlueLED == 0)
{
IO_BLUELED = 1; // 关蓝灯
numBlueLED = 40;
}
}
void main (void)
{
//--- 定时器中断初始化 ---
TMOD = (TMOD & 0x0f) | 0x10; // 置T1为方式1,并且不影响 T0
// 延时50mS的时间常数
// 计算方法: 1 uS 1 个周期 (12M / 12) 则应置数:65536 - (50000uS/1))
TL1 = -50000; // 低 8 位
TH1 = (-50000) >> 8; // 高 8 位
TR1 = 1; // 启动 T1
ET1 = 1; // T1 中断允许
EA = 1; // 开中断
while (TRUE)
{
NC;
}
}