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

📄 main.asm

📁 是介绍使用单片机控制数码管显示的程序,可以显示多种样式.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*****************************************************
;
;   This programme is for mobile setup Ver1.0 beta
;            The main control programe
;This programme must be run in 12MHz standard settings
;               Designer: cqmcu.com
;
;*****************************************************

;*****************************************************
;参数定义
;*****************************************************

digital_bit             equ     08h                     ;显示位
date_data               equ     0c0h                    ;时钟数据首地址
keys_byte               equ     0dh                     ;按键字节

;*****************************************************
;主程序
;*****************************************************

                        org	0000h
                        sjmp	start

                        org     0013h
                        ljmp    keys_int

                        org	0030h
start:                  mov     p0,#0
                        mov     p1,#0fh
                        mov     p2,#0
                        mov     p3,#0ffh

                        mov	sp,#70h                     ;堆栈地址
                        mov     r0,#0feh                    ;Clear the ram
                        mov     r1,#2
                        clr     a
main_clear0:            mov     @r1,a
                        inc     r1
                        djnz    r0,main_clear0

                        mov     09h,#76h
                        mov     0ah,#54h
                        mov     0bh,#32h
                        mov     0ch,#10h

                        mov     digital_bit,#1
                        setb    ex1
                        setb    ea
                        lcall   beep1
main_wait:              lcall   digital
                        mov     a,keys_byte
                        cjne    a,#0,keysmanagement
                        sjmp    main_wait

keysmanagement:         lcall   keys_management
                        mov     keys_byte,#0
                        sjmp    main_wait

;*****************************************************
;子程序文件载入
;*****************************************************

beep                    equ     p1.5

;*****************************************************
;短鸣一声
;*****************************************************

beep1:                  mov     1fh,#04h
                        setb    beep
beep1_1:                lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        djnz    1fh,beep1_1
                        clr     beep
                        ret

;*****************************************************
;长鸣一声
;*****************************************************

beep2:                  mov     1fh,#1eh
                        setb    beep
beep2_1:                lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        djnz    1fh,beep2_1
                        clr     beep
                        ret

;*****************************************************
;短鸣两声
;*****************************************************

beep3:                  mov     1fh,#04h
                        setb    beep
beep3_1:                lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        djnz    1fh,beep3_1
                        clr     beep
                        mov     1fh,#04h
beep3_2:                lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        djnz    1fh,beep3_2
                        setb    beep
                        mov     1fh,#04h
beep3_3:                lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        lcall   digital
                        djnz    1fh,beep3_3
                        clr     beep
                        ret
;*****************************************************

digital_byte            equ     09h                     ;显存首址,连续4字节为显存

;*****************************************************
;数码管显示
;*****************************************************

digital:	       mov     a,digital_bit
                       jb      acc.0,digital_check0
                       jb      acc.1,digital_check1
                       jb      acc.2,digital_check2
                       jb      acc.3,digital_check3
                       jb      acc.4,digital_check4
                       jb      acc.5,digital_check5
                       jb      acc.6,digital_check6
                       jb      acc.7,digital_check7
                       call    beep2
                       ret
digital_check0:        mov     r0,#digital_byte
                       mov     a,@r0
                       swap    a
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check1:        mov     r0,#digital_byte
                       mov     a,@r0
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check2:        mov     r0,#digital_byte
                       inc     r0
                       mov     a,@r0
                       swap    a
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check3:        mov     r0,#digital_byte
                       inc     r0
                       mov     a,@r0
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check4:        mov     r0,#digital_byte
                       inc     r0
                       inc     r0
                       mov     a,@r0
                       swap    a
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check5:        mov     r0,#digital_byte
                       inc     r0
                       inc     r0
                       mov     a,@r0
                       anl     a,#0fh
                       jmp     digital_display
                       ret   
digital_check6:        mov     r0,#digital_byte
                       inc     r0
                       inc     r0
                       inc     r0
                       mov     a,@r0
                       swap    a
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_check7:        mov     r0,#digital_byte
                       inc     r0
                       inc     r0
                       inc     r0
                       mov     a,@r0
                       anl     a,#0fh
                       jmp     digital_display
                       ret
digital_display:       mov     dptr,#data_tab_digital
                       movc    a,@a+dptr
                       cpl     a
                       mov     p2,#0
                       mov     p0,a
                       mov     a,digital_bit
                       mov     p2,a
                       rl      a
                       mov     digital_bit,a
                       call    time2_5ms
                       ret

;*****************************************************
;共阴数码管显示数据
;排列为:0-F, 0.-F.
;端口排列:p07   p06  p05  p04  p03  p02  p01  p00
;段排列为: d    dp    e    c    g    b    f    a
;*****************************************************

data_tab_digital:      db     0b7h,014h,0adh,09dh,01eh,09bh,0bbh,015h
                       db     0bfh,09fh,03fh,0bah,0a8h,0bch,0abh,02bh
                       db     0f7h,054h,0edh,0ddh,05eh,0dbh,0fbh,055h
                       db     0ffh,0dfh,07fh,0fah,0e8h,0fch,0ebh,06bh
;*****************************************************
;键盘中断处理程序

⌨️ 快捷键说明

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