标题:
一种基于系统节拍时间的单片机程序设计模式(节拍时间的产生-02)
[打印本页]
作者:
水漫金山2017
时间:
2019-12-3 08:59
标题:
一种基于系统节拍时间的单片机程序设计模式(节拍时间的产生-02)
系统节拍时间,由单片机中的定时中断产生。我们先构造如下数据结构:
typedef struct {
volatile uchar Tick;
//这个就是系统节拍时间
uchar Cnt20ms;
//20ms扫描一次的任务,比如按键,
等等
uchar Cnt100ms;
//100ms扫描一次的任务,比如显示数据刷新,
等等
uchar Cnt500ms; //RTC时间数据,
等等
uchar Cnt2000ms; //其它等等 //当然了,这里还可以添加其它周期
}CLOCK_t;
extern CLOCK_t Clock;
在定时中断服务程序中,我们这样写:
void TimeX_ISR(void)
{
uchar Tick = Clock.Tick;
//定时器重装初值
TMR1H = (uint08)(PRE_VALUE >> 8); //这里假定系统节拍
时间
为4ms
TMR1L = (uint08)(PRE_VALUE);
if (Tick < 0xFF)
{
Clock.Tick = Tick+1;
}
}
然后,在主程序中,我们就可以使用这个系统节拍了
void main(void)
{
//关全局中断
//系统节拍定时器初始化
TimeX_Init();
other_Inint();
//开全局中断
for(;;)
{
if(
Clock.Tick
)
{
//关全局中断
Clock.Tick--;
//开全局中断
//按节拍分时处理各种任务
}
}
}
因为
系统节拍时间的产生确实一件没有任何争议的必须实现,所以就直接上了代码展示,让人更清晰。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1