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

📄 h32.asm

📁 单片机程序集合
💻 ASM
字号:

;用8255控制八段数码管

; 1. 启动伟福软件界面,连接好实验仪
; 2. 8255的CS接CS0,
; 3. 8255的PORTA口的PA0~PA7接段码A~H,
; 4. 8255的PORTC口的PC0~PC5接位码G0~G5
; 5. 若程序运行正常,会在八段管上显示 "123456"

             mode  equ  082h   ; 方式0,PA,PC输出,PB输入
             PortA equ  8000h  ; Port A
             PortB equ  8001h  ; Port B
             PortC equ  8002h  ; Port C
             CAddr equ  8003h  ; 控制字地址

             org   0000h
             mov   a, #mode
             mov   dptr, #CAddr
             movx  @dptr,a     ; 输出控制字

EX_A:
             mov   b,#01H      ; 位码,显示最低位
             ;======== 显示数字"6"
             mov   dptr,#LEDMAP
             mov   a,#6
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ;======== 显示数字"5"
             mov   dptr,#LEDMAP
             mov   a,#5
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ;======== 显示数字"4"
             mov   dptr,#LEDMAP
             mov   a,#4
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ;======== 显示数字"3"
             mov   dptr,#LEDMAP
             mov   a,#3
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ;======== 显示数字"2"
             mov   dptr,#LEDMAP
             mov   a,#2
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ;======== 显示数字"1"
             mov   dptr,#LEDMAP
             mov   a,#1
             movc  a,@a+dptr   ; 取段码
             mov   dptr,#PortA

             movx  @dptr,a     ; 段码输出到PortA
             mov   dptr,#PortC
             mov   a,b
             movx  @dptr,a     ; 位码输出到PORTC
             rl    a           ; 准备显示下一位
             mov   b,a
             mov   r6,#1
             call  delay       ; 延时
             mov   a,#0
             movx  @dptr,a     ; 关闭显示

             ljmp  EX_A        ; 循环执行

delay:
             mov   r7,#0
ddd:         djnz  r7,ddd
             djnz  r6,ddd
             ret
LEDMAP:                        ; 八段管显示码
       db    3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
       db    7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
             end

⌨️ 快捷键说明

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