中断方式比较特殊,需要使用单片机内部的中断处理机制,同时指定中断函数。
#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;
}
}
转载于:https://www.cnblogs.com/coloregg/p/3602546.html
相关资源:单片机精确定时1s