8.2 设8251A的控制和状态端口地址为52H,数据输入/输出口地址为50H(输出端口未用),输入50个字符,将字符放在BUFFER所指的内存缓冲区中。请写出这段的程序
1 8086系统中,8251A的C/D端应当和哪个信号相连,以便实现对状态端口、数据端口、控制端口的读/写?
与地址线的低位相连。
2 什么是波特率?若要产生一个波特率为2400的串行信号,且波特率因子编程为16,那么串口发送/接收时钟的频率是多少?P221
波特率是指单位时间内传送二进制数据的位数,以位/秒为单位。38400Hz
3 设计一个采用异步通信方式输入字符的程序段,规定波特率因子为64,7个数据位,1个停止位,偶校验,端口地址为40H、42H,待输入字符存放在2000H:4000H单元。
MOV AL, 01111011B OUT 42H, AL MOV AL, 04H OUT 42H, AL MOV DI, 0 MOV CX, 2000 MOV BX, 4000H L0: IN AL, 42H
TEST AL, 02H JZ L0 IN AL, 40H
1
;发送2000个字符
;读取状态字
读万卷书 行万里路
旗开得胜 MOV [BX+DI], AL INC DI IN AL, 42H TEST AL, 38H JZ ERR LOOP L0 JMP EXIT ERR: CALL ERR-OUT EXIT:
4 设8251A为异步工作方式,波特率因子为16,7位数据位,奇校验,2位停止位。8251A端口地址为2A1H、2A2H。编写程序从串口输出100个字符,设字符存放在BUF开始的缓冲区中。
MOV AL, 0EAH MOV DX, 2A2H OUT DX, AL MOV AL, 11H OUT DX, AL MOV DI ,0 MOV CX, 100
MOV BX, OFFSET BUF BEG: IN AL, DX TEST AL, 01H JZ BEG
MOV AL,[BX+DI]
2
;测试有无帧校验错
;调出错处理
...
读万卷书 行万里路
旗开得胜 MOV DX,2A1H OUT DX,AL INC DI
MOV DX ,2A2H IN AL,DX TEST AL,38H JZ ERROR LOOP BEG JMP EXIT
ERROR:CALL ERR_OUT EXIT: ....
读万卷书 行万里路3
因篇幅问题不能全部显示,请点此查看更多更全内容