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

📄 p3026y.asm

📁 这也是中东地区的一种格式
💻 ASM
字号:
;*************************   
;THIS PROGRAM IS FOR
;IR 4432
;56 KEY SYSTEM
;4432 CODE SYSTEM
;*************************
;SYSTEM REGISTER DEFINE
;*************************
IEX	EQU	00H	;interrupt enable register
IRQ	EQU	01H	;interrupt require flag
TM0	EQU	02H	;Timer0 mode register(Prescaler)
PORTA	EQU	08H	;i/o port a
PORTB	EQU	09H	;i/o port b
PORTC	EQU	0AH	;i/o port c
TBR	EQU	0EH	;table branch register
PAOUT	EQU	16H	;set porta to be output port
PBOUT	EQU	17H	;set portb to be output port
PCOUT	EQU	18H	;set portc to be output port
WDT	EQU	1EH
;*************************
;DATA MEMORY TABLE DEFINE
;*************************
CN		EQU	20H	;cycle variable register 
COUNT		EQU	21H	;counter
H_COUNT         EQU     22H     ;high 4-bit keynumber
KEYCOUNT	EQU	23H	;key-press count 
KEYNUMBER	EQU	24H	;key-press number
H_KEYNUMBER	EQU	25H	;high 4-bit key number
L_SENT		EQU	26H	;low 4-bit key code
H_SENT		EQU	27H	;high 4-bit key code
L_SYSKEY        EQU     28H     ;low 4-bit systme code 
H_SYSKEY 	EQU	29H	;high 4-bit system code
SENTCODE	EQU	2AH	;ready sent code to LED
BOOT_FLAG	EQU	2BH	;sent flag of bootcode 
PARM		EQU	2CH	;delay cycle count
CT0		EQU	2DH
CT1		EQU	2EH
CT2		EQU	2FH
FAMA_FLAG	EQU	30H	;"LIAN XU FA MA" FLAG
TEMP            EQU     31H
L_SENT2         EQU     32H
H_SENT2         EQU     33H
L_SYSKEY2       EQU     34H
H_SYSKEY2       EQU     35H
UN              EQU     36H
TH              EQU      37H
TT              EQU      38H
CLOCK_COUNT     EQU     39H
L_SYSKEY1       EQU     3AH
DD              EQU     3BH
;*******************************
ORG     00H 
LDI     L_SYSKEY1,1100B
LDI     L_SYSKEY2,0000B
LDI     DD,01H 
JMP	START
NOP
NOP
NOP
JMP	IQPBC
;*******************************
IQPBC
LDI	IEX,00H		;INTERRUPT ENABLE 0
LDI	IRQ,00H		;INTERRUPT REQUEST 0
RTNI
;*******************************
;PORTA,3 PULSE OUT
;*******************************
CLOCK
	LDI	PORTA,1000B
	NOP
	NOP
	NOP
	LDI	WDT,1000B
	NOP
	NOP
	NOP
        NOP
        NOP
        LDI	PORTA,0000B
        LDI     CLOCK_COUNT,7
        SBIM    CLOCK_COUNT,1
        BNZ     $-1
        RTNI                            ;EXE    10+18=28US
******************************
CLOCK1	
	LDI	PORTA,0000B
	NOP
        NOP
        NOP
	LDI	WDT,1000B
        LDI     CLOCK_COUNT,10
        SBIM    CLOCK_COUNT,1
        BNZ     $-1
        RTNI                            ;EXE    28US
;********************************
CLOCK2
	LDI	PORTA,0000B
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
        RTNI                            ;EXE    10US
