单片机的实现多任务程序(2)
发布时间:2021-06-06
发布时间:2021-06-06
在51单片机如何实现多任务的程序
sbit Ge_bit = P2^3;
sbit XiSu_Dian = P1^7;
// 定时器累加时间
unsigned char Add_Ms; //1毫秒 加一次
unsigned int Accumul_Ms; //累加计数器 2秒钟灯顺序切换
unsigned char Key1_Delay1; //按键1防抖延迟时间
unsigned char Key2_Delay1; //按键2防抖延迟时间
unsigned char Key3_Delay1; //按键3防抖延迟时间
unsigned int Key1_Delay2; //按键1低电平延迟时间 unsigned int Key2_Delay2; //按键2低电平延迟时间 unsigned int Key3_Delay2; //按键3低电平延迟时间
unsigned char Move_Num; //数码管1的值
unsigned char SMG_Value[4]; //数码管1的值
//位操作区
unsigned char bdata Flag_Byte[1];
sbit Key1_Flag1 = Flag_Byte[0]^0; //加键按下标志
sbit Key1_Flag2 = Flag_Byte[0]^1; //加键弹起标志
sbit Key2_Flag1 = Flag_Byte[0]^2; //移动键按下标志
sbit Key2_Flag2 = Flag_Byte[0]^3; //移动键弹起标志
sbit Key3_Flag1 = Flag_Byte[0]^4; //减键按下标志
sbit Key3_Flag2 = Flag_Byte[0]^5; //减键弹起标志
sbit CDis_Flag = Flag_Byte[0]^6; //循环显示还是按键显示标志 sbit ShanS_Flag = Flag_Byte[0]^7; //被选中的按键闪烁标志
// 主程序
void main(void)
{
//定时器初始化
Timer_Initial();
while(1)
{
Scan_Key(); //按键扫描
Delay_Sub1(); //延迟时间减 循环时间
Xun_Dis(); //循环显示