8251A串行通信实验 - 图文

发布时间 : 星期一 文章8251A串行通信实验 - 图文更新完毕开始阅读

MOV DX,291H OUT DX,AL

MOV AL,0DH ;ICW4 MOV DX,291H OUT DX,AL MOV DX,291H

IN AL,DX ;初始化主片,读OCW1,中断屏蔽控制字,奇地址 MOV AL,11111110B MOV DX,291H

OUT DX,AL ;OCW1 MOV AX,0 MOV ES,AX

MOV DI,00011000B SHL DI,1 SHL DI,1

MOV BX,SEG ISR ;设置中断向量 MOV DS,AX

MOV AX,OFFSET ISR MOV ES:[DI],AX MOV ES:[DI+2],BX

MOV DX,28BH ;初始化8253 MOV AL,00010110B OUT DX,AL MOV DX,288H MOV AX,13 OUT DX,AL

MOV DX,299H ;8251A的控制口地址 MOV AL,0

OUT DX,AL ;想8251A的控制口写0 CALL DELAY ;延时 MOV AL,0

OUT DX,AL ;想8251A的控制口写0 CALL DELAY MOV AL,0

OUT DX,AL ;向8251A的控制口写0 CALL DELAY

MOV AL,40H ;写复位命令 OUT DX,AL CALL DELAY

MOV DX,299H ;初始化8251 MOV AL,01001110B OUT DX,AL CALL DELAY MOV DX,299H

MOV AL,00010111B

OUT DX,AL CALL DELAY

MOV DI,3000H ;指针初值 CX,000AH ;接收数据个数 MOV DX,298H

IN AL,DX ;8251数据口读入数据 MOV DX,CX

MOV CL,123 ;发送数 MOV AL,CL OUT DX,AL STI

A2: JMP A2 DELAY PROC MOV CX,02H LOOP $ RET

DELAY ENDP

ISR PROC ;中断服务子程序 PUSH AX PUSH DX

STI ;开中断 MOV DX,298H IN AL,DX MOV CL,AL

A1: MOV DX,299H IN AL,DX ;TxRDY=1? TEST AL,01H JZ A1

MOV DX,298H MOV AL,CL OUT DX,AL

CLI ;关中断

MOV DX,290H ;写OCW2,送中断结束命令EOI MOV AL,20H OUT DX,AL POP DX POP AX

IRET ;中断返回 ISR ENDP CODE ENDS END START

联系合同范文客服:xxxxx#qq.com(#替换为@)