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

📄 总程序.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*******************************
;
;
;*******************************
             ORG        0000H
             SJMP       START
             ORG        0003H
             LJMP       FQINT0
             ORG        000BH
	     LJMP       T0INT
	     ORG        0030H

CS           BIT        P3.4
SCK          BIT        P3.5
SI           BIT        P3.6
SO           BIT        P3.7
LED0         EQU        33H
LED1         EQU        34H
LED2         EQU        35H
LED3         EQU        36H
LED4         EQU        37H
BITNUM	     EQU	38H

START:       MOV        SP,#50H
             LCALL      CHAXUN
             CJNE       A,#0E0H,START1
             LCALL      ZIJIAN
             SJMP       START
START1:      LCALL      JIANCHULI
             SJMP       START


JIANCHULI:   MOV	IE,#82H
	     MOV	TMOD,#01H
             MOV	TH0,#0H
	     MOV	TL0,#0H
	     SETB	TR0
    	     MOV	BITNUM,#0
	     MOV	LED0,#17H
	     MOV	LED1,#17H
	     MOV	LED2,#17H
	     MOV	LED3,#17H
	     MOV        LED4,#17H
             LCALL      WUXUANQU1

K10:         MOV        R0,#LED0
       	     MOV        R3,#16h
K0:          MOV        A,R3
	     MOV        @R0,A
             LCALL      KEY
             CJNE       A,#01H,K2
             MOV        R3,#2
             INC        R0
             CJNE       R0,#38H, OK1
             MOV        R0, #33H
OK1:         SJMP       K0

K2:          CJNE       A,#02H,K3
	     INC	R3
             CJNE       R3,#18H,OK2
             MOV        R3,#0
OK2:         SJMP       K0

k3:          CJNE       A,#03H,K4
K31:         LCALL      WUJZWR
             LCALL      KEY
             CJNE       A,#03H,K32
             AJMP       K31
K32:         CJNE       A,#02H,K3END
             LCALL      WUBEEP1
             AJMP       K10
K3END:       LJMP       K4END

K4:          LCALL      WUREAD
             LCALL      WUBEEP1
             SETB       EA
K4LP:        LCALL      KEY
             CJNE       A,#03H,K41
             AJMP       K4END
K41:         CJNE       A,#04H,K4LP
             AJMP       K4
K4END:       RET

KEY: 	     LCALL	KEYIN
	     CJNE	A,#0,KE2
             SJMP       KEY
KE2:	     MOV	R5,A
	     LCALL	DELAY
             LCALL	KEYIN
             CJNE	A,#0,KE4
      	     SJMP	KEY
KE4:	     CLR	C
	     SUBB	A,R5
	     JNZ	KEY
KE6:	     LCALL	KEYIN
	     CJNE	A,#0,KE6
	     LCALL	DELAY
	     LCALL	KEYIN
	     CJNE	A,#0,KE6
	     MOV	A,R5
	     RET


ZIJIAN:      JNB        ACC.4,NEXT1
             JNB        ACC.5,ZJ1
             JNB        ACC.6,ZJ2
             JNB        ACC.7,ZJ3
             LCALL      CHAXUN
             AJMP       ZIJIAN

NEXT1:       JNB        ACC.5,ZJ4
             JNB        ACC.6,ZJ5
             LCALL      CHAXUN
             AJMP       ZIJIAN

ZJ1:         LCALL      FQMAIN
             LJMP       END1
ZJ2:         LCALL      WUJZ
             LJMP       END1

ZJ3:         LCALL      WXD
             LJMP       END1
ZJ4:         MOV        R0,#5
             LCALL      BEEP
             LJMP       END1
ZJ5:         LCALL      HFJLED
             LJMP       END1

END1:        RET

;-----------------------------------------
BEEP:        MOV        R2,#05H
DLV1:        MOV        R3,#0FAH
DLV2:        CPL        P2.3
             LCALL      D25MS
             DJNZ       R3,DLV2
             DJNZ       R2,DLV1
             MOV        R2,#04H
DLV3:        MOV        R3,#0A2H
DLV4:        CPL        P2.3
             LCALL      D5MS
             DJNZ       R3,DLV4
             DJNZ       R2,DLV3
             DJNZ       R0,BEEP
             RET
D5MS:        MOV        R7,#0EDH
LOOP:        NOP
             NOP
             DJNZ       R7,LOOP
             RET
D25MS:       MOV        R6,#0E9H
LIN:         DJNZ       R6,LIN
             RET
;***************************************
; 名称:LED 自检子程序
; 占用空间:区‘2’R0 R4 R5 R6
;***************************************
HFJLED:      PUSH       PSW
             PUSH       A
             SETB       RS1
             CLR        RS0          ;区2
             MOV        DPTR,#LEDMA
             MOV        R0,#0BH
             MOV        B,#0
HFJ_LED4:    MOV        A,B
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      LIGHT4
             LCALL      DELAYH
             INC        B
             DEC        R0
             CJNE       R0,#0,HFJ_LED4
             MOV        R0,#0BH
             MOV        B,#0
HFJ_LED3:    MOV        A,B
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      LIGHT3
             LCALL      DELAYH
             INC        B
             DEC        R0
             CJNE       R0,#0,HFJ_LED3
             MOV        R0,#0BH
             MOV        B,#0
HFJ_LED2:    MOV        A,B
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      LIGHT2
             LCALL      DELAYH
             INC        B
             DEC        R0
             CJNE       R0,#0,HFJ_LED2
             MOV        R0,#0BH
             MOV        B,#0
HFJ_LED1:    MOV        A,B
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      LIGHT1
             LCALL      DELAYH
             INC        B
             DEC        R0
             CJNE       R0,#0,HFJ_LED1
             MOV        R0,#0AH
             MOV        B,#0
             MOV        DPTR,#LEDMA1
HFJ_LED0:    MOV        A,B
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      LIGHT0
             LCALL      DELAYH
             INC        B
             DEC        R0
             CJNE       R0,#0,HFJ_LED0
             POP        A
             POP        PSW
             RET
;********************选位子程序****************************
LIGHT0:      CLR        P2.7
             CLR        P2.6
             CLR        P2.5
             RET
LIGHT1:      SETB       P2.7
             CLR        P2.6
             CLR        P2.5
             RET
LIGHT2:      CLR        P2.7
             SETB       P2.6
             CLR        P2.5
             RET
LIGHT3:      SETB       P2.7
             SETB       P2.6
             CLR        P2.5
             RET
LIGHT4:      CLR        P2.7
             CLR        P2.6
             SETB       P2.5
             RET
;***********************延时子程序*******************************
DELAYH :     MOV        R6,#07FH
DELAYH0:     MOV        R5,#08H
DELAYH1:     MOV        R4,#0FFH
DELAYH2:     DJNZ       R4,DELAYH2
             DJNZ       R5,DELAYH1
             DJNZ       R6,DELAYH0
             RET
;*********************表格******************************
LEDMA:DB  7EH,0CH,0B6H,9EH,0CCH,0DAH,0FAH,0EH,0FEH,0DEH,0FFH
LEDMA1:DB  0CH,01H,04H,08H,80H,8DH,10H,20H,40H,70H
;------------------------------------------------
;X25045自检程序
;------------------------------------------------
;功能:通过按键调用x25045的自检程序,检测EEPROM的功能
;      是否良好。
;R0=写入地址,R1=写入数据
;使用“3”区R0-R7
;------------------------------------------------
WUJZ:        PUSH       PSW
             PUSH       A
             SETB       RS1
             SETB       RS0
WUCHAXUN:    LCALL      WUKEY
WUFENZHI1:   CJNE       A,#0EH,WUFENZHI2
             MOV        R0,#0AAH
             LCALL      WURD_DT
             LCALL      WULED
             AJMP       WUCHAXUN
WUFENZHI2:   CJNE       A,#0DH,WUFENZHI3
             MOV        R0,#0AAH
             MOV        R1,#54H
             LCALL      WUWR_DT
             LCALL      WULED
             AJMP       WUCHAXUN
WUFENZHI3:   CJNE       A,#0BH,WUCHAXUN
             POP        A
             POP        PSW
             RET
;-------------------------------------------------
;写数据子程序
;功能:将数据写入X25045的EEPRO0M
;-------------------------------------------------
WUWR_DT:     LCALL      WURD_SR
             JB         ACC.0,WUWR_DT
             LCALL      WUWR_DT1
             RET
;-------------------------------------------------
;读数据子程序
;功能:将数据从X25045的EEPROM中读出
;-------------------------------------------------
WURD_DT:     LCALL      WURD_SR
             JB         ACC.0,WURD_DT
             LCALL      WURD_DT1
             RET
;-------------------------------------------------
;写一个字节子程序
;功能:将一个字节写入X25045
;A=写入数据,R2=写命令字
;-------------------------------------------------
WUWR:        MOV        R2,#08H
WUWR1:       RLC        A
             MOV        SI,C
             CLR        SCK
             SETB       SCK
             DJNZ       R2,WUWR1
             RET
;-------------------------------------------------
;读一个字节子程序
;功能:从X25045中读出一个字节
;A=读出数据,R2=读命令字
;-------------------------------------------------
WURD:        MOV        R2,#08H
WURD1:       SETB       SCK
             CLR        SCK
             MOV        C,SO
             RLC        A
             DJNZ       R2,WURD1
             RET
;-------------------------------------------------
;读状态寄存器子程序
;A=读状态寄存器命令字
;-------------------------------------------------
WURD_SR:     MOV        A,#05H
             CLR        CS
             LCALL      WUWR
             LCALL      WURD
             SETB       CS
             RET
;-------------------------------------------------
;写数据子程序
;功能:将数据写入X25045
;使用“3”区R0,R
;入口参数:R0=写入地址,R1=写入数据
;-------------------------------------------------
WUWR_DT1:    CLR        CS
             MOV        A,#06H
             LCALL      WUWR
             SETB       CS
             CLR        CS
             MOV        A,#02H
             LCALL      WUWR
             MOV        A,R0
             LCALL      WUWR
             MOV        A,R1
             LCALL      WUWR
             CLR        CS
             SETB       CS
             RET
;-------------------------------------------------
;读数据子程序
;功能:从X25045中读出数据
;使用“3”区R0,R1
;入口参数:R0=写入地址
;出口参数:R1=读出数据
;-------------------------------------------------
WURD_DT1:    LCALL      WURD_SR
             JB         ACC.0,WURD_DT1
             CLR        CS
             MOV        A,#03H
             LCALL      WUWR
             MOV        A,R0
             LCALL      WUWR
             LCALL      WURD
             MOV        R1,A
             SETB       CS
             RET
;-------------------------------------------------
;按键子程序
;功能:完成键的输入
;-------------------------------------------------
WUKEY:       MOV        P0,#0
             LCALL      SEL8
             MOV        P1,#0FFH
             MOV        A,P1
             LCALL      SEL7
             ANL        A,#0FH
WUYJAX:      CJNE       A,#0FH,WUA1
             AJMP       WUKEY
WUA1:        CJNE       A,#0EH,WUA2
             LCALL      WUBEEP1
WUA2:        CJNE       A,#0DH,WUA3
             LCALL      WUBEEP1
WUA3:        CJNE       A,#0BH,WUA4
             LCALL      WUBEEP1
WUA4:        RET

;-------------------------------------------------
;延时子程序1
;功能:完成蜂鸣器的延时,延时0。3MS
;使用“3”区R4,R5
;-------------------------------------------------
WUDELAY1:    MOV        R5,#0FFH
WUD1:        MOV        R4,#0FFH
WUD2:        NOP
             NOP
             DJNZ       R4,WUD2
             DJNZ       R5,WUD1
             RET

;-------------------------------------------------
;蜂鸣器子程序
;功能:按键提示音,按1键响一声,按2键响两声
;-------------------------------------------------
WUBEEP1:     CLR        P2.3
             LCALL      WUDELAY1
             SETB       P2.3
             RET
;-------------------------------------------------
;选通74HC245L子程序
;功能:选通74HC245L
;-------------------------------------------------

;-------------------------------------------------
;关闭74HC245L子程序
;功能:关闭74HC245L
;-------------------------------------------------

;-------------------------------------------------
;LED显示子程序
;功能:完成数字的显示
;R1=要显示数据
;-------------------------------------------------
WULED:       MOV DPTR,  #WULED1
             PUSH       PSW
             SETB       RS0
             SETB       RS1
             MOV        R4,#0FFH
WUAA1:       MOV        A,R1
             MOV        B,A
             ANL        A,#0FH
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      WUSEL5
             LCALL      WUDELAY3
             MOV        A,B
             SWAP       A
             ANL        A,#0FH
             MOVC       A,@A+DPTR
             MOV        P0,A
             LCALL      WUSEL4
             LCALL      WUDELAY3
             DJNZ       R4,WUAA1
             POP        PSW
             RET
;-------------------------------------------------
;位选子程序
;功能:选通第4位
;-------------------------------------------------
WUSEL4:      SETB P2.7
             SETB  P2.6

⌨️ 快捷键说明

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