一种单片机控制的指令转换器的设计
2.7 分频电路本文引用地址:https://www.eepw.com.cn/article/171804.htm
分频电路由12MHz晶振、74LS14、74LS92计数器(用于12倍分频)、74LS90计数器(用于10倍分频)组成,其主要目的是产生 的时钟信号,供串口扩展芯片8251的 使用,同时产生 的CLK信号,供8251内部时钟使用。
2.8 检测电路
为了便于维护、管理,本系统设计了系统自我检测功能模块,各由三极管和发光二极管组成的四组检测电路分别接至89C51的P14~P17,用于指示系统自检、来自指令发送装置的指令数据接收检测、发送应答数据至指令发送装置的检测及发送指令数据至指令接收装置的检测4种状态。
3 软件设计
软件是信号转换器的关键组成部分,本系统采用了KEIL C51集成开发环境。KEIL C51标准C编译器为89C51微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效、快速的特点。
3.1 8251初始化编程
8251是一个可编程的多功能通讯接口,所以在使用时必须对它进行初始化编程,确定它的具体工作方式。例如:规定工作在同步方式还是异步方式、传送的波特率、字符格式等。初始化编程必须在系统RESET以后,在USART工作以前进行,即USART不论工作于任何方式,都必须经过初始化。本系统中,两片 8251都进行收发工作。
对于8251(Ⅰ),收发数据的速率为9600bps,接收器、发送器的时钟频率为153.6KHz,所以波特率系数为异步×16,字符长度为8位,无奇偶校验位,异步方式,一个起始位,一个停止位。8251(Ⅰ)的方式选择字、命令字分别为#4EH、#37H。
对于8251(Ⅱ),收发数据的速率为2400bps,接收器、发送器的时钟频率为153.6KHz,所以波特率系数为异步×64,字符长度为8位,无奇偶校验位,异步方式,一个停止位。8251(Ⅱ)的方式选择字、命令字分别为#4FH、#37H。
8251(Ⅰ)、8251(Ⅱ)的控制字和状态寄存器的地址分别为#1FFFH、#3FFFH,下面以8251(Ⅰ)为例给出初始化编程:
MOV DPTR,#1FFFH ;送方式控制字
MOV A,#4EH
MOV @DPTR,A ;送命令指令
MOV A,#37H
MOV @DPTR,A
3.2 8259A初始化编程
前面已经提过,由于8259A与89C51的接口信号不能完全兼容,因此必须对89C51输出的控制信号进行相应的变换后再对8259A进行控制。在软件方面需要解决的问题是:当CPU进入中断响应周期,送来第①个 应答负脉冲时,89C51不能接收8259A送来的CALL指令机器码(两者CALL指令机器码不兼容),在中断程序中将其废掉,然后在第②、③个 应答负脉冲期间,用2条MOVX A,@R0指令读出8259A中断矢量低8位送DPL,高8位送DPH,通过DPTR,再用跳转指令转至中断源对应的中断服务程序的入口执行,时序图见图3-1。
8259A中断控制程序包括:初始化主程序,解决89C51单片机中断初始化和8259A的初始化;中断服务程序以及为各个中断源服务的子程序,解决如何从8259A读入中断矢量地址并转中断处理程序,最后结束中断并返回,下面给出程序。
设8259A选择中断优先级固定,全嵌套工作方式,因此只需要填写ICW1、ICW2。IR0设定为边沿触发中断方式。中断源输入IR0的中断矢量为0260H,IR1以及以后的中断矢量依次加4。
评论