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

📄 静态交替闪烁.asm

📁 通过单片机8051控制LED灯的程序
💻 ASM
字号:
  ;测试74HC595芯片
;----------------------------------
  SCK   EQU    P3.6  ;--595的--SCK-时钟----11-
  RCK   EQU    P3.5  ;--595的--RCK--锁存时钟-12-
  SI    EQU    P3.7  ;--595的数据脚-- I/O --14-
;----------------------------------
;----------------------------------
          ORG         00H
          JMP         ST
;----------------------------------
          ORG         0BH
          JMP         SHINE
;----------------------------------
;----------------------------------
SHINE:    
        MOV         TH0,#07EH		;1MS、定时器赋初值
        MOV         TL0,#18H

	MOV	DPTR,#TB0
	RETI
;	CPL	2FH.1
;	JB	2FH.1,SS1
;	MOV	DPTR,#TB1
;	RETI
;SS1:	MOV	DPTR,#TB2
;	RETI

;----------------------------
TC:      MOV        50H,#0FFH;延时一段时间0FAH
H2:      DJNZ       50H,H2
         RET
;----------------------------
TB:      MOV        51H,#03FH ;延时一段时间2*0FAH
H3:      CALL       TC
         DJNZ       51H,H3
         RET
;----------------------------
;----------------------------------
SCKK:    ;---SCK-时钟---
          CLR         SCK  ;时钟程序
          SETB        SCK  ;时钟高时有效,取数
          RET
;----------------------------------
RCKK:     ;---RCK--锁存--时钟---
          CLR         RCK  ;锁存时钟程序
          SETB        RCK  ;时钟高时有效,数据锁存
          RET
;----------------------------------
TT595:    CPL         A
          RRC         A
          MOV         2AH.0,C
          RRC         A
          MOV         2AH.1,C
          RRC         A
          MOV         2AH.5,C
          RRC         A
          MOV         2AH.7,C
          RRC         A
          MOV         2AH.6,C
          RRC         A
          MOV         2AH.4,C
          RRC         A
          MOV         2AH.2,C
          RRC         A
          MOV         2AH.3,C
          ;---
          ;----595--传数据--
          MOV         A,2AH
          MOV         R7,#08H
B595:     RRC         A
          MOV         SI,C
          CALL        SCKK
          DJNZ        R7,B595
          RET
;----------------------------------
TT595L:				;给595送一行数据,初值R2指示一行的首地址偏移
	MOV	A,#6
	MOV	R6,#6		;计数循环次数
	ADD	A,R2
	MOV	R2,A		;找到这一行的最后一个数据,因为移位给595是最先移最右边的数据
YY2:    DEC         R2
        MOV         A,R2         ;15行
        MOVC        A,@A+DPTR
        CALL        TT595        
	DJNZ        R6,YY2
	RET
;----------------------------------
;字模取模方式:横向8点左高位
;输出格式的数据排列次序为:从上到下从左到右
;----------------------------------

TB0:	;圣诞树(交替闪烁者),3ab
          DB      0x00,0x00,    0x00,0x00,    0x00,0x3F
          DB      0x00,0x00,    0x00,0x00,    0x0F,0xFF
          DB      0x00,0x00,    0x00,0x03,    0xFF,0xFF
          DB      0x00,0x00,    0x00,0xFF,    0xFF,0xFF
          DB      0x00,0x00,    0x3F,0xFF,    0xFF,0xFF
          DB      0x00,0x0F,    0xFF,0xFF,    0xFF,0xFF
          DB      0x03,0xFF,    0xFF,0xFF,    0xFF,0xFF
          DB      0xFF,0xFF,    0xFF,0xFF,    0xFF,0xFF
          DB      0xFF,0xFF,    0xFF,0xFF,    0xFF,0xFF
          DB      0x03,0xFF,    0xFF,0xFF,    0xFF,0xFF
          DB      0x00,0x0F,    0xFF,0xFF,    0xFF,0xFF
          DB      0x00,0x00,    0x3F,0xFF,    0xFF,0xFF
          DB      0x00,0x00,    0x00,0xFF,    0xFF,0xFF
          DB      0x00,0x00,    0x00,0x03,    0xFF,0xFF
          DB      0x00,0x00,    0x00,0x00,    0x0F,0xFF
          DB      0x00,0x00,    0x00,0x00,    0x00,0x3F
TB1:	;圣诞树(交替闪烁者),3b
          DB      0x00,0x00,    0x00,0x00,    0x00,0x3F
          DB      0x00,0x00,    0x00,0x00,    0x0F,0xBF
          DB      0x00,0x00,    0x00,0x03,    0xEF,0x1F
          DB      0x00,0x00,    0x00,0xFF,    0xC7,0xBF
          DB      0x00,0x00,    0x37,0xDE,    0xEF,0xFD
          DB      0x00,0x0F,    0x63,0x8B,    0xFB,0xEF
          DB      0x03,0xEE,    0x37,0xD1,    0xFF,0xC7
          DB      0xFF,0xC7,    0x7E,0xFB,    0xFF,0x6F
          DB      0xFE,0xEF,    0xDF,0xFF,    0xBD,0xFF
          DB      0x03,0xFD,    0xFB,0xED,    0xF8,0xFF
          DB      0x00,0x0F,    0xF1,0xB8,    0xED,0xDF
          DB      0x00,0x00,    0x3B,0x1D,    0xC7,0x8F
          DB      0x00,0x00,    0x00,0xBF,    0x6F,0xDD
          DB      0x00,0x00,    0x00,0x03,    0xFF,0xF7
          DB      0x00,0x00,    0x00,0x00,    0x0F,0xE3
          DB      0x00,0x00,    0x00,0x00,    0x00,0x37
TB2:	;圣诞树(交替闪烁者),3a
          DB      0x00,0x00,    0x00,0x00,    0x00,0x3F
          DB      0x00,0x00,    0x00,0x00,    0x0F,0xFF
          DB      0x00,0x00,    0x00,0x03,    0xFF,0xBF
          DB      0x00,0x00,    0x00,0xFE,    0xEF,0xFD
          DB      0x00,0x00,    0x3F,0xFC,    0x7B,0xF8
          DB      0x00,0x0F,    0xF7,0xDE,    0xF1,0xFD
          DB      0x03,0xFF,    0x7E,0xFB,    0xFB,0x6F
          DB      0xFE,0xEF,    0xDC,0x7F,    0xBE,0x3F
          DB      0xFC,0x7D,    0x8E,0xEF,    0x1F,0x7F
          DB      0x02,0xF8,    0xDF,0xC7,    0xBD,0xFF
          DB      0x00,0x0D,    0xFB,0xED,    0xFF,0xFF
          DB      0x00,0x00,    0x3F,0xBF,    0x6F,0xDD
          DB      0x00,0x00,    0x00,0xFE,    0x3E,0xF8
          DB      0x00,0x00,    0x00,0x03,    0x7C,0x7D
          DB      0x00,0x00,    0x00,0x00,    0x0E,0xF7
          DB      0x00,0x00,    0x00,0x00,    0x00,0x3F

;----------------------------------
;----------------------------------
;显示闪烁画面,入口参数:MOV  DPTR,#TB2
SDISP:				
        MOV         P0,#0FFH
        MOV         P2,#0FFH
        CLR         P3.6   	;清时钟
        CLR         P3.5   	;清锁存时钟
MZZ0:	
;----------------------------
        CLR         P2.7	;15行
	MOV	    R2,#0
	CALL	TT595L
        CALL        RCKK	;--595-RCK--锁存--时钟--显示--
        SETB        P2.7
;----------------------------
 	CLR         P0.0        ;0行
	MOV	    R2,#6
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.0
;-------------------------------
	CLR         P0.1	;1行
	MOV	    R2,#12
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.1
;--------------------------------
	CLR         P0.2	;2行
	MOV	    R2,#18
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
	SETB        P0.2
;----------------------------
        CLR         P0.3	;3行
	MOV	    R2,#24
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.3
;----------------------------
        CLR         P0.4	;4行
	MOV	    R2,#30
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.4
;-----------------------------
        CLR         P0.5	;5行
	MOV	    R2,#36
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.5
;-----------------------------
        CLR         P0.6	;9行
	MOV	    R2,#42
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.6
;-----------------------------
        CLR         P0.7	;7行
	MOV	    R2,#48
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P0.7
;-----------------------------
	CLR         P2.0        ;开一行;8行
	MOV	    R2,#54
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.0        ;关上一行
;-----------------------------
        CLR         P2.1	;10行
	MOV	    R2,#60
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.1
;-----------------------------
        CLR         P2.2
	MOV	    R2,#66
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.2
;----------------------------
        CLR         P2.3
	MOV	    R2,#72
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.3
;----------------------------
        CLR         P2.4
	MOV	    R2,#78
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.4
;--------------------------------
        CLR         P2.5
	MOV	    R2,#84
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.5
;-------------------------------
        CLR         P2.6
	MOV	    R2,#90
	CALL	TT595L
        CALL        RCKK  		;--595-RCK--锁存--时钟--显示--
        SETB        P2.6
;----------------------
	RET

;----------------------------------
;----------------------------------
ST:

	  MOV         SP,#30H
          MOV         P0,#0FFH
          MOV         P1,#0FFH
          MOV         P2,#0FFH
 
;----------------------------------
          MOV         R2,#00H  ;
          MOV         R3,#00H  ;
;----------------------------------
	  SETB       EA   	;--开总中断   IE.7=1
          SETB       ET0        ;-- 定时器T0--控制位  IE.1=1  IE=#82H
          MOV        TMOD,#11H  ;-- 定时器T0--T1--方式1
          MOV        TL0,#0FCH  ;-- 定时器T0-1MS-初值
          MOV        TH0,#018H  ;-- 定时器T0-1MS-初值
;---------------------------------
	  SETB	     TR0
LL0:
	  MOV	50H,#80    
LL1:	  MOV	     DPTR,#TB1
	  CALL	     SDISP
	  DJNZ	50H,LL1
	  
	  MOV	50H,#80
LL2:	  MOV	     DPTR,#TB2
	  CALL	     SDISP
	  DJNZ	50H,LL2

	  JMP	LL0
;----------------------------------
          END

⌨️ 快捷键说明

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