微机接口实验——测试微机系统串行口,串口通信外环自发自收"/>
南邮微机接口实验——测试微机系统串行口,串口通信外环自发自收
发送采用查询方式。接收采用中断方式。
发送的查询模式,要查询两个东西,一个是键盘缓冲区,一个是通信线状态寄存器。当键盘缓冲区有内容,读取出键盘缓冲区ASCII码,然后等待通讯线状态寄存器的D5位为1,即可将数据发送到发送保持寄存器(2F8H)。
接收采用中断方式。一旦接收到字符,即转入中断服务子程序。由于采用辅串口,中断类型码为0BH。进入中断服务子程序后读取接收缓冲寄存器内容,如果不是“Esc”即显示出来,否则设置标志flag为-1,退出。在主程序中检测flag为-1即退出程序。
程序开始的时候,首先初始化串口8250和中断8259A,保存原有中断向量0BH,并写入新的0BH向量入口地址。初始化8250的时候注意在中断允许寄存器开放接受中断,在MODEL控制寄存器使D3为1开放中断。
.586
DATA SEGMENT USE16
OLD0B DD ?
FLAG DB 0
DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA
BEG:MOV AX,DATAMOV DS,AXCLICALL I8250CALL I8259ACALL RD0BCALL WRITE0BSTISCA:CMP FLAG ,-1JE RETURNMOV AH,1INT 16HJZ SCAMOV DX,2FDHIN AL,DXTEST AL,20HJZ SCAMOV AH,0INT 16HAND AL,7FHMOV DX,2F8HOUT DX,ALCMP AL,1BHJNE SCA
TWA:MOV DX,2FDHIN AL,DXTEST AL,40HJZ TWA
RETURN:CALL RESETMOV AH,4CHINT 21HSERVICE PROCPUSHAPUSH DSMOV AX,DATAMOV DS,AXMOV DX,2F8HIN AL,DXAND AL,7FHCMP AL,1BHJE NEXTMOV AH,2MOV DL,ALINT 21HJMP EXIT
NEXT:MOV FLAG ,-1
EXIT:MOV AL,20HOUT 20H,ALPOP DSPOPAIRET
SERVICE ENDPI8250 PROCMOV DX,2FBHMOV AL,80HOUT DX,ALMOV DX,2F9HMOV AL,00HOUT DX,ALMOV DX,2F8HMOV AL,60HOUT DX,ALMOV DX,2FBHMOV AL,03HOUT DX,ALMOV DX,2F9HMOV AL,01HOUT DX,ALMOV DX,2FCHMOV AL,0BHOUT DX,ALRET
I8250 ENDPI8259A PROCIN AL,21HAND AL,11110111BOUT 21H,ALRET
I8259A ENDPRD0B PROCMOV AX,350BHINT 21HMOV WORD PTR OLD0B,BXMOV WORD PTR OLD0B+2,ESRET
RD0B ENDPWRITE0B PROCPUSH DSMOV AX,CODEMOV DS,AXMOV DX,OFFSET SERVICEMOV AX,250BHINT 21HPOP DSRET
WRITE0B ENDPRESET PROC IN AL,21HOR AL,00001000BOUT 21H,ALMOV DX,WORD PTR OLD0BMOV DS,WORD PTR OLD0B+2MOV AX,250BHINT 21HRET
RESET ENDPCODE ENDSEND BEG
更多推荐
南邮微机接口实验——测试微机系统串行口,串口通信外环自发自收
发布评论