8088单板机串口驱动代码测试

1.8088单板机的串口接口电路如下

 

2.驱动代码

;-----------------------------------------------------------------------------------
;8088单板机串口发送示例程序
;------------------------------------------------------------------------------------
led_port   equ   800h
;------------------------------------------------------------------------------------

  ;org  2000h      ;程序将由监控bios下载到内存RAM的地址(0000:2000)
  ORG 100H
start:
      ;------------------------------------------------------
	  ;init part 
	  ;------------------------------------------------------
	  ; mov ax,0
	  ; mov ds,ax
	  ; mov ss,ax
	  ; mov sp,1fffh
st001:	  
      nop
	  ;-----------------------------------------------------
	  ;点亮系统板上的LED
	  ;-----------------------------------------------------
	  ;MOV DX,800H   ;800H是板子上8个LED的端口地址号
	  mov dx,led_port
      MOV AL,0aaH   ;一亮一灭间隔点亮
      OUT DX,AL
	  
	  call DELAY
	  
	  ;MOV DX,800H   ;800H是板子上8个LED的端口地址号
	  mov dx,led_port
      MOV AL,00H   ;一亮一灭间隔点亮
      OUT DX,AL
	  
	  call DELAY
	  
	  mov ah,'$'
	  call SEND
	  
	 ; lea di,STR1   ;nasm编译器不认
	  mov di, STR1
	  CALL STR_OUT
	  ;mov di, STR2
	  ;CALL STR_OUT
	  
	  ;mov al,01010101b
	  ;mov al,0f0h;
      ;out 25H,al
	  ;hlt
	  jmp st001
	  jmp start
	 
;------------------------------------------------------------	 
;	  DELAY  PROC NEAR   
;------------------------------------------------------------
    ;push
DELAY:
    PUSH CX
    PUSH BX
    NOP
    NOP   
    mov bx,10
 del1:
    mov cx,5882
 del2:
    loop del2
    dec bx
    jnz del1
    ;pop cx
    ;pop bx  

    POP BX
    POP CX
    
    RET
	
	
;-------------------------------------------
;pc16550  uart  send by AH
;-------------------------------------------

LSTAT     EQU 1F5H
DAT_165   EQU 1F0H

SEND:   ;   PROC  NEAR
    MOV DX,LSTAT
WAITx:
    IN AL,DX
    TEST AL,20H
    JZ  WAITx  
    
    MOV AL,AH
    MOV DX,DAT_165
    OUT DX,AL
    RET
;SEND  ENDP   

;-------------------------------------------
;串口打印字符串
;-------------------------------------------

STR_OUT :;   PROC  NEAR
        nop; LEA DI,STR1
STR_LOOP:
         ;MOV AH,BYTE PTR [DI]
		 mov ah,byte [di]
         CMP AH,'$'
         JZ STR_EXIT
         CALL SEND
         INC DI
         JMP STR_LOOP

STR_EXIT: NOP      
          RET
;STR_OUT   ENDP
   
    STR1  DB 'i8088-HELLO boy or girl!' ,13,10,'$'
    STR2  DB  0AH,0DH,'  ',0dh,0ah,'$'   	
   
   db 55h,55h,55h,55h,55h,55h  ;程序结束标志,监控bios程序,收到后自动跳转到内存0000:2000处执行
;----------------------------------------------------------------------------------------------

 3.下载运行效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iCxhust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值