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

📄 16c550.asm

📁 16c550异步串口通信芯片程序
💻 ASM
字号:
NAME TL16C550
RHR XDATA   0F300H;                     //接收数据缓冲区
THR XDATA   0F300H;                     //发送数据缓冲区
IER XDATA   0F301H;                     //中断控制寄存器
FCR XDATA   0F302H;                     //FIFO控制寄存器
ISR XDATA   0F302H;                     //
LCR XDATA   0F303H;                     //串行口控制寄存器
MCR XDATA   0F304H;                     //MODEM控制寄存器
LSR XDATA   0F305H;                     //串行口状态寄存器
DLL XDATA   0F300H;                     //波特率除数锁存器低位
DLM XDATA   0F301H;                     //波特率除数锁存器高位
PUBLIC	START_8250
EXTRN	CODE(ALARM)
TL8250_CODE	SEGMENT		CODE
RSEG	TL8250_CODE	
;自发自收测试,需要短接CZ2的2、3脚
START_8250:
      ACALL	INIT8250
      MOV	R5,#6			;发送6个数
      MOV	DPTR,#TDATA_TAB		;发送的数在表中
SEND_NEXT:      
      CLR	A
      MOVC	A,@A+DPTR
      INC	DPTR
      ACALL	SEND_BYTE
    
      JC	WARNING1
      ACALL	RECEIVE_B
      JC	WARNING1
      CJNE	A,02H,WARNING1
      DJNZ	R5,SEND_NEXT
      CLR	C 			;正确返回0
      RET
WARNING1:
      SETB	C			;错误返回1
      RET    
TDATA_TAB:
      DB 55H,0AAH,01H,80H,0FFH,00H  
;发送一个字节子程序,发送A中的数,失败置1CY        
SEND_BYTE:
      PUSH	DPL
      PUSH	DPH
      MOV	R2,A			;SAVE A
      ACALL	READ_LSR
      MOV	R6,#0
      MOV	R7,#10
REP11:ACALL	READ_LSR
      JB	ACC.5,OUTPORT1
      DJNZ	R6,REP11
      DJNZ	R7,REP11
      SETB	C
      SJMP	EXIT8250
OUTPORT1:   
      MOV	A,R2		
      MOV	DPTR,#RHR
      MOVX	 @DPTR,A
EXIT8250:      
      POP	DPH
      POP	DPL
      CLR	C
      RET
;***********      
;接收一个字节子程序,接收字节在A中,接收失败置1CY      	     
RECEIVE_B:  
      PUSH	DPL
      PUSH	DPH    
      MOV	R6,#0
      MOV	R7,#10
REP12:
      MOV	DPTR,#LSR
      MOVX	A,@DPTR
      JB	ACC.0,INPORT1
      DJNZ	R6,REP12
      DJNZ	R7,REP12
      SETB	C
      POP	DPH
      POP	DPL
      RET
INPORT1:  
      MOV	DPTR,#RHR
      MOVX	A,@DPTR
      CLR	C
      POP	DPH
      POP	DPL
      RET
;***********
READ_LSR:
      MOV	DPTR,#LSR
      MOVX	A,@DPTR
      RET
INIT8250:
      MOV	DPTR,#ISR
      MOV	A,#06H
      MOVX	 @DPTR,A
      MOV	DPTR,#LCR
      MOV	A,#83H		;通讯控制寄存器,使DLAB=1,允许访问波特率因子寄存器
      MOVX	 @DPTR,A
      MOV	DPTR,#DLL	
      MOV	A,#010		;//除数低位寄存器,波特率设为19200
      MOVX	 @DPTR,A
      MOV	DPTR,#DLM
      MOV	A,#00H		;//00H送高字节寄存器,见16C550手册
      MOVX	 @DPTR,A
      MOV	DPTR,#LCR
      MOV	A,#1BH		;//使DLAB=0,不允许访问波特率因子寄存器,数据格式为8数据位,1停止位,无奇偶验校	
      MOVX	 @DPTR,A
      RET
  
      END

⌨️ 快捷键说明

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