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

📄 595led修改.txt

📁 74HC595 的LED 程序
💻 TXT
字号:
SDATA_595  EQU  P1.0   ;串行数据输入        14  DS
        SH_CP      EQU  P1.1       ;移位时钟脉冲        11  SH_CP  上升沿有效 

                                                     ; (控制数据进入595)
        ST_CP      EQU  P1.2       ;输出锁存器控制脉冲  12  ST_CP  上升沿有效  

                                                     ;(控制在595中的数据输出到外部)


MAIN:   MOV  R0,#00H                     ;R0=00H
MAIN1:  MOV  DPTR,#TABLE          ;TABLE放到DPTR中
              MOV  A,R0                             ;A=R0=00H
              MOVC  A,@A+DPTR           ;TABLE的内容放到A中,一个一次地放,第二次再运行到这

                                                             ;里再放入第二个数据到A,下面解释以第一次放入01H为例
             CALL OUT_595                   ;调用OUT_595
             CALL  DELAY                       ;调用DELAY延时程序
             INC R0                                   ;R0加1
             CJNE  R0,#08H,MAIN1       ;R0和8比较,不相等就跳到MAIN1,R0=8时向下运行
             MOV  R0,#00H              
             JMP  MAIN1                          ;跳到MAIN1

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;输出数据
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

OUT_595:LCALL WR_595      ;调用WR_595
        CLR  ST_CP                       ;ST_CP清零,后面再置一,产生上升沿
        NOP
        NOP
        CLR  ST_CP
        NOP
        NOP
        SETB ST_CP                       ;上升沿时才会将数据送到输出锁存器
        RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;输入数据到595
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

WR_595: MOV R4,#08H           ;R4=8H 
WR_LOOP:RLC A                      ;A带Cy左移,01H=00000001B左移,变成00000010B,Cy=0
             MOV SDATA_595,C     ;SDATA_595=Cy=0
             CLR SH_CP                ;SH_CP清零,后面再置一,产生上升沿
             NOP
             NOP
             SETB SH_CP               ;产生上升沿,发生移位
             DJNZ R4,WR_LOOP     ;R4减一不等与零,则转移到WR_LOOP,否则向下运行
             RET                        ;返回刚才调用的位置OUT_595:LCALL WR_595,运行下一命令

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;延时
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DELAY:  MOV  R5,#5
DEL0:   MOV  R6,#64
DEL1:   MOV  R7,#128
             DJNZ  R7,$
             DJNZ  R6,DEL1
             DJNZ  R5,DEL0
             RET

TABLE:
DB  01H,02H,04H,08H,10H,20H,40H,80H,00H

;变成2进制就是
;00000001B,00000010B,00000100B,00001000B,00010000B,

;00100000B,01000000B,10000000B,000000000B

        END

⌨️ 快捷键说明

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