;********************************
;SCAN PB,PC
SCANKEY
;********************************
SCANPB1
	LDA	PORTB,00H		;0
	BA0	SCANPB2
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPB2
	ADIM	COUNT,01H		;1
	LDA	PORTB,00H
	BA1	SCANPB3
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPB3 
	ADIM	COUNT,01H		;2
	LDA	PORTB,00H
	BA2	SCANPB4	
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPB4 
	ADIM	COUNT,01H		;3
	LDA	PORTB,00H
	BA3	SCANPC1
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPC1 
	ADIM 	COUNT,01H		;4
	LDA	PORTC,00H
	BA0	SCANPC2
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPC2 
	ADIM	COUNT,01H		;5
	LDA	PORTC,00H
	BA1	SCANPC3
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPC3 
	ADIM	COUNT,01H		;6
	LDA	PORTC,00H
	BA2	SCANPC4
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
SCANPC4 
	ADIM	COUNT,01H		;7
	LDA	PORTC,00H
	BA3	S_RTN
	ADIM	KEYCOUNT,01H
	LDA	COUNT,00H
	STA	KEYNUMBER,00H
	LDA	H_COUNT,00H
	STA	H_KEYNUMBER,00H
S_RTN	
	ADIM	COUNT,01H
	BC	$+2
	JMP	$+2
	ADIM	H_COUNT,01H
	RTNI
;*****************************
DOUBLEKEY
        LDI     KEYCOUNT,00H
        SBI     H_KEYNUMBER,02H
        BNZ     SETUP
        LDA     KEYNUMBER,00H
        STA     TEMP,00H
        SBI     KEYNUMBER,08H
        BNC     DBL3
DBL1
        LDI     PAOUT,0100B     ;PORTA(2) OUTPUT
        LDI     PORTA,0011B     ;SCAN PORTA.2
        CALL    SCANKEY         ;
        SBI     KEYCOUNT,01H    ; "17" $ "1"
        BNZ     DBL2            ; PORTA(0) $ PORTA(2)
        SBIM    TEMP,08H
        SUB     KEYNUMBER,00H
        BNZ     SETUP   
        JMP     READY_FM
DBL2
        LDI     PAOUT,0010B     ;PORTA(1) OUTPUT
        LDI     PORTA,0101B     ;SCAN PORTA.1
        CALL    SCANKEY         ;
        SBI     KEYCOUNT,01H    ; "17" $ "18"
        BNZ     SETUP           ; PORTA(0) $ PORTA(1)
        LDA     TEMP,00H
        SUB     KEYNUMBER,00H
        BNZ     SETUP   
        ADIM    H_KEYNUMBER,01H
        SBIM    KEYNUMBER,08H
        JMP     READY_FM
DBL3
        LDI     PAOUT,0100B     ;PORTA(2) OUTPUT
        LDI     PORTA,0011B     ;SCAN PORTA.2
        CALL    SCANKEY         ;
        SBI     KEYCOUNT,01H    ; "18" $ "1"
        BNZ     SETUP           ; PORTA(1) $ PORTA(2)
        LDA     TEMP,00H
        SUB     KEYNUMBER,00H
        BNZ     SETUP
        ADIM    KEYNUMBER,08H
        JMP     READY_FM
;*****************************
START
   LDI     FAMA_FLAG,00H
SETUP
   LDI     TM0,0010B               ; (128:1)*7US MODE
   LDI	   TBR,00H			; TABLE BRANCH 0
   LDI     PAOUT,0000B             ; PORTA INPUT
   LDI	PBOUT,00H		; PORTB INPUT
   LDI	PCOUT,00H		; PORTC INPUT
   LDI	KEYCOUNT,00H
   LDI	KEYNUMBER,00H
   LDI	H_KEYNUMBER,00H
   LDI  L_SYSKEY,00H
   LDI	COUNT,00H
   LDI	H_COUNT,01H
   LDI	CN,00H    
   LDI  UN,00H
   LDI  PARM,08H
   CALL DELAY2
   LDI  PARM,02H
   CALL DELAY
   CALL DELAY4
   CALL DELAY4
   CALL DELAY4
   CALL DELAY4
   CALL DELAY8
   CALL DELAY8
   CALL DELAY8
   CALL DELAY8
;*****************************
;SCAN PRESS INITIAL SETUP
;*****************************

