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

📄 main.s

📁 cypresscy74294ic键盘和鼠标原码
💻 S
📖 第 1 页 / 共 3 页
字号:
	cpu LMM
	.module main.c
	.area lit(rom, con, rel)
_FirstKeyArray::
	.byte 'P,0
	.byte 0
	.byte 25,40
	.byte 13
	.byte 6,4
	.byte 9
	.byte 27,4
	.byte 8
	.byte 29,4
	.byte 7
	.byte 163,0
	.byte 0
	.byte 10,4
	.byte 10
	.byte 9,4
	.byte 6
	.byte 7,4
	.byte 5
	.byte 22,4
	.byte 4
	.byte 4,0
	.byte 0
	.byte 44,0
	.byte 0
	.byte 51,8
	.byte 15
	.byte 23,40
	.byte 11
	.byte 21,4
	.byte 3
	.byte 8,4
	.byte 2
	.byte 26,4
	.byte 1
	.byte 20,40
	.byte 10
	.byte 'O,0
	.byte 0
	.byte 165,0
	.byte 0
	.byte 5,40
	.byte 1
	.byte 17,8
	.byte 7
	.byte 16,8
	.byte 6
	.byte 'L,0
	.byte 0
	.byte 42,0
	.byte 0
	.byte 11,8
	.byte 2
	.byte 13,8
	.byte 4
	.byte 14,40
	.byte 5
	.byte 15,40
	.byte 17
	.byte 40,0
	.byte 0
	.byte 31,40
	.byte 16
	.byte 28,40
	.byte 14
	.byte 24,8
	.byte 12
	.byte 12,40
	.byte 3
	.byte 18,40
	.byte 8
	.byte 19,40
	.byte 9
	.word 0,0,0,0,0
	.byte 0,0
	.dbfile ./CSD_KeyProcess.c
	.dbsym e FirstKeyArray _FirstKeyArray A[120:40:3]c
_ShiftKeyArray::
	.byte 49,51
	.byte 46,52
	.byte 52,55
	.byte 54,54
	.byte 55,32
	.byte 38,45
	.byte 56,39
	.byte 56,34
	.byte 30
	.byte 0,0
	.dbsym e ShiftKeyArray _ShiftKeyArray A[19:19]c
_NumKeyArray::
	.byte 30,31
	.byte 32,33
	.byte 34,35
	.byte 36,37
	.byte 38,39
	.byte 0,0,0
	.dbsym e NumKeyArray _NumKeyArray A[13:13]c
_ArrowKeyArray::
	.byte 'R
	.byte 0,0,0
	.dbsym e ArrowKeyArray _ArrowKeyArray A[4:4]c
	.area text(rom, con, rel)
	.dbfile ./CSD_KeyProcess.c
	.dbfunc e delay_ms _delay_ms fV
;              i -> X+2
;              j -> X+0
;        MsTimes -> X-5
_delay_ms::
	.dbline -1
	push X
	mov X,SP
	add SP,4
	.dbline 243
