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

📄 sddp.asm

📁 pic单片机常用的汇编程序,很有用的,分成各个小模块
💻 ASM
字号:
;********************SDDP********************
;本程序实现软件模拟方式动态显示N位数字。
;入口参数:显示缓冲区首地址在SADR中,显示位数在CNT中。
;出口参数:无。
;占用资源:W,FSR,STATUS,RC3,RC4,020H,023H,028H~02BH,两重堆栈。
;说    明:1.这里采用的是共阴极数码管。
;          2.要想得到持续的显示效果,用户必须不断的调用本程序 。
;          3.显示位数应不大于8位。
;          4.显示缓冲区的数据格式为非压缩格式。

CLKBIT      EQU           4
DATBIT      EQU           3  
 
           IFNDEF         SDDP1
            #DEFINE       SDDP1
             include      "dlynms.asm"
;*************显示段码表格*****************
TABLE       ADDWF         PCL,F
            RETLW         B'00111111'       ;共阴极段码表格
            RETLW         B'00000110'
            RETLW         B'01011011'
            RETLW         B'01001111'
            RETLW         B'01100110'
            RETLW         B'01101101'
            RETLW         B'01111101'
            RETLW         B'00000111'
            RETLW         B'01111111'
            RETLW         B'01101111'
;           …………                        ;用户可在此处继续添加
SDDP        BSF           STATUS,RP0
            MOVLW         0E7H
            ANDWF         TRISC,F           ;RC3,RC4设为输出
            BCF           STATUS,RP0
            BSF           PORTC,CLKBIT      ;时钟静态电平为高
            MOVF          SADR,W
            MOVWF         FSR               ;FSR指向段码首址
            MOVLW         B'11111110'
            MOVWF         TEMP3             ;TEMP3作为位码产生器
NEXT56      MOVF          INDF,W
            CALL          TABLE             ;产生段码
            MOVWF         TEMP1             ;TEMP1作为段码送出缓冲器
;****************送出段码****************
            MOVLW         D'8'
            MOVWF         TEMP2             ;8位段码
            BSF           STATUS,C
NEXT58      RLF           TEMP1,F           ;段码左移
            BSF           PORTC,DATBIT
            BTFSS         STATUS,C      
            BCF           PORTC,DATBIT
            NOP
            NOP 
            BCF           PORTC,CLKBIT      ;发时钟脉冲
            NOP
            NOP
            BSF           PORTC,CLKBIT
            DECFSZ        TEMP2,F
            GOTO          NEXT58
;****************送出位码***********
            MOVLW         8
            MOVWF         TEMP2             ;8位位码
            BCF           STATUS,C
            MOVF          TEMP3,W
            MOVWF         TEMP4             ;TEMP4作为位码移出缓冲器            
NEXT57      BCF           STATUS,C
            RLF           TEMP4,F
            BSF           PORTC,DATBIT      
            BTFSS         STATUS,C          
            BCF           PORTC,DATBIT      ;将C送出
            NOP
            NOP
            BCF           PORTC,CLKBIT      ;发时钟脉冲
            NOP
            NOP
            BSF           PORTC,CLKBIT
            DECFSZ        TEMP2,F           ;位码送完吗?
            GOTO          NEXT57

            MOVF          CNT,W
            MOVWF         TEMP2          
            MOVLW         D'2'              ;送完一位,延时2MS
            MOVWF         SOU
            CALL          DLYNMS                    
            MOVF          TEMP2,W
            MOVWF         CNT
            DECFSZ        CNT,F             ;外部位计数器减1           
            GOTO          NEXT59
            RETURN
NEXT59      BSF           STATUS,C
            RLF           TEMP3,F
            INCF          FSR,F
            GOTO          NEXT56
           ENDIF

⌨️ 快捷键说明

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