以查询方式实现1s定时
以查询控制器的控制位状态来实现1s定时。
#include <reg52.h> sbit LED = P0^2; unsigned int vT = 0; void main () { LED = 0; // 点亮 TMOD = 0x01; // 定时模式1 16位定时计数器 TR0 = 1; // 启动定时器0 TH0 = 0x3C; // 计数初值 15536 (65536-15536=50000 * 1us = 50ms) TL0 = 0xB0; while(1) { if (TF0 == 1) { TF0 = 0; // 清除标志位 vT++; if (vT == 20) // 20 * 50 = 1000ms = 1s { vT = 0; TH0 = 0x3C; // 计数初值 15536 TL0 = 0xB0; LED = !LED; // 溢出后切换led状态 } } } }