; //----------------------------------------------------------------------------
; // C main ( unisen Cyber Station K.B. Qwert Mode Keyboard )
; // 2007-1 ver 1.00
; // 应 增加 NumLock,ArrowLock,Shift,Ctrl四个LED灯
; //----------------------------------------------------------------------------
; 
; #include <m8c.h>        // part specific constants and macros
; #include <string.h>
; #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
; #include "CSD_KeyProcess.c"
; 
; int KB_empty_cnt;
; BYTE KB_save;
; /*
; //GPIO 操作例程,先在 Device Editer 中将其中一个IO口 命名为
; #define Beep_BIT_Enable  Beep_BIT_Data_ADDR |=  Beep_BIT_MASK
; #define Beep_BIT_Disable Beep_BIT_Data_ADDR &= ~Beep_BIT_MASK
; //如何判断以上IO的高低电平?
; //如何控制IO高低电平?
; 
; //下面是 中断服务程序的定义方法:
; #pragma interrupt_handler timer_handler
; ...
; void timer_handler()
; {
; ...
; }
; 
; //在 boot.tpl 中,将对应的中断向量表中 填写 ljmp timer_handler
; */
; 
; //memcmp(RPT_DATA,USB_INTERFACE_0_OUT_RPT_DATA,8);  //从 USB 得到USB HOST送来的数据
; 
; BYTE abKeyboardData[8] = {0,0,0,0,0,0,0,0};
; //                        ^   ^
; //                        |   |
; //                     ctrl   Alpha
; 
; //M8C_Reset;
; char KeyPressMainFlg; 
; 
; void main()
; {  
;   M8C_EnableGInt;                     //Enable Global Interrupts  
; 
;   Beep_Start(); Beep_Switch(0);
;   
;   LED_ShiftCAP_Start(); LED_ShiftCAP_Switch(0);  
;   
;   CSD_1_Start();//CSD 电容式键盘初始化   
;   CSD_1_InitializeBaselines() ; //scan all sensors first time, init baseline  
;   CSD_1_SetDefaultFingerThresholds() ;//设置 电容式键盘 Finger Thresholds  
;   
; 	USBFS_1_Start(0, USB_5V_OPERATION);     //Start USBFS Operation using device 0  
; 	                                        //and with 5V operation  
; 	while(!USBFS_1_bGetConfiguration());    //Wait for Device to enumerate 等待USB HOST取得USB描述符
; 	//Enumeration is completed load endpoint 1. Do not toggle the first time  
; 	USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_NO_TOGGLE);  
; 
;   //M8C_EnableWatchDog;                 //(CPU_SCR0 &= ~CPU_SCR0_PORS_MASK)	  
;   memset( abKeyboardData,0,8 );
;   KB_empty_cnt = 0; KB_save = 0; KeyPressMainFlg = 0;
;   while( 1 )
;   { 
; 	memset( ScanArrayImage,0,5 );//将键盘位图清零
; 	KeyPressMainFlg = KeyPressMain();//扫描键盘
; 	while(!USBFS_1_bGetEPAckState(1));    //Wait for ACK before loading data 等待 USB HOST ACK 协议发生
; 	//ACK has occurred, load the endpoint and toggle the data bit  
;     //扫描键盘
;     if( KeyPressMainFlg == 1 ) //产生了键盘码
;     {
;     	 if( USB_KeyAct[1]==KB_save && KB_empty_cnt<1 )//防抖动
; 		   continue;
; 		 else
; 		 { 
; 		   KB_empty_cnt = 0; KB_save = USB_KeyAct[1]; 
; 		 }
;     	 //向 USB 送键盘扫描码
;     	 BeepDelayXXms( 50 ); //响铃,表示按键有效
;     	 memset( abKeyboardData,0,8 );
;     	 abKeyboardData[0] = USB_KeyAct[0];
;     	 abKeyboardData[2] = USB_KeyAct[1];
;     	 USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘码送USB
;     	 memset( abKeyboardData,0,8 );
;     	 while(!USBFS_1_bGetEPAckState(1));
;     	 USBFS_1_LoadInEP(1, abKeyboardData, 8, USB_TOGGLE);//将键盘抬起送USB
;     }else
;     {
;          KB_empty_cnt ++;
;     }
;   }  
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 245
; }
; }
	mov [X+3],0
	mov [X+2],0
	xjmp L6
L3:
	.dbline 246
; }
	mov [X+1],0
	mov [X+0],0
L7:
	.dbline 247
L8:
	.dbline 246
	inc [X+1]
	adc [X+0],0
	.dbline 246
	mov A,[X+1]
	sub A,100
	mov A,[X+0]
	xor A,-128
	sbb A,(0 ^ 0x80)
	jc L7
X0:
L4:
	.dbline 245
	inc [X+3]
	adc [X+2],0
L6:
	.dbline 245
	mov A,[X+3]
	sub A,[X-4]
	mov A,[X-5]
	xor A,-128
	mov REG[0xd0],>__r0
	mov [__rX],A
	mov A,[X+2]
	xor A,-128
	sbb A,[__rX]
	jc L3
X1:
	.dbline -2
	.dbline 248
; }
; }
L2:
	add SP,-4
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l i 2 I
	.dbsym l j 0 I
	.dbsym l MsTimes -5 I
	.dbend
	.dbfunc e BeepDelayXXms _BeepDelayXXms fV
;           XXms -> X-5
_BeepDelayXXms::
	.dbline -1
	push X
	mov X,SP
	.dbline 250
; }
; }
	.dbline 251
; }
	push X
	mov A,1
	xcall _Beep_Switch
	pop X
	.dbline 252
; }
	mov A,[X-5]
	push A
	mov A,[X-4]
	push A
	xcall _delay_ms
	add SP,-2
	.dbline 253
; }
	push X
	mov A,0
	xcall _Beep_Switch
	pop X
	.dbline -2
	.dbline 254
; }
L11:
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l XXms -5 I
	.dbend
	.dbfunc e ScanAllKey _ScanAllKey fc
;    KeyPressCnt -> X+4
;         ncount -> X+3
;           tmp2 -> X+2
;              j -> X+1
;            tmp -> X+0
_ScanAllKey::
	.dbline -1
	push X
	mov X,SP
	add SP,5
	.dbline 258
; }
; }
; }
; }
	.dbline 263
; }
; }
; }
; }
; }
	mov [X+4],0
	.dbline 264
; }
	push X
	xcall _CSD_1_ScanAllSensors
	.dbline 265
; }
	xcall _CSD_1_UpdateAllBaselines
	.dbline 267
; }
; }
	xcall _CSD_1_bIsAnySensorActive
	mov REG[0xd0],>__r0
	pop X
	cmp A,0
	jz L13
	.dbline 268
; }
	.dbline 273
; }
; }
; }
; }
; }
	mov [X+3],0
	xjmp L18
L15:
	.dbline 274
	mov REG[0xd0],>__r0
	mov A,[X+3]
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_CSD_1_baSnsOnMask
	adc [__r0],>_CSD_1_baSnsOnMask
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov [__r0],A
	mov A,[X+3]
	mov [__r3],A
	mov [__r2],0
	add [__r3],<_ScanArrayImage
	adc [__r2],>_ScanArrayImage
	mov A,[__r2]
	mov REG[0xd5],A
	mov A,[__r0]
	mvi [__r3],A
L16:
	.dbline 273
	inc [X+3]
L18:
	.dbline 273
	cmp [X+3],5
	jc L15
X2:
	.dbline 275
; }
; }
	mov [X+3],0
	xjmp L22
L19:
	.dbline 276
; }
	mov [X+1],0
	xjmp L26
L23:
	.dbline 277
; }
	.dbline 278
; }
	mov REG[0xd0],>__r0
	mov [__r0],1
	mov A,[X+1]
	jz X3
X4:
	mov REG[0xd0],>__r0
	asl [__r0]
	dec A
	jnz X4
X3:
	mov REG[0xd0],>__r0
	mov A,[__r0]
	mov [X+0],A
	.dbline 278
	mov A,[X+3]
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_ScanArrayImage
	adc [__r0],>_ScanArrayImage
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov [X+2],A
	.dbline 278
	mov A,[X+2]
	and A,[X+0]
	mov [X+0],A
	.dbline 279
; }
	cmp [X+0],0
	jz L27
	.dbline 280
; }
	inc [X+4]
L27:
	.dbline 282
L24:
	.dbline 276
	inc [X+1]
L26:
	.dbline 276
	cmp [X+1],8
	jc L23
X5:
L20:
	.dbline 275
	inc [X+3]
L22:
	.dbline 275
	cmp [X+3],5
	jc L19
X6:
	.dbline 283
; }
; }
; }
L13:
	.dbline 286
; }
; }
; }
	mov A,[X+4]
	mov REG[0xd0],>__r0
	.dbline -2
L12:
	add SP,-5
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l KeyPressCnt 4 c
	.dbsym l ncount 3 c
	.dbsym l tmp2 2 c
	.dbsym l j 1 c
	.dbsym l tmp 0 c
	.dbend
	.dbfunc e CalcRealKeyNum _CalcRealKeyNum fc
;            cnt -> X+4
;              i -> X+3
;           tmp2 -> X+2
;              j -> X+1
;            tmp -> X+0
_CalcRealKeyNum::
	.dbline -1
	push X
	mov X,SP
	add SP,5
	.dbline 291
; }
; }
; }
; }
; }
	.dbline 292
; }
	mov [X+4],0
	.dbline 294
; }
; }
	mov [X+3],0
	xjmp L33
L30:
	.dbline 295
; }
	.dbline 296
; }
	mov [X+1],0
	xjmp L37
L34:
	.dbline 297
; }
	.dbline 298
; }
	mov REG[0xd0],>__r0
	mov [__r0],1
	mov A,[X+1]
	jz X7
X8:
	mov REG[0xd0],>__r0
	asl [__r0]
	dec A
	jnz X8
X7:
	mov REG[0xd0],>__r0
	mov A,[__r0]
	mov [X+0],A
	.dbline 298
	mov A,[X+3]
	mov [__r1],A
	mov [__r0],0
	add [__r1],<_ScanArrayImage
	adc [__r0],>_ScanArrayImage
	mov A,[__r0]
	mov REG[0xd4],A
	mvi A,[__r1]
	mov [X+2],A
	.dbline 298
	mov A,[X+2]
	and A,[X+0]
	mov [X+0],A
	.dbline 299
; }
	cmp [X+0],0
	jz L38
	.dbline 300
