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

📄 nokia4.asm

📁 数据创送的又一种方法
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*************************   
;THIS PROGRAM IS FOR
;KC-24 (HEN QIGUAI)
;32 KEYS SYSTEM
;ACTION CORPORATION
;*************************
;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	;continue to send code flag
TEMP        EQU 31H
CM0         EQU 32H
CM1         EQU 33H
CM2         EQU 34H
CM3         EQU 35H
L_SENT1     EQU 36H
H_SENT1     EQU 37H
CM4         EQU 38H
LHW         EQU 39H
CM5         EQU 3AH
CM6         EQU 3BH
FAMA_FLAG1  EQU 3CH
CM7         EQU 3DH
;*******************************
    ORG 00H 
	JMP	START
	NOP
	NOP
	NOP
	JMP	IQPBC
;*******************************
IQPBC
	LDI	IEX,00H		;INTERRUPT ENABLE 0
	LDI	IRQ,00H		;INTERRUPT REQUEST 0
    RTNI;*******************************
;PORTA,3 PULSE OUTPUT
;*******************************
CLOCK
	LDI	PORTA,1000B  ;cell "1" (38KHz)
	NOP              ;"1"=10us & "0"=14us+ next call
	NOP              ;and LDI instructions=16us
	NOP
	LDI	WDT,1000B
	NOP
	NOP
	NOP
	NOP
    NOP
    LDI	PORTA,0000B
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	RTNI				 ;appr. 26US
;********************************
CLOCK1	
	LDI	PORTA,0000B  ;cell "0" (38KHz)
	NOP              ;"0"=14us+ next call 
	NOP              ;and LDI instructions=26us
	NOP
	LDI	WDT,1000B
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	RTNI				 ;appr.26US
;******************************************
CLOCK2
	LDI	PORTA,1000B  ;buffer for code "0"
	NOP              ;"0"=8us+ next call and LDI instructions=10us
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
        NOP
    NOP
     RTNI              ;appr. 10US
;********************************
CLOCK3
    LDI	PORTA,0000B  ;buffer for code "0"
	NOP              ;"0"=8us+ next call and LDI instructions=10us
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
        NOP
        NOP 
        RTNI              ;appr. 10US
;********************************
;SCAN EVERY BIT OF 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
;*************************************
START
        LDI     FAMA_FLAG,00H    ;"0"--not continuous send,"1"-continuous sen
        LDI     FAMA_FLAG1,00H
SETUP
        LDI     TM0,0010B        ; (128:1)*7ms 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	    COUNT,00H
	    LDI	    H_COUNT,01H
	    LDI	    CN,00H
;*****************************
;SCAN KEYS & INITIAL SETUP
;*****************************
TEST0
	LDI	PORTA,0111B		;scan ground column
	CALL	SCANKEY         ;K25-K32 keys
	SBI	KEYCOUNT,01H    
	BAZ	READY_FM        ;valid then send code
	BC	START
TEST1	
    LDI PAOUT,0100B     ;porta.2 bit output
    LDI	PORTA,0011B		;scan porta.2 bit
	CALL	 SCANKEY        ;K17-K24 keys
TEST2	
    LDI PAOUT,0010B     ;porta.1 bit output
    LDI	PORTA,0101B		;scan porta.1 bit
	CALL	 SCANKEY        ;K9-K16 keys
TEST3	
    LDI  PAOUT,0001B    ;porta.0 bit output
    LDI	PORTA,0110B		;scan porta.0 bit
	CALL	 SCANKEY        ;K1-K8 keys
;******************************
MAIN
	SBI	KEYCOUNT,01H    ;single valid key
	BAZ	READY_FM
    	LDA	KEYCOUNT,00H
	BNZ	START           ;more than three keys 
	JMP	NOKEY           ;no keys put
;******************************
READY_FM
       SBI    KEYNUMBER,0CH
       BAZ    KEYC
       SBI    CM5,01H
       BNZ    FAMA1
       JMP    FAMA2
KEYC
       SBI    FAMA_FLAG1,01H
       BAZ    SETUP
       LDI    FAMA_FLAG1,01H 
       SBI    H_KEYNUMBER,01H
       BNZ    $+7       
       LDA    CM5,00H
       BA1    $+3
       LDI    CM5,02H
       JMP    SETUP
       LDI    CM5,00H
       JMP    SETUP
       LDA    CM5,00H
       BA0    $+3
       LDI    CM5,01H
       JMP    SETUP
       LDI    CM5,00H
       JMP    SETUP
;*******************************
FAMA1
        LDA   H_KEYNUMBER,00H
        STA   TBR,00H
        LDA   KEYNUMBER,00H
        CALL  0300H
        STA   L_SENT,00H
        LDA   TBR,00H
        STA   H_SENT,00H
        SBI   H_SENT,0FH
        BAZ   SETUP
        LDA   CM5,00H
        BA1   $+4
        LDI   H_SYSKEY,04H
        LDI   L_SYSKEY,0AH
        JMP   FAMA11
        LDI   H_SYSKEY,00H
        LDI   L_SYSKEY,0CH
        SBI   H_SENT,07H
        BNZ   $+4
        LDI   H_SENT,02H
        LDI   L_SENT,07H
        JMP   FAMA11
        SBI   H_SENT,08H
        BAZ   SETUP
        SBI   H_KEYNUMBER,02H
        BNZ   FAMA11
        SBI   KEYNUMBER,0EH
        BNZ   FAMA11
        JMP   SETUP
FAMA11
        LDI   PORTA,00H
        LDI   PAOUT,1000B
        SBI   FAMA_FLAG,00H
        BNZ   $+2
        CALL  JIESHUMA
        CALL  FA_CODE11
        CALL  DELAY4
        CALL  DELAY4
        CALL  DELAY7
        CALL  DELAY7
        CALL  DELAY7
        CALL  DELAY7
        CALL  FA_CODE11
        LDA   L_SENT,00H
        STA   SENTCODE,00H
        CALL  SEND_BIT
        LDA   H_SENT,00H
        STA   SENTCODE,00H
        CALL  SEND_BIT
        LDA   L_SYSKEY,00H
        STA   SENTCODE,00H
        CALL  SEND_BIT
        LDA   H_SYSKEY,00H
        STA   SENTCODE,00H
        CALL  SEND_BIT
        LDI   COUNT,0AH
        LDI   CN,09H
        CALL  DELAY4
        SBIM  CN,01H
        BNZ   $-2
        SBIM  COUNT,01H
        BNZ   $-5
        LDI   COUNT,0AH
        LDI   CN,0AH
        NOP 
        NOP
        SBIM  CN,01H
        BNZ   $-3
        SBIM  COUNT,01H
        BNZ   $-6
        LDI   FAMA_FLAG,01H
        JMP   SETUP
;********************************8
JIESHUMA
        CALL  FA_CODE11
        CALL  DELAY4
        CALL  DELAY4
        CALL  DELAY7
        CALL  DELAY7
        CALL  DELAY7
        CALL  DELAY7
        CALL  FA_CODE11
        CALL  FA_CODE01
        LDI   CM7,0FH
        CALL  FA_CODE11
        SBIM  CM7,01H
        BNZ   $-2
        LDI   COUNT,07H
        CALL  DELAY4

⌨️ 快捷键说明

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