蓝桥杯 定时器

本文介绍了使用HC138进行GPIO接口扩展,控制LED灯,并利用Timer1实现1ms定时中断,用于四位LED灯状态切换。
摘要由CSDN通过智能技术生成

#include <STC15F2K60S2.H>

sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
sbit buzz_1= P0^6;
sbit jdq_2= P0^4;

sbit L1=P0^0;
sbit L2=P0^1;
sbit L3=P0^2;
sbit L4=P0^3;

void Init_HC138(unsigned char n)
{
     switch (n)
     {
         case 4:
              HC138_A=0;
              HC138_B=0;
              HC138_C=1;
         break;
         case 5:
              HC138_A=1;
              HC138_B=0;
              HC138_C=1;
         break;
         case 6:
              HC138_A=0;
              HC138_B=1;
              HC138_C=1;
         break;
         case 7:
              HC138_A=1;
              HC138_B=1;
              HC138_C=1;
         break;
     }
}

void led_disp()
{
    
    Init_HC138(4);
    
    P0=0xff;
    
    
}

void close_buzz()
{
    Init_HC138(5);
    
    buzz_1=0;//0是关闭
    jdq_2=0;//0是关闭
}
/*****************************************************************/
void Timer1Init(void)        //1毫秒@12.000MHz
{
    AUXR &= 0xBF;        //定时器时钟12T模式
    TMOD &= 0x0F;        //设置定时器模式
    TL1 = 0x18;        //设置定时初始值
    TH1 = 0xFC;        //设置定时初始值
    TF1 = 0;        //清除TF1标志
    TR1 = 1;        //定时器1开始计时
    
    ET1 = 1; // 允许定时器 1 中断
    EA = 1; // 允许系统中断
}

void ServiceTimer1()  interrupt 3
{
    static unsigned int T1Count;
    T1Count++;
    
    if(T1Count>=1000)
    {
        L1=0;
 
    }        
     if(T1Count>=2000)
    {
        L2=0;
    }    
    if(T1Count>=3000)
    {
        L3=0;
 
    }        
     if(T1Count>=4000)
    {
        L4=0;
    }     
    
}

/*****************************************************************/
void main()
{
     close_buzz();
     led_disp();
     Timer1Init();    
     while(1)
     {
        
         
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值