TEST0
	LDI	PORTA,0111B		; SCAN GROUND
	CALL	SCANKEY
    SBI	KEYCOUNT,01H
	BAZ	$+3
	BC	START
    JMP  TEST1
SBI  KEYNUMBER,02H
BAZ  $+4
SBI  KEYNUMBER,03H
BAZ  $+4
JMP  READY_FM 
LDI     TT,08H
JMP     $+2
LDI     TT,09H
    LDI     PAOUT,0100B             ;PORTA(2) OUTPUT
    LDI	    PORTA,0011B		; SCAN PORTA.2
LDA	    PORTC,00H 
BA3     READY_FM 
LDI     H_KEYNUMBER,04H
LDA     TT
STA     KEYNUMBER
JMP     READY_FM
TEST1	
        LDI     PAOUT,0100B             ;PORTA(2) OUTPUT
        LDI	PORTA,0011B		; SCAN PORTA.2
	CALL	SCANKEY
TEST2	
        LDI     PAOUT,0010B             ;PORTA(1) OUTPUT        LDI	PORTA,0101B		; SCAN PORTA.1
	CALL	SCANKEY
TEST3	
        LDI     PAOUT,0001B     ;PORTA(0) OUTPUT
        LDI  	PORTA,0110B		; SCAN PORTA.0
        CALL  	SCANKEY
 ;******************************
MAIN
SBI    KEYCOUNT,02H
BAZ    DOUBLEKEY 
     SBI 	KEYCOUNT,01H
     BAZ 	READY_FM
     LDA 	KEYCOUNT,00H 
     BNZ 	START
     JMP 	NOKEY
;******************************
READY_FM
   LDA	H_KEYNUMBER,00H
   STA	TBR,00H 
   LDA	KEYNUMBER,00H
   CALL 	0300H
   STA	L_SENT,00H
   LDA	TBR,00H
   STA     H_SENT,00H              ; EXE   14US
   SBI     H_SENT,0EH
   BAZ     START
   JMP      FA01
FA51 
   EORIM     L_SYSKEY1,0100B     STA       L_SYSKEY 
   LDI       H_SYSKEY,101B
   JMP       FAMA80
FA00
   EORIM    L_SYSKEY2,0000B
   STA      L_SYSKEY
   LDI      H_SYSKEY,0000B
   JMP    FAMA80
FA01
   EORIM  L_SYSKEY1,0100B
   STA    L_SYSKEY 
   LDI    H_SYSKEY,0000B
   JMP    FAMA80
*******************************
FAMA80
    LDI     PORTA,00H
    LDI     PAOUT,1000B
    CALL    BOOT_MA
    LDA     L_SYSKEY 
    STA     SENTCODE
    CALL    SENT_BIT
    LDA     H_SYSKEY         ;HIGH SYSTEM CODE
    STA     SENTCODE
    CALL    SB10
    LDA     H_SENT,00H              ;LOW CODE
    STA     SENTCODE        
    CALL    SB20              
    LDA     L_SENT,00H              ;HIGH CODE
    STA     SENTCODE
    CALL    SENT_BIT
    JMP     SETUP
;*******************************
;4 TIMES SENT 1 BIT AFTER SHIFT 
;********************************
SENT_BIT
    LDA     SENTCODE,00H     
    BA3     SB11
    CALL    FA_CODE0
    JMP     SB10
SB11
    CALL    FA_CODE1
SB10
    LDA     SENTCODE,00H
    BA2     SB21
    CALL    FA_CODE0
    JMP     SB20
SB21
    CALL    FA_CODE1
SB20
    LDA     SENTCODE,00H
    BA1     SB31
    CALL    FA_CODE0    JMP     SB30
SB31
    CALL    FA_CODE1
SB30
    LDA     SENTCODE,00H
    BA0     SB41    CALL    FA_CODE0
    RTNI
SB41
    CALL    FA_CODE1
    RTNI
