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

📄 led1hong.asm

📁 这是我最近一段时间编的一些弹片机的小程序,上面有大量的注释,一般都会看懂
💻 ASM
字号:
org 0000h
jmp 40h
org 40h
start:
      acall shu1liu
      acall shu1Fliu
      acall shu18liu
      sjmp start
;*************************************************************************************
;子程序:shu18liu
;功能:LED0显示1,之后LED1显示2,按数码管序依次增大到LED7显示8,再按此规律重复2次
;*************************************************************************************
shu18liu:
        mov p2,#0ffh               ;清显示p2为位控制
        mov r2,#3               ;数码管显示的循环次数
        mov dptr,#table         ;dptr存放字形表的首地址
rot2:mov r0,#0               ;R0存放字形表的偏移量
    mov r1,#0feh              ;R1存放LED位选择代码
    acall disp
    djnz r2,rot2
    ret
;*****************************************************************************************
;子程序:shu1Fliu
;功能:LED0显示1,之后分别有LED1显示2,...LED7显示8,然后下次LED0显示2,依数码管序依次增大
;      如此下去,直到下次LED0显示8,...LED7显示F为止
;*****************************************************************************************
shu1Fliu:
        mov p2,#0ffh               ;清显示p2为位控制
        mov dptr,#table        ;dptr存放字形表的首地址
        mov r2,#0             ;R2存放字形表的偏移量
rot1:mov 20h,r2
     mov r0,20h               ;R0存放当前字形表的偏移量
     mov r1,#0feh              ;R1存放LED位选择代码
     acall disp
     inc r2
     cjne r2,#08h,rot1       ;为使第1个显示器只显示到8
     ret
;**************************************************************************************
;子程序:shu1liu
;功能:数码1在数码管上的流动,先在LED0显示,再在LED1显示,依次循环下去,显示到LED7,如此
;      循环2次
;**************************************************************************************
shu1liu:                ;数码1的在显示器流动
        mov p2,#0ffh               ;清显示p2为位控制
        mov r2,#3               ;数码管显示的循环次数
rot:mov r0,#0f9h           ;R0存放"1"的字形码
    mov r1,#0feh              ;R1存放LED位选择代码
disp1:
    mov p0,r0                ;将字形码由p0口输出
    mov a,r1
    mov p2,a                ;选择哪个LED有显示,即输出位选码
    acall delay1s            ;延时1s
    rl a                    ;移位,指向下一个该显示的LED
    mov r1,a
    cjne r1,#0feh,disp1
    djnz r2,rot
    ret
;***********************************************************
;子程序:delay1s
;功能:延时1s
;***********************************************************
delay1s:mov r7,#100               ;R7存放计数循环值
delay10ms:                      ;延时10ms
      mov tmod,#10h            ;T1工作在定时方式1
      mov th1,#0d8h
      mov tl1,#0f0h
      setb tr1                ;启动T1工作
again:jbc tf1,next
       sjmp again
next:  djnz r7,delay10ms
      ret
;*******************************************************************
;子程序:disp(需要使用数码转换对应字形表)
;功能:用来显示数码,并进行移位,为下个数码的显示准备
;*******************************************************************
disp:
extrance:
    mov a,r0
    movc a,@a+dptr            ;查字形码表table
    mov p0,a                ;将字形码由p0口输出
    mov a,r1
    mov p2,a                ;选择哪个LED有显示,即输出位选码
    acall delay1s             ;延时1s
    inc r0                  ;增1为了指向下一个字形码
    rl a                    ;移位,指向下一个该显示的LED
    mov r1,a
    cjne r1,#0feh,extrance
    ret
table:db 0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,84h;1~F字形码
end



⌨️ 快捷键说明

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