蓝桥杯大模板(哔哩哔哩UP主西风)

/*头文件声明区*/
#include <STC15F2K60S2.H>
#include "SystemInit.h"
#include "Key.h"
#include "Seg.h"
#include "ds1302.h"
#include "onewire.h"
#include "iic.h"

/*变量声明区*/

//延时
unsigned char Key_Slow_Down;   //按键减速专用变量
unsigned char Seg_Slow_Down;   //按键减速专用变量
unsigned char Led_Slow_Down;   //按键减速专用变量

//Key

    unsigned char Key_Val,Key_Down,Key_Up,Key_Old;
//Seg
unsigned char Seg_Buf[] = {10,10,10,10,10,10,10,10};  //数码管显示专用数组
unsigned char Seg_Point[] = {0,0,0,0,0,0,0,0};       //数码管小数点显示专用数组
//Led

//Timer
unsigned char Seg_Pos;


/*按键处理区域*/
void Key_Proc()
{
    if(Key_Slow_Down) return;
    Key_Slow_Down = 1;
    
    Key_Val = Key_Read();
    Key_Down = Key_Val & (Key_Val ^ Key_Old);
    Key_Up = ~Key_Val & (Key_Val ^ Key_Old);
    Key_Old = Key_Val;
    


}

/*显示处理区域*/
void Seg_Proc()
{
    if(Seg_Slow_Down) return;
    Seg_Slow_Down = 1;
}

/*其他处理区域*/
void Led_Proc()
{
    if(Led_Slow_Down) return;
    Led_Slow_Down = 1;
}

/*定时器初始化*/
void Timer0_Init(void)        //1微秒@12.000MHz
{
    AUXR &= 0x7F;            //定时器时钟12T模式
    TMOD &= 0xF0;            //设置定时器模式
    TMOD |= 0x05;
    TL0 = 0;                //设置定时初始值
    TH0 = 0;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
}

void Timer1_Init(void)        //1毫秒@12.000MHz
{
    AUXR &= 0xBF;            //定时器时钟12T模式
    TMOD &= 0x0F;            //设置定时器模式
    TL1 = 0x18;                //设置定时初始值
    TH1 = 0xFC;                //设置定时初始值
    TF1 = 0;                //清除TF1标志
    TR1 = 1;                //定时器1开始计时
    
    EA = 1;
    ET1 = 1;
}


/*中断服务区域*/
void Timer1_Serve()  interrupt 3
{
    if(++Key_Slow_Down == 10) Key_Slow_Down = 0;    //按键延时专用
    if(++Seg_Slow_Down == 500) Key_Slow_Down = 0;   //数码管延时专用
    if(++Led_Slow_Down == 20) Key_Slow_Down = 0;    //Led延时专用
    if(++Seg_Pos == 8) Seg_Pos = 0;
    Seg_Disp(Seg_Pos,Seg_Buf[Seg_Pos],Seg_Point[Seg_Pos]);
}

/*main主函数*/
void main()
{
    System_Init();
    Timer1_Init();
    while(1)
    {
        Key_Proc();
        Seg_Proc();
        Led_Proc();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值