;********************************	
;BOOT CODE (3010)
;********************************
BOOT_MA                               ;SENT BOOT CODE
        LDI     CN,3
        CALL    CLOCK
        CALL	    CLOCK			;----
	    CALL	    CLOCK			;
	    CALL	    CLOCK			;
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
        CALL    CLOCK                   ;
        CALL    CLOCK                   ; 808US
	    CALL	    CLOCK	 		;
	    CALL	    CLOCK	 		;
 	    SBIM 	CN,01H
        BNZ     $-10
        CALL    CLOCK
        CALL    CLOCK
        RTNI
;********************************
;SENT CODE WHEN IS "1"
;****************************
FA_CODE1        ;LOW 876US HIGH 808US
        LDI     CN,14
        CALL    CLOCK1                  ; 29*28US
        CALL    CLOCK1                  ; =840US
	    CALL	    CLOCK1			;-----
        NOP
        SBIM	CN,01H
        BNZ     $-4
        CALL    CLOCK2
        CALL    CLOCK2
        CALL    CLOCK2
        LDI     CN,3
        CALL    CLOCK
        CALL 	CLOCK			;----
	    CALL 	CLOCK			;
	    CALL	    CLOCK			;
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
        CALL    CLOCK                   ;32*27US
        CALL    CLOCK                   ; =808US
	    CALL 	CLOCK	 		;
	    CALL  	CLOCK	 		;----
	    SBIM 	CN,01H
        BNZ     $-10
        CALL    CLOCK
        CALL    CLOCK
        CALL    CLOCK
        LDI     PORTA,1000B
        RTNI
;****************************
;SENT CODE WHEN IS "0" 
;****************************
FA_CODE0        ;HIGH 808US LOW 876US
         LDI     CN,3
        CALL    CLOCK
        CALL	    CLOCK			;----
	    CALL	    CLOCK			;
	    CALL	    CLOCK			;
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
	    CALL	    CLOCK			;	
        CALL    CLOCK                   ;
        CALL    CLOCK                   ; 808US
	    CALL	    CLOCK	 		;
	    CALL	    CLOCK	 		;
 	    SBIM 	CN,01H
        BNZ     $-10
        CALL    CLOCK
        CALL    CLOCK
        CALL    CLOCK
        LDI     CN,14
        CALL    CLOCK1                  ; 29*28US
        CALL    CLOCK1                  ; =840US
	    CALL	    CLOCK1			;-----
        NOP
        SBIM	CN,01H
        BNZ     $-4
        CALL    CLOCK2
        CALL    CLOCK2
        CALL    CLOCK2
        RTNI
;***************************
NOKEY
LDI	WDT,1000B		;CLEAR WDT
	LDI	PBOUT,00H
	LDI	PCOUT,00H
	LDI	PAOUT,0FH
	LDI	PORTA,00H
	LDI	IEX,0001B
	LDI	IRQ,00H
        STOP
	NOP
	JMP	START
;****************************
;"YAN SHI"
;****************************
DELAY
SBIM   PARM,01H
BC     $+2
RTNI
LDI     CT2,09H
LDI     CT1,0DH
LDI     CT0,0EH
SBIM 	CT0,01H
BC      $-1
SBIM	CT1,01H
BC      $-4
SBIM	CT2,01H
BC      $-7
JMP     DELAY           ;EXE 6.24MS        
;****************************
DELAY1
SBIM	PARM,01H
BC	$+2
RTNI
LDI     CT2,0FH
LDI     CT1,0FH                         
LDI	CT0,0FH
LDI     WDT,1000B
SBIM	CT0,01H
BC      $-2
SBIM	CT1,01H
BC      $-5
SBIM	CT2,01H
BC      $-8
JMP     DELAY1          ;EXE 13.1MS          
;****************************
DELAY2
SBIM 	PARM,01H
BC	$+2
RTNI
LDI     CT2,0FH
LDI     CT1,0FH                         
LDI	     CT0,0FH
SBIM	 CT0,01H
BC      $-1
LDI     WDT,1000B
NOP
SBIM	CT1,01H
BC      $-6
SBIM	CT2,01H
BC      $-9
JMP     DELAY2          ;EXE 10MS     
;**************************************
DELAY3
LDI    CT2,0FH
LDI    CT1,0FH
LDI    CT0,0FH
LDI    WDT,1000B
SBIM   CT0,01H
BC     $-2
SBIM   CT1,01H
BC     $-5
SBIM   CT2,01H
NOP
NOP
NOP
NOP
NOP
NOP
BC       $-14
RTNI        ;EXE 10MS     
;*****************************
DELAY4
    LDI     CT1,0AH
    LDI     CT2,0FH
    NOP
    NOP
    NOP
    NOP
    SBIM    CT2,01H
    BNZ     $-5
    SBIM    CT1,01H
    BNZ     $-8
    LDI     CT1,05H
    SBIM    CT1,01H
    BNZ     $-1
RTNI                  ;(6*16+2)*10+2+12=1000|¨?s
DELAY8
      LDI     CT1,0AH
      NOP       NOP
      NOP
      SBIM     CT1,01H
      BNZ      $-4     
      LDI     CT1,0AH
      NOP       NOP
      NOP
      SBIM     CT1,01H
      BNZ      $-4      
      RTNI
;****************************
;KEY NUMBER DEFINE TABLE
;****************************
ORG	0300H
	TJMP
        ORG     0310H 
        RTNW    02H,04H
        RTNW    02H,03H         ;1F     -01-
        RTNW    01H,0BH         ;10     -81-
        RTNW    01H,0AH         ;11     -FF-
        RTNW    01H,05H         ;12     -81-
        RTNW    01H,04H         ;13     -FF-
        RTNW    01H,09H         ;14     -81-
        RTNW    01H,08H         ;15     -81-
        RTNW    00H,09H
        RTNW    00H,00H
        RTNW    00H,0BH         ;18     -01-
        RTNW    00H,0AH         ;19     -FF-
        RTNW    03H,0BH
        RTNW    01H,01H
        RTNW    01H,00H
        RTNW    0EH,0BH
ORG	0320H 
        RTNW    00H,01H         ;1A     -81-
        RTNW    00H,02H         ;1B     -FF-
        RTNW    00H,03H
        RTNW    00H,04H        		RTNW    00H,05H         ;2F     -01-		
        RTNW    00H,06H         ;20     -01-
        RTNW    00H,07H         ;21     -01-
        RTNW    00H,08H
        RTNW    02H,06H
        RTNW    00H,0EH
        RTNW    00H,0DH         ;24     -01-
        RTNW    00H,0CH
        RTNW    02H,05H
        RTNW    00H,0FH
        RTNW    01H,0EH
        RTNW    3,8
ORG 0330H 
        RTNW    01H,03H         ;25     -01-
        RTNW    01H,02H         ;28     -01-
        RTNW    01H,07H
        RTNW    01H,06H
        RTNW    01H,01H         ;29     -FF-
        RTNW    02H,00H         ;2F     -01-		
        RTNW    02H,01H         ;20     -01-
        RTNW    01H,00H         ;21     -01-
        RTNW    02H,09H         ;22     -01-
        RTNW    02H,0CH
        RTNW    02H,0BH
        RTNW    03H,0EH
        RTNW    2,14
        RTNW    2,10
        RTNW    3,5
        RTNW    3,15
ORG 0340H
        RTNW    02H,0DH         ;25     -01-
        RTNW    02H,01H         ;28     -01-
        RTNW    02H,00H
        RTNW    03H,0CH
        RTNW    03H,07H         ;29     -FF-
        RTNW    03H,06H         ;2F     -01-		
        RTNW    03H,02H         ;20     -01-
        RTNW    03H,04H         ;21     -01-
        RTNW    01H,0DH         ;22     -01-
        RTNW    01H,0CH
;************************************
END

⌨️ 快捷键说明

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