中断方式比较特殊,需要使用单片机内部的中断处理机制,同时指定中断函数。
#include <reg52.h> sbit LED = P0^2; unsigned int vT = 0; void main() { LED = 0; TMOD = 0x01; TH0 = 0x3C; // 计数初值3CB0H = 15536 (65536-15536=50000 * 1us = 50ms) TL0 = 0xB0; ET0 = 1; // EA即IE^1 等于1时申请中断定时器0中断打开 EA = 1; // 总中断打开 TR0 = 1; // 启动定时器0 while(1); } void MyInterrupt(void) interrupt 1 // 中断服务程序 { vT++; if (vT == 20) // 20 * 50ms = 1000ms = 1s { LED = !LED; vT = 0; TH0 = 0x3C; // 恢复计数初值 TL0 = 0xB0; } }