最近完成了一个单片机小项目,很简单,LED扫描,加按键加串口通信。简单说明一下我的框架程序。
下面是主函数,在初始化硬件设备和系统定义后,开启中断。
int main(void)
{
Disable_interrupt();
device_init();
system_init();
Enable_interrupt();
while(1)
{
event_manager();
}
return 0;
}
在事件管理程序中,根据事件标志位来判断事件是否需要执行。
void event_manager(void)
{
if(CHKBIT(Event_Flag,EVENT_LED_REFRESH))
{
//TODO : send frame buffer to display
CLRBIT(Event_Flag,EVENT_LED_REFRESH);
}
else if(CHKBIT(Event_Flag,EVENT_KEY_SCAN))
{
//TODO : To Scan button..
key_scan();
CLRBIT(Event_Flag,EVENT_KEY_SCAN);
}
else
{ }
}
设定了一个定时器,采用溢出中断,每中断一次,置事件标志位,事件长短可根据实际情况来设定。
ISR (TIMER0_OVF_vect)
{
//TODO 01: assign the event....&nbs