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

📄 led1.asm

📁 让实验板上八个数码管循环显示0-9十个数
💻 ASM
字号:
;========================================
;实验名:  八个数码管显示
;功    能:让实验板上八个数码管循环显示0-9十个数
;硬件环境: 自制单片机实验板,
;软件环境: Windows操作系统
;使用软件:伟福 V3.20,
;          Easy 51Pro v2.0
;
;实验步骤:
;         1.打开伟福V3.20,创建一新文件
;         2.编写源代码
;         3.保存文件,文件名后缀为.asm
;         4.编译程序
;         5.打开Easy 51Pro v2.0将程序写进实验板

;程序范例

;===========预定义===================
SDA  BIT     P0.2;定义数据线引脚
SCL  BIT     P0.3;定义时钟线引脚
LED0 EQU     41H ;预定义数码管


ORG  0000H          ;主程序入口
AJMP MAIN           ;跳转到主程序
ORG  0100H          ;主程序在ROM中存放的位置
;==============主程序=====================
MAIN:
      MOV   LED0,#00H   ;赋初值
      ACALL DISPLAY     ;调用显示子程序
      ACALL DELAY_1S    ;调用延时子程序

LP2:
      INC   LED0
      ACALL DISPLAY
      ACALL DELAY_1S
      MOV A,LED0
      CJNE  A,#9, LP2
      AJMP  MAIN
;===================================
DISPLAY:
      MOV   DPTR,#TAB    ; 赋显示代码首地址
LP1:
      MOV     A,LED0     ;将LED0中的值送入A
      MOVC    A,@A+DPTR  ;将A与DPTR相加的值作为代码地址,并将该代码赋给A
      ACALL   SHIFT      ;调用移位子程序
      ACALL   SHIFT
      ACALL   SHIFT
      ACALL   SHIFT
      ACALL   SHIFT
      ACALL   SHIFT
      ACALL   SHIFT
      ACALL   SHIFT
      RET                ;子程序返回子令
;-----------------显示代码表--------------------------------------------------------------- ----
TAB: DB    11H,0D7H,32H,92H,0D4H,98H,18H,0D3H
     DB    10H,90H,50H,1CH,39H,16H,38H,78H,0FFH
;-------------------------------------------------------------------------
;================移位子程序============================
SHIFT:      push    A         ;将A中的值入栈保护
            MOV     R2,#8     ;循环8次
            CLR     C         ;清进位标志
            CLR     SCL       ;将时钟线拉底,准备发送数据
DL:
            RLC     A         ;将要发送的数据左移,发送入位C
            MOV     SDA,C     ;将C上的数据送上数据线
            SETB    SCL       ;将时钟线置高使数据线上的数据有效
            CLR     SCL       ;将时钟线拉底,准备下一次发送数据
            DJNZ    R2,DL
            POP     A         ;出栈恢复A值
            RET
;===================================================
; 子程序名: Delay_1s
; 功能描述: 延时约一秒钟
;===================================================
Delay_1s:
        MOV     R7,#0FFH;将数0FFH送给寄存器R7,确定外循环次数
LOOP7:  MOV     R6,#0FFH;将数0FFH送给寄存器R6,确定内循环次数
LOOP6:  NOP             ;空操作指令,指令执行时间为一个机械周期
        NOP
        NOP
        NOP
        NOP
        NOP
        DJNz    R6,LOOP6;循环转移指令,次数减一,不为零转移
        DJNz    R7,LOOP7;循环转移指令,次数减一,不为零转移
        RET             ;子程序返回指令
;===================================================
END                     ;汇编结束伪指令

⌨️ 快捷键说明

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