加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sys.c 1.99 KB
一键复制 编辑 原始数据 按行查看 历史
云川 提交于 2020-04-27 12:34 . 增加蜂鸣器等外设模块
#include "main.h"
void sys_Timer0_Init(void) //50uS@11.0592MHz
{ AUXR &= 0x7f;
TMOD &= 0xf0; //使用定时器0,8位重装载,12T模式(标准51定时器,工作方式2)
TMOD |= 0x02;
TH0=(255-45); //高8位赋初值
TL0=(255-45); //低8位赋初值
TR0=1; //启动定时器1
ET0=1; //开启定时器0中断
}
char count_50uS=20;
char count_1mS=10;
char count_10mS=10;
char count_100mS=10;
bit flag_50uS=0;
bit flag_1mS=0;
bit flag_10mS=0;
bit flag_100mS=0;
bit flag_1S=0;
void sys_Init()
{ sys_Disp_Init();
sys_Beep_Init();
sys_Timer0_Init();
EA = 1;
}
void sys_Timer0_isr() interrupt 1 //程序基本架构/任务调度/OS
{ flag_50uS = 1;
if( --count_50uS == 0 ) //调度系统架构基本操作
{ count_50uS = 20;
flag_1mS = 1;
if( --count_1mS == 0 )
{ count_1mS = 10;
flag_10mS = 1;
if( --count_10mS == 0 )
{ count_10mS = 10;
flag_100mS = 1;
if( --count_100mS == 0 )
{ count_100mS = 10;
flag_1S = 1;
}
}
}
}
}
void sys_task_50uS()
{ sys_Beep_drv();
user_task_50uS();
}
void sys_task_1mS()
{ sys_Display_drv();
sys_Key_drv(); //调度设备驱动
user_task_1mS();
}
void sys_task_10mS()
{ if( sys_BP.timer != 0) sys_BP.timer--; //蜂鸣器计时
user_task_10mS();
}
void sys_task_100mS()
{ user_task_100mS();
}
void sys_task_1S()
{ user_task_1S();
}
extern void Func_Keydown();
extern void Func_Keyup();
void sys_main()
{ if( flag_50uS ) { flag_50uS=0; sys_task_50uS(); }
if( flag_1mS ) { flag_1mS=0; sys_task_1mS(); }
if( flag_10mS ) { flag_10mS=0; sys_task_10mS(); }
if( flag_100mS ) { flag_100mS=0; sys_task_100mS(); }
if( flag_1S ) { flag_1S=0; sys_task_1S(); }
if( sys_event_Keydown ) { sys_event_Keydown=0; user_func_Keydown();}
if( sys_event_Keyup ) { sys_event_Keyup=0; user_func_Keyup(); }
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化