/*头文件声明区*/
#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();
    }
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