还有就是中断处理是谁来执行?是操作系统来执行还是应用程序来执行?我看过好些关于串口的程序,当串口过来的字节超过几十个字节的时候取一次数据,但是8251A芯片的数据缓冲区只有3个字节,不知道是怎么回事?
看看这个对你有用没,这个数字电路的知识不太懂!
使用8251A的串行接口应用实验(一) 分类:默认栏目 使用8251A的串行接口应用实验(一)
1、实验目的
掌握用8251A接口芯片实现微机间的同步和异步通信。
掌握8251A芯片与微机的接口技术和编程方法。
使用8251A的串行接口应用实验(一)内容
2、实验内容
8251A的片选地址为050~05F,8251A的C/D接A0, 因此,8251A的数据口地址为050H,命令/状态口地址是051H,8251A的CLK 接系统时钟的2分频输出PCLK(2.385MHZ),图中接收时钟RXC和发送时钟TXC连在一 起接到8253A的OUT1,8253A的OUT1输出频率不小于79.5KHZ。
本实验采用8251A异步方式发送,波特率为9600,因此8251A发送器时钟输入端TXC输入一个153.6KHZ的时钟(9600×16)。这个时钟就有8253A的 OUT1产生。8253A的CLK1接1.8432MHZ,它的12分频正好是153.6KHZ。故8253A计数器1设置为工作方式3 --方波频率发生,其计数初值为000CH。
本实验发送字符的总长度为11位(1个起始位(0),8个数据位(D0在前),1个奇偶校验位,1个停止位(1),采用偶校验,发送数据为55H,反复发送,以便用示波器观察发送端TXD的波形。用查询8251A状态字的第0位(TXRDY)来判断1 个数据是否发送完毕, 当TXRDY=1时,发送数据缓冲器空。
3、实验步骤
(1) 运行实验程序
在系统显示"DVCC- 86H"状态下,按任意键,系统显示命令提示符"-"。
按GO键,显示器显示"1000 XX"
输入F000 : B400
按EXEC键,显示器显示"8251-1"
用示波器探头测TXD波形,以判断起始位、数据位、 偶校验位以及停止位的位置。
注:本实验只在单机状态下做。
4、程序代码:
CODE SEGMENT
ASSUME CS:CODE
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
SECOPORT EQU 0051H
SEDAPORT EQU 0050H
DATA EQU 0500H
START: JMP SERIAL
SERIAL: CALL FORMAT
MOV SI,DATA
CALL LEDDISP ;DISP 8251-1
WATTXD: MOV DX,SECOPORT
IN AL,DX
TEST AL,01H
JZ WATTXD
MOV AL,55H
MOV DX,SEDAPORT
OUT DX,AL
JMP WATTXD
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+SI]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D06H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
RET
CODE ENDS
END START