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

📄 keyboard.asm

📁 一个键盘模拟器的源代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ret
turn_off_gbk:
        ldi   ZH,high(key_table_gbk)
        ldi   ZL,low(key_table_gbk)
        adiw  ZL,3
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ld   temp,Z+
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ld   temp,Z+
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ld   temp,Z
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ld   temp,-Z
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ld   temp,-Z
        lpm
        mov   key_value,R0
        rcall send_key_to_pc
        ldi temp1,1
        rcall delay_mS
        ret
test_eeprom:
        clr   eeprom_addrh
        clr   eeprom_addrl
        ldi   counter1,30
test_eeprom_01:
        rcall read_eeprom
        out UDR,eeprom_data
        sbis  UCSRA,UDRE
        rjmp $-2
        inc eeprom_addrl
        dec   counter1
        brne    test_eeprom_01
        clr counter1
        clr eeprom_addrl
        clr eeprom_data
        ret
/* ****************** eeprom ************************ */
turn_on_gbk:
        push  eeprom_addrl
        push  eeprom_addrh
        ldi   eeprom_addrl,EEP_GBK_ON           ;item9.0
        clr   eeprom_addrh
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_on_gbk01
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc
turn_on_gbk01:
        inc   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_on_gbk02
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc
turn_on_gbk02:
        inc   eeprom_addrl
        rcall read_eeprom
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc

       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
        dec   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_on_gbk03
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
        dec   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_on_gbk03
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
turn_on_gbk03:
        pop   eeprom_addrh
        pop   eeprom_addrl
        ret
turn_off_gbk:
        push  eeprom_addrl
        push  eeprom_addrh
        ldi   eeprom_addrl,EEP_GBK_OFF
        clr   eeprom_addrh
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_off_gbk01
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc
turn_off_gbk01:
        inc   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_off_gbk02
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc
turn_off_gbk02:
        inc   eeprom_addrl
        rcall read_eeprom
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        mov   key_value,eeprom_data
        rcall send_key_to_pc

       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
        dec   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_off_gbk03
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
        dec   eeprom_addrl
        rcall read_eeprom
        cp    eeprom_data,zero_register
        breq  turn_off_gbk03
        push  eeprom_data
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        ldi temp1,0xf0
        mov   key_value,temp1
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
        pop   key_value
;        mov   key_value,eeprom_data
        rcall send_key_to_pc
       mov  temp1,  key_delay
        rcall delay_mS
        wdr
turn_off_gbk03:
        pop   eeprom_addrh
        pop   eeprom_addrl
        ret

reader_version:
	db	0x01,0x30,0x20,0x06,0x07,0x17	

/* ********************* vect defined by cmd ********************* */
/* ************************************************* */
;receive_start_delay=(1.5*ETU-24)/4+1
delay_table:
	db	13,21	;106K	encode 0-------13,12
	db	6,19	;212K	encode 1
	db	5,7	;424K	encode 2
	db	1,1	;847K	encode 3
key_table_hex:
        db      0x45,0x16,0x1e,0x26,0x25,0x2e,0x36,0x3d,0x3e,0x46 ;0~9
        db      0x1c,0x32,0x21,0x23,0x24,0x2b   ;a,b,c,d,e,f
        db      0x29,0x5a                       ;space(0x10) &enter(0x11)
key_table_func:
        db      0x00,0x14,0x2d                 ;read card
        db      0x00,0x00,0x05               ;name
        db      0x00,0x00,0x06                   ;sex
        db      0x00,0x00,0x04                 ;nation
        db      0x00,0x00,0x0c                 ;id
        db      0x00,0x00,0x03                 ;address
        db      0x00,0x00,0x00
        db      0x00,0x00,0x00
key_table_gbk:
        db      0x14,0x12,0x46                     ;ctrl+SHIFT+9
        db      0x14,0x12,0x45                     ;ctrl+SHIFT+0
key_table_ascii:
        db      'a',0x1c
        db      'b',0x32
        db      'c',0x21
        db      'd',0x23
        db      'e',0x24
        db      'f',0x2b
        db      'g',0x34
        db      'h',0x33
        db      'i',0x43
        db      'j',0x3b
        db      'k',0x42
        db      'l',0x4b
        db      'm',0x3a
        db      'n',0x31
        db      'o',0x44
        db      'p',0x4d
        db      'q',0x15
        db      'r',0x2d
        db      's',0x1b
        db      't',0x2c
        db      'u',0x3c
        db      'v',0x2a
        db      'w',0x1d
        db      'x',0x22
        db      'y',0x35
        db      'z',0x1a

        db      'A',0x1c
        db      'B',0x32
        db      'C',0x21
        db      'D',0x23
        db      'E',0x24
        db      'F',0x2b
        db      'G',0x34
        db      'H',0x33
        db      'I',0x43
        db      'J',0x3b
        db      'K',0x42
        db      'L',0x4b
        db      'M',0x3a
        db      'N',0x31
        db      'O',0x44
        db      'P',0x4d
        db      'Q',0x15
        db      'R',0x2d
        db      'S',0x1b
        db      'T',0x2c
        db      'U',0x3c
        db      'V',0x2a
        db      'W',0x1d
        db      'X',0x22
        db      'Y',0x35
        db      'Z',0x1a

        db      '0',0x45
        db      '1',0x16
        db      '2',0x1e
        db      '3',0x26
        db      '4',0x25
        db      '5',0x2e
        db      '6',0x36
        db      '7',0x3d
        db      '8',0x3e
        db      '9',0x46

        db      '.',0x49
        db      '-',0x4e
        db      ' ',0x29
