蓝桥备赛之15的定时器2的使用

一个简单的样例,定时器T2实现PWM波的控制。

尤其注意定时器T2的初始化过程,是直接对8位寄存器进行操作的,然后还有T215系列的中断号 12


#include <stc15.h>

typedef unsigned char u8;

void Timer2Init(void);
void CloseFucker();

void main()
{
    EA = 1;
    CloseFucker();
    Timer2Init();

    while(1);
}

void CloseFucker()
{
    P2 = (P2&0x1F) | 0xA0;
    P0 &= 0xAF;
    P2 = P2&0x1F;
}

void Timer2Init(void)   //10微秒@11.0592MHz
{
    AUXR |= 0x04;       //定时器时钟1T模式
    T2L = 0x91;         //设置定时初值
    T2H = 0xFF;         //设置定时初值
    AUXR |= 0x10;       //定时器2开始计时
    IE2  |=  (1<<2);    //允许中断
}

void InterruptTimer2() interrupt 12
{   
    static u8 PWMCnt = 0;

    PWMCnt++;
    if(PWMCnt >= 250)
    {
        PWMCnt = 0;
    }

    if(PWMCnt <= 200)
    {
        P2 = (P2&0x1F) | 0x80;
        P0 = 0xFE;
        P2 = P2&0x1F;
    }
    else
    {
        P2 = (P2&0x1F) | 0x80;
        P0 = 0xFF;
        P2 = P2&0x1F;
    }
}

猜你喜欢

转载自blog.csdn.net/recclay/article/details/80400441