单片机程序设计中运用事件驱动机制

时间:2012-03-08来源:网络

unsigned char num_buf[8];

void uum_proc(void); /*数据处理模块*/

void ledbuf_write(unsigned,unsigned int); /*数据处理*/

void system_init(void); /*系统初始化*/

void uart_commune(void); /*串口通讯模块*/

void led_display(void); /*LED显示*/

void kb_scan(void); /*键盘扫描*/

void ic_reader(void); /*读IC卡*/

void ic_writer(void); /*写IC卡*/

void set_timer(unsigned int time_len,unsigned char type,unsigned char id); /*设置定时器*/

void t0_int_sever(void); /*定时器T0中断服务*/

void t1_int_sever(void); /*定时器T1中断服务*/

void int0_int_sever(void); /*INT0中断服务*/

void int1_int_sever(void); /*INT1中断服务*/

void uart_int_sever(void); /*串口中断服务*/

void main(void)

{

system_init();

while(1) {

if (t0_int) led_display();

if (int0_int) ic_reader();

if (t1_int) kb_scan();

if (uart_int) uart_commune();

if (kb_enter){

num_proc();

ic_writer();

ledbuf_write(num_buf,8);

}

}

}

事件驱动的单片机程序设计是通过在中断服务程序中置位相位标志,把耗时的中断服务中的处理部分分离出来,中断返回后,再由主程序根据标志启动相应的处理模块。在任务处理完成后,清除相应的标志。由于中断服务程序短小,所以一般能实时地响应各种中断;而处理程序之间不会被相互调用,所以不会产生代码重入;各模块界限分明,给程序中各模块的统调带来很大的方便。

实践证明,运用事件驱动机制来纺织单片机程序,即使对于要求定时准,耗时多的多中断、多模块系统,也可轻松地完成。

1 2 3

关键词: 事件驱动 单片机 程序设计 实时响应

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版