unicode_table:
        db      0x20,0x00,0x20,0x00,0x49,0x6c,0x20,0x00
        db      0x20,0x00,0x99,0x84,0xe4,0x53,0x20,0x00
        db      0x20,0x00,0x20,0x00,0xde,0x56,0x20,0x00
        db      0x20,0x00,0x20,0x00,0xcf,0x85,0x20,0x00

        db      0x20,0x00,0xf4,0x7e,0x3e,0x54,0x14,0x5c
        db      0x20,0x00,0x20,0x00,0xd7,0x82,0x20,0x00
        db      0x20,0x00,0x20,0x00,0x5d,0x5f,0x20,0x00
        db      0x20,0x00,0xee,0x58,0x20,0x00,0x20,0x00

        db      0x20,0x00,0x03,0x5e,0x9d,0x4f,0x20,0x00
        db      0x20,0x00,0x1d,0x67,0x9c,0x9c,0x20,0x00
        db      0x20,0x00,0x20,0x00,0xe1,0x6e,0x20,0x00
        db      0x20,0x00,0x20,0x00,0x97,0x4f,0x20,0x00

        db      0x20,0x00,0x20,0x00,0x76,0x74,0x20,0x00
        db      0x20,0x00,0x20,0x00,0x7d,0x76,0x20,0x00
        db      0x20,0x00,0x1f,0x57,0xb6,0x5b,0x20,0x00
        db      0x20,0x00,0xc8,0x54,0x3c,0x5c,0x20,0x00

        db      0x20,0x00,0xc8,0x54,0x28,0x84,0x4b,0x51
        db      0x20,0x00,0x20,0x00,0xa3,0x50,0x20,0x00
        db      0x20,0x00,0x20,0x00,0xce,0x9e,0x20,0x00
        db      0x20,0x00,0x88,0x50,0xf3,0x50,0x20,0x00

        db      0x20,0x00,0x20,0x00,0x64,0x4f,0x20,0x00
        db      0x20,0x00,0x20,0x00,0x72,0x75,0x20,0x00
        db      0x20,0x00,0xd8,0x9a,0x71,0x5c,0x20,0x00
        db      0x20,0x00,0xc9,0x62,0x5c,0x79,0x20,0x00

        db      0x20,0x00,0x20,0x00,0x34,0x6c,0x20,0x00
        db      0x20,0x00,0x1c,0x4e,0x61,0x4e,0x20,0x00
        db      0x20,0x00,0xb3,0x7e,0x7f,0x89,0x20,0x00
        db      0x20,0x00,0x6f,0x66,0x87,0x98,0x20,0x00

        db      0xef,0x67,0x14,0x5c,0x4b,0x51,0x5c,0x5b
        db      0x20,0x00,0x20,0x00,0x1f,0x57,0x20,0x00
        db      0x20,0x00,0xbe,0x8f,0xa1,0x65,0x14,0x5c
        db      0x20,0x00,0xeb,0x4e,0x6c,0x4f,0x20,0x00

        db      0x20,0x00,0x20,0x00,0x8c,0x7f,0x20,0x00
        db      0x20,0x00,0x03,0x5e,0x17,0x67,0x20,0x00
        db      0x20,0x00,0x92,0x64,0xc9,0x62,0x20,0x00
        db      0x20,0x00,0xdb,0x6b,0x57,0x53,0x20,0x00

        db      0x20,0x00,0xe1,0x4e,0x6c,0x4f,0x20,0x00
        db      0x20,0x00,0x21,0x95,0x2f,0x4f,0x20,0x00
        db      0x20,0x00,0x3f,0x96,0x0c,0x66,0x20,0x00
        db      0x20,0x00,0x6e,0x66,0x73,0x7c,0x20,0x00

        db      0x20,0x00,0x54,0x58,0x09,0x54,0x4b,0x51
        db      0x20,0x00,0x20,0x00,0x12,0x60,0x20,0x00
        db      0x4c,0x4e,0x5c,0x5b,0x2b,0x52,0x4b,0x51
        db      0x20,0x00,0xc4,0x4f,0x57,0x7f,0xaf,0x65

        db      0x20,0x00,0x02,0x91,0x29,0x6e,0x4b,0x51
        db      0x20,0x00,0xb7,0x5f,0x34,0x66,0x20,0x00
        db      0x20,0x00,0xdd,0x4f,0x89,0x5b,0x20,0x00
        db      0x20,0x00,0xd5,0x88,0xfa,0x56,0x20,0x00

        db      0x20,0x00,0x20,0x00,0xac,0x4e,0x20,0x00
        db      0x20,0x00,0x54,0x58,0x54,0x58,0x14,0x5c
        db      0x20,0x00,0xec,0x72,0x99,0x9f,0x20,0x00
        db      0x20,0x00,0x02,0x91,0x26,0x4f,0x25,0x66

        db      0x20,0x00,0x6b,0x8d,0xf2,0x54,0x20,0x00
        db      0x20,0x00,0xe8,0x95,0xf4,0x5d,0x20,0x00
        db      0x20,0x00,0xde,0x73,0xf4,0x5d,0x20,0x00
        db      0x20,0x00,0xfa,0x57,0xfa,0x8b,0x20,0x00

⌨️ 快捷键说明

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