欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微机接口实验一:七段数码管循环动态显示00~99

程序员文章站 2022-03-15 13:55:49
...

一、实验目的

掌握数码管显示数字的原理。

二、实验原理和内容

微机接口实验一:七段数码管循环动态显示00~99

三、编程提示

微机接口实验一:七段数码管循环动态显示00~99

四、电路接线图

微机接口实验一:七段数码管循环动态显示00~99

五、程序设计流程图

微机接口实验一:七段数码管循环动态显示00~99

六、一些说明

  1. 将01h送到C口后,再将要显示的数据送到A口,显示的是个位。
  2. 将02h送到C口后,再将要显示的数据送到A口,显示的是十位。
  3. 注意判断进位。

七、程序源代码

stack segment stack
    db 200 dup(0)
stack ends

data segment
    APORT equ 288h
    CPORT equ 28ah
    CTRL equ 28bh
    num db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh  ;0~9
data ends

code segment
    assume cs:code,ds:data,ss:stack

    delay MACRO
      local loop_delay
      local flag
      push cx
      push bx
      xor bx, bx
      flag:mov cx, 0ffffh
      loop_delay:loop loop_delay
      inc bx
      cmp bx, 10
      jnz flag
      pop bx
      pop cx
   ENDM

main: mov ax,data          
      mov ds,ax
      mov ax, stack
      mov ss, ax
      mov dx, CTRL
      mov al, 80h  ;写入控制字
      out dx, al
      xor si, si
      xor di, di
loop1:cmp si, 10  ;检查个位是否已经增加到10
      jz carry          ;进位
      mov dx, CPORT
      mov al, 02h
      out dx, al
      mov dx, APORT
      mov al, num[di]   ;显示十位
      out dx, al
      delay
      mov dx, CPORT
      mov al, 01h
      out dx, al
      mov dx, APORT
      mov al, num[si]   ;显示个位
      out dx, al
      inc si           ;个位+1
      delay
      jmp loop1  ;还没有进位个位继续增加
carry:xor si, si   ;进位后将个位清零
      cmp di, 10  ;十位增加到10就从00重新开始
      jz exit
      mov dx, CPORT
      mov al, 02h
      out dx, al
      mov dx, APORT
      mov al, num[di]
      out dx, al
      inc di   ;十位+1
      delay
      jmp loop1
 exit:xor di, di
      jmp loop1
      mov ah,4ch
      int 21h
code ends
     end main