?? sy6-8253.asm
字號:
PORT EQU 0C400H-0280H
P8253_C EQU PORT+283H;控制口
P8253_0 EQU PORT+280H;定時器0
P8251_C EQU PORT+2B9H;控制口
P8251_D EQU PORT+2B8H;數據口
DATA SEGMENT
DIS DB 0AH,0DH,'Please enter a charater:',0AH,0DH,'$'
ERRO DB 'Transport error!',0AH,0DH,'$'
ENDDD DB 'The end!',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,P8253_C ;初始化8253
MOV AL,00010110B ;工作在方式3,定時器0
OUT DX,AL
MOV DX,P8253_0
MOV AL,52 ;十進制為52,計數器初值為52
OUT DX,AL
MOV DX,P8251_C
MOV BL,3 ;8251復位
MOV AL,00
NEXT:OUT DX,AL
DEC BL
JNZ NEXT
MOV AL,01000000B
OUT DX,AL
;NOP
;NOP
MOV AL,11001110B ;設置8251工作方式異步,2個停止位,無校驗,字長8,波特率因子為16
OUT DX,AL
MOV AL,00110111B ;命令啟動(命令控制字)RTS ER 有效 接受允許 DTR有效 發送允許
OUT DX,AL
;NOP
;NOP
MOV DX,OFFSET DIS ;顯示
MOV AH,09H
INT 21H
MOV DX,P8251_C ;發送
L1: IN AL,DX
TEST AL,01H ;是否準備好(測試D0)
JZ L1
MOV AH,01H ;輸入一個字符
INT 21H
CMP AL,1BH
JZ ENDD
INC AL ;加1
MOV DX,P8251_D
OUT DX,AL
MOV DX,P8251_C ;接收
L2: IN AL,DX
TEST AL,02H ;是否準備好
JZ L2
MOV DX,P8251_D
IN AL,DX
MOV DL,AL ;接收到后輸出
MOV AH,02H
INT 21H
JMP L1 ;直到輸入ESC為止
ENDD: MOV DX,OFFSET ENDDD
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -