📄 main.lis
字号:
0000 cpu LMM
.module main.c
.area lit(rom, con, rel)
0000 _FirstKeyArray::
0000 5000 .byte 'P,0
0002 00 .byte 0
0003 1928 .byte 25,40
0005 0D .byte 13
0006 0604 .byte 6,4
0008 09 .byte 9
0009 1B04 .byte 27,4
000B 08 .byte 8
000C 1D04 .byte 29,4
000E 07 .byte 7
000F A300 .byte 163,0
0011 00 .byte 0
0012 0A04 .byte 10,4
0014 0A .byte 10
0015 0904 .byte 9,4
0017 06 .byte 6
0018 0704 .byte 7,4
001A 05 .byte 5
001B 1604 .byte 22,4
001D 04 .byte 4
001E 0400 .byte 4,0
0020 00 .byte 0
0021 2C00 .byte 44,0
0023 00 .byte 0
0024 3308 .byte 51,8
0026 0F .byte 15
0027 1728 .byte 23,40
0029 0B .byte 11
002A 1504 .byte 21,4
002C 03 .byte 3
002D 0804 .byte 8,4
002F 02 .byte 2
0030 1A04 .byte 26,4
0032 01 .byte 1
0033 1428 .byte 20,40
0035 0A .byte 10
0036 4F00 .byte 'O,0
0038 00 .byte 0
0039 A500 .byte 165,0
003B 00 .byte 0
003C 0528 .byte 5,40
003E 01 .byte 1
003F 1108 .byte 17,8
0041 07 .byte 7
0042 1008 .byte 16,8
0044 06 .byte 6
0045 4C00 .byte 'L,0
0047 00 .byte 0
0048 2A00 .byte 42,0
004A 00 .byte 0
004B 0B08 .byte 11,8
004D 02 .byte 2
004E 0D08 .byte 13,8
0050 04 .byte 4
0051 0E28 .byte 14,40
0053 05 .byte 5
0054 0F28 .byte 15,40
0056 11 .byte 17
0057 2800 .byte 40,0
0059 00 .byte 0
005A 1F28 .byte 31,40
005C 10 .byte 16
005D 1C28 .byte 28,40
005F 0E .byte 14
0060 1808 .byte 24,8
0062 0C .byte 12
0063 0C28 .byte 12,40
0065 03 .byte 3
0066 1228 .byte 18,40
0068 08 .byte 8
0069 1328 .byte 19,40
006B 09 .byte 9
006C 00000000000000000000 .word 0,0,0,0,0
0076 0000 .byte 0,0
0078 .dbfile ./CSD_KeyProcess.c
0078 .dbsym e FirstKeyArray _FirstKeyArray A[120:40:3]c
0078 _ShiftKeyArray::
0078 3133 .byte 49,51
007A 2E34 .byte 46,52
007C 3437 .byte 52,55
007E 3636 .byte 54,54
0080 3720 .byte 55,32
0082 262D .byte 38,45
0084 3827 .byte 56,39
0086 3822 .byte 56,34
0088 1E .byte 30
0089 0000 .byte 0,0
008B .dbsym e ShiftKeyArray _ShiftKeyArray A[19:19]c
008B _NumKeyArray::
008B 1E1F .byte 30,31
008D 2021 .byte 32,33
008F 2223 .byte 34,35
0091 2425 .byte 36,37
0093 2627 .byte 38,39
0095 000000 .byte 0,0,0
0098 .dbsym e NumKeyArray _NumKeyArray A[13:13]c
0098 _ArrowKeyArray::
0098 52 .byte 'R
0099 000000 .byte 0,0,0
009C .dbsym e ArrowKeyArray _ArrowKeyArray A[4:4]c
.area text(rom, con, rel)
0000 .dbfile ./CSD_KeyProcess.c
0000 .dbfunc e delay_ms _delay_ms fV
0000 ; i -> X+2
0000 ; j -> X+0
0000 ; MsTimes -> X-5
0000 _delay_ms::
0000 .dbline -1
0000 10 push X
0001 4F mov X,SP
0002 3804 add SP,4
0004 .dbline 243
0004 ; //----------------------------------------------------------------------------
0004 ; // C main ( unisen Cyber Station K.B. Qwert Mode Keyboard )
0004 ; // 2007-1 ver 1.00
0004 ; // 应 增加 NumLock,ArrowLock,Shift,Ctrl四个LED灯
0004 ; //----------------------------------------------------------------------------
0004 ;
0004 ; #include <m8c.h> // part specific constants and macros
0004 ; #include <string.h>
0004 ; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
0004 ; #include "CSD_KeyProcess.c"
0004 ;
0004 ; int KB_empty_cnt;
0004 ; BYTE KB_save;
0004 ; /*
0004 ; //GPIO 操作例程,先在 Device Editer 中将其中一个IO口 命名为
0004 ; #define Beep_BIT_Enable Beep_BIT_Data_ADDR |= Beep_BIT_MASK
0004 ; #define Beep_BIT_Disable Beep_BIT_Data_ADDR &= ~Beep_BIT_MASK
0004 ; //如何判断以上IO的高低电平?
0004 ; //如何控制IO高低电平?
0004 ;
0004 ; //下面是 中断服务程序的定义方法:
0004 ; #pragma interrupt_handler timer_handler
0004 ; ...
0004 ; void timer_handler()
0004 ; {
0004 ; ...
0004 ; }
0004 ;
0004 ; //在 boot.tpl 中,将对应的中断向量表中 填写 ljmp timer_handler
0004 ; */
0004 ;
0004 ; //memcmp(RPT_DATA,USB_INTERFACE_0_OUT_RPT_DATA,8); //从 USB 得到USB HOST送来的数据
0004 ;
0004 ; BYTE abKeyboardData[8] = {0,0,0,0,0,0,0,0};
0004 ; // ^ ^
0004 ; // | |
0004 ; // ctrl Alpha
0004 ;
0004 ; //M8C_Reset;
0004 ; char KeyPressMainFlg;
0004 ;
0004 ; void main()
0004 ; {
0004 ; M8C_EnableGInt; //Enable Global Interrupts
0004 ;
0004 ; Beep_Start(); Beep_Switch(0);
0004 ;
0004 ; LED_ShiftCAP_Start(); LED_ShiftCAP_Switch(0);
0004 ;
0004 ; CSD_1_Start();//CSD 电容式键盘初始化
0004 ; CSD_1_InitializeBaselines() ; //scan all sensors first time, init baseline
0004 ; CSD_1_SetDefaultFingerThresholds() ;//设置 电容式键盘 Finger Thresholds
0004 ;
0004 ; USBFS_1_Start(0, USB_5V_OPERATION); //Start USBFS Operation using device 0
0004 ; //and with 5V operation
0004 ; while(!USBFS_1_bGetConfiguration()); //Wait for Device to enumerate 等待USB HOST取得USB描述符
0004 ; //Enumeration is completed load endpoint 1. Do not toggle the first time
0004 ; USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_NO_TOGGLE);
0004 ;
0004 ; //M8C_EnableWatchDog; //(CPU_SCR0 &= ~CPU_SCR0_PORS_MASK)
0004 ; memset( abKeyboardData,0,8 );
0004 ; KB_empty_cnt = 0; KB_save = 0; KeyPressMainFlg = 0;
0004 ; while( 1 )
0004 ; {
0004 ; memset( ScanArrayImage,0,5 );//将键盘位图清零
0004 ; KeyPressMainFlg = KeyPressMain();//扫描键盘
0004 ; while(!USBFS_1_bGetEPAckState(1)); //Wait for ACK before loading data 等待 USB HOST ACK 协议发生
0004 ; //ACK has occurred, load the endpoint and toggle the data bit
0004 ; //扫描键盘
0004 ; if( KeyPressMainFlg == 1 ) //产生了键盘码
0004 ; {
0004 ; if( USB_KeyAct[1]==KB_save && KB_empty_cnt<1 )//防抖动
0004 ; continue;
0004 ; else
0004 ; {
0004 ; KB_empty_cnt = 0; KB_save = USB_KeyAct[1];
0004 ; }
0004 ; //向 USB 送键盘扫描码
0004 ; BeepDelayXXms( 50 ); //响铃,表示按键有效
0004 ; memset( abKeyboardData,0,8 );
0004 ; abKeyboardData[0] = USB_KeyAct[0];
0004 ; abKeyboardData[2] = USB_KeyAct[1];
0004 ; USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘码送USB
0004 ; memset( abKeyboardData,0,8 );
0004 ; while(!USBFS_1_bGetEPAckState(1));
0004 ; USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘抬起送USB
0004 ; }else
0004 ; {
0004 ; KB_empty_cnt ++;
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 ; }
0004 .dbline 245
0004 ; }
0004 ; }
0004 560300 mov [X+3],0
0007 560200 mov [X+2],0
000A 801D xjmp L6
000C L3:
000C .dbline 246
000C ; }
000C 560100 mov [X+1],0
000F 560000 mov [X+0],0
0012 L7:
0012 .dbline 247
0012 L8:
0012 .dbline 246
0012 7701 inc [X+1]
0014 0F0000 adc [X+0],0
0017 .dbline 246
0017 5201 mov A,[X+1]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -