蓝桥杯单片机大模板(西风)
#include <REGX52.H>
#include "Key.h"
#include "Seg.h"
//变量声明区
unsigned char Key_Val,Key_Down,Key_Old;//按键扫描专用变量
unsigned char Key_Slow_Down;//按键减速专用变量 10ms
unsigned int Seg_Slow_Down;//按键扫描专用变量 500ms
unsigned char Seg_Pos;//数码管扫描变量
unsigned char Seg_Buf[6]={1,2,3,4,5,6};//数码管显示数据存放数组
//按键处理函数
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_Old=Key_Val;//辅助扫描
switch(Key_Down)
{
}
}
//信息处理函数,显示信息
void Seg_Proc()
{
if(Seg_Slow_Down)return ;
Seg_Slow_Down=1;//数码管减速程序
}
//其他显示函数
void Led_Proc()
{
}
//定时器0初始化函数
void Timer0Init(void) //1毫秒@12.000MHz
{
//AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0=1;
EA=1;
}
//定时器0中断服务函数,名字可以随便取
void Timer0Server() interrupt 1
{
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
if(++Key_Slow_Down==10)Key_Slow_Down=0;
if(++Seg_Slow_Down==500)Seg_Slow_Down=0;
if(++Seg_Pos==6)Seg_Pos=0;
Seg_Disp(Seg_Pos,Seg_Buf[Seg_Pos];
}
//main函数
void main()
{
Timer0Init();
while(1)
{
Key_Proc();
Seg_Proc();
Led_Proc();
}
}