⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5r.asm

📁 这是用于8259A的关于串口通信的程序
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;    两台PC机间RS-232串口通信  ;;;
;;;            接收程序          ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA SEGMENT
  ;COM1  EQU 3F8H-3FFH   ;PC机上自带的两个串口地址
  ;COM2  EQU 2F8H-2FFH
  IO8250TR EQU 3F8H      ;发送端数据寄存器地址
  IO8250RR EQU 3F8H      ;接受端数据寄存器地址
  IO8250DIVL EQU 3F8H    ;除数寄存器低字节地址 
  IO8250DIVH EQU 3F9H    ;除数寄存器高字节地址  
  IO8250IER EQU 3F9H     ;中断允许寄存器地址     
  IO8250IIR EQU 3FAH     ;中断识别寄存器地址    
  IO8250LCR EQU 3FBH     ;线路控制寄存器地址     
  IO8250MCR EQU 3FCH     ;MODEM控制寄存器地址 
  IO8250LSR EQU 3FDH     ;线路状态寄存器地址 
  IO8250MSR EQU 3FEH     ;MODEM状态寄存器地址             
  ERR DB 'ERROR!$'       ;提示错误信息                                                                        
DATA ENDS

STACK1 SEGMENT STACK
 DB 100 DUP(?)
STACK1 ENDS

CODE SEGMENT
   ASSUME CS:CODE,DS:DATA,SS:STACK1    
START:   MOV AX,DATA
         MOV DS,AX
         MOV AL,10000000B ;8250初始化,设DLAB=1 
         MOV DX,IO8250LCR
         OUT DX,AL
         MOV AX,30H       ;波特率2400 kb/s
         MOV DX,IO8250DIVL
         OUT DX,AL        ;写入除数低字节
         MOV AL,AH
         MOV DX,IO8250DIVH
         OUT DX,AL        ;写入除数高字节
         MOV AL,00001011B  ;8位数据,1位停止,奇校验
         MOV DX,IO8250LCR
         OUT DX,AL        ;写入线路控制寄存器  
         MOV AL,00000011B ;自检关闭,请求发送
         MOV DX,3FCH
         OUT DX,AL        ;写入MODEM控制寄存器
         MOV AL,0
         MOV DX,IO8250IER
         OUT DX,AL        ;禁止中断    
         MOV DX,IO8250RR
         IN AL,DX         ;空读一次                     
  REC:  MOV DX,IO8250LSR ;读线路状态寄存器
        IN  AL,DX
        TEST AL,00000001B  ;接收数据就绪否
        JZ  REC            ;没有的话继续查询
        TEST AL,00011110B  ;出错否
        JNZ  ERROR         ;出错的话转
        MOV  DX,IO8250RR      ;读接收数据
        IN   AL,DX 
        CMP  AL,21H      ;判断是否是字符'!'
        JZ EN            ;是的话结束接受 
        MOV DL,AL
        MOV AH,2           ;显示接受字符
        INT 21H
        JMP REC
  ERROR:MOV  DX,OFFSET ERR         ;显示‘?’
        MOV  AH,09H
        INT  21H
        JMP  REC
    EN: MOV AH,4CH
        INT 21H
CODE  ENDS
      END  START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -