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

📄 max7221cs1.asm

📁 自己做的单片机Proteus仿真实例
💻 ASM
字号:
 	DIN  BIT P3.0  	 ;数据输入端
	CLK  BIT P3.2	 ;时钟输入端
	LOAD BIT P3.1	 ;数据锁存控制端
      	ORG   0000H
      	LJMP  START
     	ORG  001BH
      	LJMP SERVE
       	ORG   0030H
  START: CLR   00H
	MOV 	SP,#60H
        LCALL 	PROCESS	;调用初始化MAX7221子程序
        MOV 	50H,	#09H   
        MOV 	51H,	#08H
	MOV 	52H,	#07H
       	MOV 	53H,	#06H
	MOV 	54H,	#05H   
        MOV 	55H,	#04H
	MOV 	56H,	#03H
       	MOV 	57H,	#02H	
	LCALL 	DISPLAY	;调用显示
	LCALL       DELAY
	
	MOV 	50H,	#0AH   
        MOV 	51H,	#0AH

	MOV 	TMOD ,	#10H
	MOV 	TH1,	#0D8H 
	MOV 	TL1, 	#0F0H
	SETB 	TR1
	MOV  	60H,	#90H
	MOV  	40H,	#23H
	MOV  	41H,	#59H
      	MOV  	42H,	#50H
	MOV  	IE,	#10001000B
START1: JNB  	00H,	$
        CLR   	00H
        LCALL	FEN
       	LCALL  	DISPLAY		
	SJMP   	START1
  		   


PROCESS:MOV A,#0CH    ;进入停机工作方式
 	MOV B,#00H
	LCALL W_7221
	
	MOV A,#0BH    ;扫描位数
        MOV  B,#07H
        LCALL W_7221

	MOV A,#09H    ;译码方式
	MOV B,#0FFH
	LCALL W_7221

       	MOV A,#0AH    ;显示亮度
       	MOV B,#09H
	 LCALL W_7221
	 
	 MOV A,#0FH
	 MOV B,#01H
	 LCALL W_7221

	 MOV A,#0CH     ;进入启动工作方式
	 MOV B,#01H
	 LCALL W_7221

	 
 	 RET

 
 W_7221: CLR  LOAD	;设置LOAD为
	 LCALL SD_7221	;发送位数据的高位
	 MOV A,B	;发送位数据的低位
	 LCALL SD_7221
	 
	 NOP
	 NOP
	 SETB LOAD	;锁存位数据
         RET

SD_7221: MOV R1,#08H	;发送位数据
C_SD:	 NOP
	 NOP
         	CLR  CLK
	 RLC  A		;发位数据的最高位
	 MOV  DIN,C	;传待发位到发送口
	 NOP
	 NOP
	 SETB CLK	;设置上升沿,发送数据
         	DJNZ R1,C_SD	;直到数据发送完,跳出
	 RET

;MAX7221 显示子程序

DISPLAY:  MOV R0,#50H    	;设置缓冲区首址
	 MOV R2,#1	;准备启用MAX7221中的第号寄存器
	 MOV R3,#8	;共要发送个数据
C_DISP:  	 MOV A,@R0	;取出缓冲区数据显示
	 MOV B,A
	 MOV A,R2
	 LCALL W_7221	;发送第一个待显示的数据
	 INC R0		;继续取下一个待显数据
	 INC R2		;启用下一个MAX7221中的寄存器
	 DJNZ R3,C_DISP 	;三个待显数据发送完跳出
	 RET
DELAY:	 MOV R4,	#2
   L2:	 MOV R5,	#20
   L1:	 MOV R6,  #0FFH
      	 DJNZ R6,	$
      	 DJNZ R5,	L1
       	 DJNZ R4,	L2
      	 RET


SERVE: 	PUSH	PSW
      	 PUSH  	ACC
	MOV 	TH1,#0D8H 
	MOV 	TL1, #0F0H
     	DJNZ 	60H,  RETURN
	SETB  	00H
	MOV   	60H, #20
	MOV   	A,      #01H
	ADD  	 A,     42H
     	DA  	A  
    	MOV 	 42H,A
	CJNE  	A,	#60H,  RETURN
	MOV 	42H,	#0	
	MOV  	A,	#01H
     	ADD  	A,	41H
	DA  	A
	MOV  	41H,A
    	CJNE  	A,	#60H,  RETURN
    	MOV  	41H,#0
	MOV  	A,#01H		
     	ADD   	A,40H
	DA   	A
     	MOV  	40H,A
	CJNE A,	#24H,   RETURN
     	MOV  	40H,     #0
RETURN:
	POP  	ACC
     	POP  	PSW
    	RETI
FEN:  
	MOV   A,	40H
	ANL   A,	#0F0H
	SWAP  	A	
	MOV   52H,A
	MOV   A,	40H
	ANL   A,	#0FH
	MOV   53H,A
	MOV   A,	41H
	ANL   A,	#0F0H
	SWAP  	A	
     	MOV  54H,A
     	MOV  A,	41H
	ANL  A,	#0FH
	MOV  55H,A
	MOV  A,	42H
	ANL  A,	#0F0H
	SWAP  	A
	MOV 56H,	A
    	MOV   A,	42H
	ANL  A,	#0FH
   	MOV  57H,A
	RET

      	 END 
      











 

⌨️ 快捷键说明

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