以查询方式实现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状态

           }

        }

    }

}

 

你可能感兴趣的:(查询)