; }
	xjmp L36
L38:
	.dbline 302
	inc [X+4]
	.dbline 303
L35:
	.dbline 296
	inc [X+1]
L37:
	.dbline 296
	cmp [X+1],8
	jc L34
X9:
L36:
	.dbline 304
; }
; }
; }
; }
	cmp [X+1],8
	jz L40
	.dbline 305
; }
	xjmp L32
L40:
	.dbline 306
L31:
	.dbline 294
	inc [X+3]
L33:
	.dbline 294
	cmp [X+3],5
	jc L30
X10:
L32:
	.dbline 307
; }
; }
	cmp [X+1],8
	jnz L42
	.dbline 307
	mov REG[0xd0],>__r0
	mov A,0
	xjmp L29
L42:
	.dbline 308
; }
	mov REG[0xd0],>__r0
	mov A,[X+4]
	add A,1
	.dbline -2
L29:
	add SP,-5
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l cnt 4 c
	.dbsym l i 3 c
	.dbsym l tmp2 2 c
	.dbsym l j 1 c
	.dbsym l tmp 0 c
	.dbend
	.area lit(rom, con, rel)
L45:
	.byte 0,0
	.area text(rom, con, rel)
	.dbfile ./CSD_KeyProcess.c
	.dbfunc e ChangeKeyStatus _ChangeKeyStatus fV
;       ChrIndex -> X+2
;         ch_str -> X+0
;         C_Code -> X-4
_ChangeKeyStatus::
	.dbline -1
	push X
	mov X,SP
	add SP,15
	.dbline 313
; }
; }
; }
; }
; }
	.dbline 314
; }
	mov REG[0xd0],>__r0
	mov [__r1],<L45
	mov [__r0],>L45
	mov [__r3],X
	mov REG[0xd5],3
	push X
	mov [__rX],0
	mov A,[__r0]
	mov X,[__r1]
X12:
	push A
	romx
	mov REG[0xd0],>__r0
	mvi [__r3],A
	pop A
	inc X
	adc A,0
	inc [__rX]
	cmp [__rX],2
	jnz X12
	pop X
	.dbline 316
; }
; }
	mov A,[X-4]
	mov [X+4],A
	mov [X+3],0
	cmp [X+3],0
	jnz X13
	cmp [X+4],-95
	jz L49
X13:
	cmp [X+3],0
	jnz X14
	cmp [X+4],-94
	jz L53
X14:
	cmp [X+3],0
	jnz X15
	cmp [X+4],-93
	jz L57
X15:
	cmp [X+3],0
	jnz X16
	cmp [X+4],-92
	jz L61
X16:
	cmp [X+3],0
	jnz X17
	cmp [X+4],-91
	jz L65
X17:
	xjmp L46
X11:
	.dbline 317
; }
L49:
	.dbline 319
; }
; }
	mov REG[0xd0],>_KeyProStatus
	mov A,[_KeyProStatus]
	mov REG[0xd0],>__r0
	asr A
	asr A
	asr A
	asr A
	asr A
	asr A
	and A,3
	mov [__r0],A
	and [__r0],1
	cmp [__r0],0
	jz L51
	mov [X+6],0
	mov [X+5],0
	xjmp L52
L51:
	mov [X+6],1
	mov [X+5],0
L52:
	mov REG[0xd0],>__r0
	mov A,[X+6]
	mov [__r0],A
	and [__r0],1
	mov A,[__r0]
	asl A
	asl A
	asl A
	asl A
	asl A
	asl A
	mov [__r0],A
	and [__r0],64
	mov REG[0xd0],>_KeyProStatus
	mov A,[_KeyProStatus]
	and A,-65
	mov REG[0xd0],>__r0
	or A,[__r0]
	mov REG[0xd0],>_KeyProStatus
	mov [_KeyProStatus],A
	.dbline 320
; }
	xjmp L47
L53:
	.dbline 322
; }
; }
	mov REG[0xd0],>_KeyProStatus
	mov A,[_KeyProStatus]
	mov REG[0xd0],>__r0
	asr A
	asr A
	asr A
	asr A
	asr A
	and A,7
	mov [__r0],A
	and [__r0],1
	cmp [__r0],0
	jz L55
	mov [X+8],0
	mov [X+7],0
	xjmp L56
L55:
	mov [X+8],1
	mov [X+7],0
L56:
	mov REG[0xd0],>__r0
	mov A,[X+8]
	mov [__r0],A
	and [__r0],1
	mov A,[__r0]
	asl A
	asl A
	asl A

⌨️ 快捷键说明

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