新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机程序设计中运用事件驱动机制

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

作者: 时间:2012-03-08 来源:网络 收藏

LED显示的实现

显示模块结构见图2。以定时器T0作为LED的动态扫描的定时基准,T0的定时时间最大值 Tseg=20ms/(8×N)(其中N为LED位数),改变 Tseg的值可改变显示的亮度。T0每隔Tseg时间向MCU申请中断,在T0的中断服务程序中置位相应的标志位(Message_Flag中的D0 位)。主程序检测到此标志位被置位后,启动显示模块实现位段的显示输出。

键盘输入的实现

键盘模块结构见图3。在LED动态扫描期间,只有被点亮的LED相应的位选线维持大约3ms的低电平,而在系统工作的绝大部分时间内LED的位选线(即键盘的列线)维持高电平。当有键被按下时,将把键盘的行线中某一根拉成高电平,经或非门后,向MCU 申请INT1中断,在INT1的中断服务程序中启动定时时间为20ms的定时器T1。T1的定时时间到后向MCU申请T1中断,在T1的中断服务器程序中置位相应的中断申请标志(Message_Flag中的 D1位)。主程序检测到此标志位被置位后,启动键盘扫描模块实现键盘输入。键盘输入完成(用户按“确认”键),置位键盘输入确认标志(Message_Flag中的D7位)。

IC卡的读写

IC 卡的SDA、SCL经卡座分别通过P1.0、P1.1与MCU相连。当IC卡插入卡座时,座上的微动开关使INT0变为低电平,向MCU申请INT0中断。在INT0中断服务程序中置位相应的中断申请标志(Message_Flag中的D2位),主程序检测到此标志位被置位后,启动IC卡的读模块,以软件模块I2C协议来实现读卡操作。在数据处理完成后,同样通过软件模块I2C协议来完成写卡的操作。

串口通讯

实际应用中可把UART转换成RS232C与PC相连或转换成RS485等其它协议组成网。 MCU与外部的通讯采用中断方式,在串口的中断服务程序中置位相应的中断申请标志(Message_Flag中的D4位)。主程序检测到此标志位被置位后,启动串口通讯模块,实现与外部的数据通讯。

主程序的设计

综上所述,主程序首先完成系统的初始化,然后循环检测各中断的中断申请标志,如有某标志被置位,则启动相应的处理模块完成相应的任务。程序结构如下(用C51编写):

vnsigned bdata message_flag;

sbit t0_int=message_flag^0;

sbit t1_int=message_flag^1;

sbit int0_int=message_flag^2;

sbit uart_int=message_flag^4;

sbit kb_enter=message_flag^7;

unsigned char kb_buf[8];

unsigned char led_buf[8];

unsigned char ic_buf[8];



评论


相关推荐

技术专区

关闭