基于atmel mega88编写了一个简单的时间触发系统单片机框架程序

本文介绍了一个基于atmel mega88的简单时间触发系统框架程序,用于LED扫描和按键串口通信。主要通过主函数初始化硬件和系统,然后通过中断服务程序管理事件,如LED刷新和按键扫描,定时器中断每9ms和18ms触发相应的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近完成了一个单片机小项目,很简单,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值