led flash.txt

来自「通过定时器中断实现P1口LED隔1秒闪烁一次」· 文本 代码 · 共 46 行

TXT
46
字号
#include<reg52.h>

#define T0_INTERRUPT 1  //T0中断向量号
#define LED P1

typedef unsigned char uchar;
typedef unsigned int uint;

void Init_T0();

void main()
{
    LED = 0xFF;   //熄灭所有的LED
    Init_T0();    //初始化定时器0
    while(1)
    {
        PCON |= 0x01; //单片机进入休眠模式,节省功耗
    }
}

void Init_T0()
{
    TMOD &= 0xF0;
    TMOD |= 0x01;  //16位定时器模式
    
    TH0 = 0xFC;
    TL0 = 0x18;
    
    EA = 1;       //开全局中断
    ET0 = 1;      //允许T0中断
    TR0 = 1;      //启动定时器
}

void T0_Interrupt() interrupt T0_INTERRUPT
{
    static uint i = 0;
    TH0 = 0xFC;
    TL0 = 0x18;
    i ++;
    TF0 = 0;
    if(i == 1000)  //1秒取反LED,使之闪烁
    {
        LED ^= 0xFF;
        i = 0;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?