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

📄 ledkey.asm

📁 数码管驱动芯片PT6961与51单片机的接口程序
💻 ASM
字号:
      LOWBIT  EQU       00
     HIGHBIT  EQU       00
			              
              ORG       0000H
      LJMP MAIN
              ORG       30H
     
       MAIN:  MOV       R7,#00
              MOV       R6,#00
              CLR P2.5
              MOV       A,#42H      ;送读数据的控制字
              LCALL SEND
			  lcall delay
			 ; SETB P2.5
			 ; LCALL DELAY
			 ; CLR P2.5
			  LCALL GETKEY	;读低8位	 
			  
         LB:                        ;CMP R6,#00H
		       ;JZ HB
              MOV       ACC,R6
			   ANL A,#1BH
			   CJNE A,#00H,LB0	;若R6=0则跳转至HB
              JMP       HB
        LB0:                        ; MOV ACC,R6
	              ;ANL A,#1BH
			             CJNE A,#01H,LB1
              JMP       SET1
				LB1:	 CJNE A,#02H,LB2
              JMP       SET2
				LB2:	 CJNE A,#08H,LB3
              JMP       SET3
			  	LB3:	 CJNE A,#10H,LB4
              JMP       SET4
			  
       SET1:  MOV       LOWBIT,#01
              MOV       P0,#0FFH
			   clr p0.0
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET2:  MOV       LOWBIT,#02
              MOV       P0,#0FFH
			  clr p0.1
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET3:  MOV       LOWBIT,#03
              MOV       P0,#0FFH
			   clr p0.2
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET4:  MOV       LOWBIT,#04
              MOV       P0,#0FFH
			   clr p0.3
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
        LB4:  MOV       LOWBIT,#00
              JMP       NEXT

		HB:	 lcall delay
		   LCALL GETKEY	;读高8位 
              MOV       ACC,R6
		      ANL A,#1BH
              MOV       R6,ACC
       		  CJNE R6,#00H,HB0
              JMP       SET0        ;SET0说明没有按键
        HB0:
			             CJNE R6,#01H,LB11
              JMP       SET5
				LB11:	 CJNE R6,#02H,LB22
              JMP       SET6
				LB22:	 CJNE R6,#08H,LB33
              JMP       SET7
			  	LB33:	 CJNE R6,#10H,SET0
              JMP       SET8
			   
       SET5:  MOV       HIGHBIT,#05
              MOV       P0,#0FFH
			   clr p0.4
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET6:  MOV       HIGHBIT,#06
              MOV       P0,#0FFH
			   clr p0.5
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET7:  MOV       HIGHBIT,#07
              MOV       P0,#0FFH
			   clr p0.6
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET8:  MOV       HIGHBIT,#08
              MOV       P0,#0FFH
			   clr p0.7
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
       SET0:                        ;MOV LOWBIT,#00
			  ;MOV HIGHBIT,#00
              MOV       P0,#0FFH
			   clr p2.0
              SETB      P2.0
              JMP       NEXT
		
       NEXT:  SETB      P2.5
                LCALL DELAY
			    LJMP MAIN






     GETKEY:  MOV       R5,#8       ;把值放在R6里
              MOV       R6,#00
              MOV       ACC,R6
					  
            S1:CLR P2.4
              LCALL DELAY
              MOV       C,P2.2
              JC        SET11       ;CY=1就跳转
              JMP       SET00
      SET00:
		          ANL A,#7FH;首位置0
              SETB      P2.4

	 			LCALL DELAY	
              MOV       R6,ACC
				 	 RR A	 ;右移一位
				 
			DJNZ R5, S1
              RET
     
      SET11:
			ORL A,#80H ;首位置1
  				  
              SETB      P2.4
	 			LCALL DELAY	
				 
              MOV       R6,ACC
RR A ;右移一位
			DJNZ R5,S1
              RET
				
       SEND:  MOV       R6,#8       ;循环8次
              MOV       B,#1H
             D2:   CLR P2.4	 ;CLK置0
                   LCALL DELAY
              PUSH      ACC
	               ANL A,B
              JZ        SET000
     SET111:  SETB      P2.3        ;DIN置1
              SETB      P2.4        ;CLK置1
	              LCALL DELAY									             
;	
              MOV       A,B
	         	 RL 		A
              MOV       B,A
              POP       ACC
	         	 DJNZ 		R6,D2
              RET

   		SET000: CLR P2.3		;DIN<=0
              SETB      P2.4        ;;;clk<=1
	  			LCALL DELAY
	  
              MOV       A,B
            	 RL 		A
              MOV       B,A
              POP       ACC
	 			 DJNZ 		R6,D2	;r6<=r6-1,若r6=0则jmp d2 
              RET
      DELAY:  MOV       R3,#250
     			 d22:djnz r3,d22
              RET
              END

			
     
     


⌨️ 快捷键说明

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