借助单片机外部中断实现与微机通信
时间:02-25 11:35 阅读:730次
*温馨提示:点击图片可以放大观看高清大图
简介:介绍一种软硬件设计方案,它可使单片机在作同步移位寄存器使用时进行串行异步通信。
MCS-51系列单片机只有一个全双工串行口,它既可以实现串行异步通信,也可以作为同步移位寄存器使用,但不能同时实现两者功能。实际系统中,单片机的并行口常作为单片机与其他器件的快速交换数据口,而其串行口则用来作为同步移位寄存器发出数据。例如以下电路图中,8951单片机的串行口与串入并出移位寄存器74LS164配合,控制数码管的显示数据。显然,如果此时使微机与单片机系统进行串行通信,用以前普遍采用的串行口发生中断是不行的,因为此时单片机的串行口工作于方式是方式0,而通信则要使其工作于方式1、2或是方式3。为解决此问题,笔者设计了以下电路和软件。
1硬件电路
微机的RS232通信口经电平转换器GD75189与8951单片机的P3.2和RXD连接,单片机的TXD经GD75188与微机的串行口连接,这里两个电平转换器负责把电信号转换为单片机和微机所需要的电平。从电路看出,我们通过单片机的外部中断0来响应微机的串行通信申请,即单片机系统在串行口作为同步寄存器使用时,依然能及时捕捉到微机发出的信号,然后准备就绪开始与微机进行串行通信。单片机与微机串行口接口电路如图1所示。
2软件编程
在单片机初始化过程当中,将外部中断0设为优先级,串行口设为工作方式0,用定时器控制串行口定时发出一组数据,经74LS164转换为并行数据,点亮数码管。若在此过程中微机串行口发出数据,则引起单片机外部中断0的发生。单片机在执行中断服务子程序时,首先关闭外部中断0,以免在通信时又误引起中断,再改变串行口工作方式,使其工作于微机同样的方式1,并把波特率设定成与微机波特率一致,然后与微机进行通信。单片机的外部中断0在它检测到P3.2口是低电平时有效,所以先要使微机发出的数据中有一位为0,例如88H。在微机与单片机通信完毕后一定要把单片机串行口重新设置为工作方式0,以便它重新作为同步移位寄存器使用,而且要开放外部中断0,为下一次通信作准备。这里,因上位机微机的通信程序与下位机类似,所以只给出作为下位机的单片机外部中断0服务子程序流程图(图2)。
3总结
利用这种方法,在不需要增加任何硬件的基础上,稍微改变连线,用软件相配合实现了微机与单片机的串行通信,而丝毫没有影响单片机串行口作为同步移位寄存器使用,实现了一举两得,笔者已将此方法成功应用到以8951单片机为核心的仪器中。这种方法充分利用了软件的灵活性,不仅适用于51系列单片机,同样可以推广到其他单片机系统中。
参考文献:
[1] 李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994.
[2] 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,1990.