マイクロコンピューターインターフェース実験1:7セグメントデジタルチューブダイナミックディスプレイ00〜99

1.実験の目的

数字のデジタル表示の原則をマスターします。

2.実験原理と内容

ここに写真の説明を挿入

3つのプログラミングのヒント

ここに写真の説明を挿入

4、回路配線図

ここに写真の説明を挿入

5、プログラム設計フローチャート

ここに写真の説明を挿入

六、いくつかの説明

  1. 01hがポートCに送信された後、表示されるデータがポートAに送信され、1桁が表示されます。
  2. 02hがポートCに送信された後、表示されるデータがポートAに送信され、ディスプレイに10の位が表示されます。
  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

おすすめ

転載: blog.csdn.net/Cyril_KI/article/details/110677530