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

📄 keyboard.lis

📁 用ST92163开发的鼠标
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 230:../src/keyboard.c **** 	{ KTAB, KCAP, KF3, KT, KY, KRBR, KF7, KLBR, KBSP, KNUL, KNUL, KNUL, KNUL, KNUL, KLSH, KB5},
 231:../src/keyboard.c **** 
 232:../src/keyboard.c **** 	{ KA, KS, KD, KF, KJ, KK, KL, KSEM, KNUL, KNUL, KNUL, KL2, KNUL, KNUL, KF22, KB1},
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 19


 233:../src/keyboard.c **** 
 234:../src/keyboard.c **** 	{ KESC, KEU2, KF4, KG, KH, KF6, KNUL, KQUO, KF5, KNUL, KNUL, KNUL, KUAR, KLAL, KF23, KB2},
 235:../src/keyboard.c **** 
 236:../src/keyboard.c **** 	{ KZ, KX, KC, KV, KM, KLES, KGTR, KBSL /* KEU1 */, KENT, KNUL, KBRK, KNUL, KDEL, KF21, KRSH, KNUL}
 237:../src/keyboard.c **** 
 238:../src/keyboard.c **** 	{ KNUL, KNUL, KL1, KB, KN, KNUL, KNUL, KMIN, KSPC, KRAR, KDAR, KNUL, KLAR, KRAL, KF24, KNUL}
 239:../src/keyboard.c ****   }
 240:../src/keyboard.c **** } ;
 241:../src/keyboard.c **** 
 242:../src/keyboard.c **** keymap *scanmap ;
 243:../src/keyboard.c **** 
 244:../src/keyboard.c **** BYTE kbd_Buffer[ 8] ;
 245:../src/keyboard.c **** static BYTE kbd_tmp[ 8] ;
 246:../src/keyboard.c **** BYTE kbd_idx ;
 247:../src/keyboard.c **** static BYTE cols[ 16] ;
 248:../src/keyboard.c **** 
 249:../src/keyboard.c **** void KEYBOARD_Send( void) ;
 250:../src/keyboard.c **** 
 251:../src/keyboard.c **** static void kbd_rollover( void)
 252:../src/keyboard.c **** {
 824              	.LMM2:
 253:../src/keyboard.c **** 	for( kbd_idx = 2 ; kbd_idx < 8 ; kbd_idx++)
 826 0000 2FF10200 		ld  	dpr:pof(@kbd_idx),#2
 826      00
 827 0005 BFD20000 		ldw  	rr2,#dpr:pof(@kbd_Buffer)
 828 0009 4C01     		ld  	r4,#1
 829              	.L5:
 830              	.LMM3:
 254:../src/keyboard.c **** 	{
 255:../src/keyboard.c **** 		kbd_Buffer[ kbd_idx] = 0x01 ;
 832 000b C4F10000 		ld   	r1,dpr:pof(@kbd_idx)
 833 000f 0C00     		ld   	r0,#0
 834 0011 6013F4   		ld  	rr0(rr2),r4
 835              	.LMM4:
 837 0014 2F410100 		add  	dpr:pof(@kbd_idx),#1
 837      00
 838 0019 2F910700 		cp   	dpr:pof(@kbd_idx),#7
 838      00
 839 001e 3BEB     		jxule	.L5
 840              	.LMM5:
 256:../src/keyboard.c **** 	}
 257:../src/keyboard.c **** }
 842 0020 46       		ret 
 843              		.endproc
 844              	.Lscope0:
 848              	
 849              		.globl kbd_insert
 850              	
 851              		.desc	kbd_insert, near
 852              		.proc	kbd_insert
 853              	kbd_insert:
 258:../src/keyboard.c **** 
 259:../src/keyboard.c **** void kbd_insert( BYTE scan)
 260:../src/keyboard.c **** {
 855 0021 28D0     		ld  	r2,r0
 856              	.LMM7:
 261:../src/keyboard.c **** 	if( kbd_idx < 8)
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 20


 858 0023 2F910700 		cp   	dpr:pof(@kbd_idx),#7
 858      00
 859 0028 BB11     		jxugt	.L8
 860              	.LMM8:
 262:../src/keyboard.c **** 	{
 263:../src/keyboard.c **** 		kbd_Buffer[ kbd_idx++] = scan ;
 862 002a C4F10000 		ld   	r1,dpr:pof(@kbd_idx)
 863 002e 0C00     		ld   	r0,#0
 864 0030 26F00000 		ld  	dpr:pof(@kbd_Buffer)(rr0),r2
 864      D2
 865 0035 2F410100 		add  	dpr:pof(@kbd_idx),#1
 865      00
 866              	.LMM9:
 264:../src/keyboard.c **** 	}
 868 003a 46       		ret
 869              	.L8:
 870              	.LMM10:
 265:../src/keyboard.c **** 	else
 266:../src/keyboard.c **** 	{
 267:../src/keyboard.c **** 		kbd_rollover() ;
 872 003b D20000   		call 	@kbd_rollover  
 873              	.LMM11:
 268:../src/keyboard.c **** 	}
 269:../src/keyboard.c **** }
 875 003e 46       		ret 
 876              		.endproc
 877              	.Lscope1:
 882              	
 883              		.globl do_col
 884              	
 885              		.desc	do_col, near
 886              		.proc	do_col
 887              	do_col:
 270:../src/keyboard.c **** 
 271:../src/keyboard.c **** void do_col( BYTE col, BYTE byt)
 272:../src/keyboard.c **** {
 889 003f 66DC     		push 	r12
 890 0041 74DA     		pushw	rr10
 891 0043 74D8     		pushw	rr8
 892 0045 C8D1     		ld  	r12,r1
 893              	.LMM13:
 273:../src/keyboard.c **** 	BYTE	scan, row, bit ;
 895              	.LBB2:
 896              	.LMM14:
 274:../src/keyboard.c **** 
 275:../src/keyboard.c **** 	row = 0 ;
 898              	.LMM15:
 276:../src/keyboard.c **** 	for( bit = 0x01 ; bit ; bit <<= 1)
 900 0047 BFD80100 		ldw 	rr8,#256
 901 004b B8D0     		ld   	r11,r0
 902 004d AC00     		ld   	r10,#0
 903              	.L14:
 904              	.LMM16:
 277:../src/keyboard.c **** 	{
 278:../src/keyboard.c **** 		if( byt & bit)
 906 004f A2C8     		tm   	r12,r8
 907 0051 6D00E0   		jxz  	.L15
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 21


 908              	.LMM17:
 279:../src/keyboard.c **** 		{
 280:../src/keyboard.c **** 			scan = (*scanmap)[ row][ col] ;
 910 0054 18D9     		ld   	r1,r9
 911 0056 0C00     		ld   	r0,#0
 912 0058 4E00     		addw 	rr0,rr0
 913 005a 4E00     		addw 	rr0,rr0
 914 005c 4E00     		addw 	rr0,rr0
 915 005e 4E00     		addw 	rr0,rr0
 916 0060 E2400000 		addw 	rr0,dpr:pof(@scanmap)
 917 0064 601AF0   		ld  	r0,rr0(rr10)
 918              	.LMM18:
 281:../src/keyboard.c **** 			switch( scan)
 920 0067 38D0     		ld   	r3,r0
 921 0069 2C00     		ld   	r2,#0
 922 006b 97D300E3 		cpw  	rr2,#227
 923 006f 6B49     		jxz  	.L21
 924 0071 AB1C     		jxgt 	.L28
 925 0073 97D300E0 		cpw  	rr2,#224
 926 0077 6B2C     		jxz  	.L18
 927 0079 AB06     		jxgt 	.L29
 928 007b 0E22     		orw 	rr2,rr2
 929 007d 6B61     		jxz  	.L15
 930 007f 8B5C     		jxt  	.L26
 931              	.L29:
 932 0081 97D300E1 		cpw  	rr2,#225
 933 0085 6B25     		jxz  	.L19
 934 0087 97D300E2 		cpw  	rr2,#226
 935 008b 6B26     		jxz  	.L20
 936 008d 8B4E     		jxt  	.L26
 937              	.L28:
 938 008f 97D300E5 		cpw  	rr2,#229
 939 0093 6B33     		jxz  	.L23
 940 0095 1B2A     		jxlt 	.L22
 941 0097 97D300E6 		cpw  	rr2,#230
 942 009b 6B32     		jxz  	.L24
 943 009d 97D300E7 		cpw  	rr2,#231
 944 00a1 6B33     		jxz  	.L25
 945 00a3 8B38     		jxt  	.L26
 946              	.L18:
 947              	.LMM19:
 282:../src/keyboard.c **** 			{
 283:../src/keyboard.c **** 			case 0x00:
 284:../src/keyboard.c **** 				/* Code non in matrix: Can't be */
 285:../src/keyboard.c **** 				break ;
 286:../src/keyboard.c **** 			case KLCT: /* 0xE0: */
 287:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x01 ;
 949 00a5 2F010100 		or 	dpr:pof(@kbd_Buffer),#1
 949      00
 950              	.LMM20:
 288:../src/keyboard.c **** 				break ;
 952 00aa 8B34     		jxt  	.L15
 953              	.L19:
 954              	.LMM21:
 289:../src/keyboard.c **** 			case KLSH: /* 0xE1: */
 290:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x02 ;
 956 00ac 2F010200 		or 	dpr:pof(@kbd_Buffer),#2
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 22


 956      00
 957              	.LMM22:
 291:../src/keyboard.c **** 				break ;
 959 00b1 8B2D     		jxt  	.L15
 960              	.L20:
 961              	.LMM23:
 292:../src/keyboard.c **** 			case KLAL: /* 0xE2: */
 293:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x04 ;
 963 00b3 2F010400 		or 	dpr:pof(@kbd_Buffer),#4
 963      00
 964              	.LMM24:
 294:../src/keyboard.c **** 				break ;
 966 00b8 8B26     		jxt  	.L15
 967              	.L21:
 968              	.LMM25:
 295:../src/keyboard.c **** 			case KL2: /* 0xE3: */
 296:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x08 ;
 970 00ba 2F010800 		or 	dpr:pof(@kbd_Buffer),#8
 970      00
 971              	.LMM26:
 297:../src/keyboard.c **** 				break ;
 973 00bf 8B1F     		jxt  	.L15
 974              	.L22:
 975              	.LMM27:
 298:../src/keyboard.c **** 			case KRCT: /* 0xE4: */
 299:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x10 ;
 977 00c1 2F011000 		or 	dpr:pof(@kbd_Buffer),#16
 977      00
 978              	.LMM28:
 300:../src/keyboard.c **** 				break ;
 980 00c6 8B18     		jxt  	.L15
 981              	.L23:
 982              	.LMM29:
 301:../src/keyboard.c **** 			case KRSH: /* 0xE5: */
 302:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x20 ;
 984 00c8 2F012000 		or 	dpr:pof(@kbd_Buffer),#32
 984      00
 985              	.LMM30:
 303:../src/keyboard.c **** 				break ;
 987 00cd 8B11     		jxt  	.L15
 988              	.L24:
 989              	.LMM31:
 304:../src/keyboard.c **** 			case KRAL: /* 0xE6: */
 305:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x40 ;
 991 00cf 2F014000 		or 	dpr:pof(@kbd_Buffer),#64
 991      00
 992              	.LMM32:
 306:../src/keyboard.c **** 				break ;
 994 00d4 8B0A     		jxt  	.L15
 995              	.L25:
 996              	.LMM33:
 307:../src/keyboard.c **** 			case KR1: /* 0xE7: */
 308:../src/keyboard.c **** 				kbd_Buffer[ 0] |= 0x80 ;
 998 00d6 2F018000 		or 	dpr:pof(@kbd_Buffer),#128
 998      00
 999              	.LMM34:
 309:../src/keyboard.c **** 				break ;
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 23


 1001 00db 8B03     		jxt  	.L15
 1002              	.L26:
 1003              	.LMM35:
 310:../src/keyboard.c **** 			default:
 311:../src/keyboard.c **** 				kbd_insert( scan) ;
 1005 00dd D20021   		call 	@kbd_insert  
 1006              	.L15:
 1007              	.LMM36:
 312:../src/keyboard.c **** 			}
 313:../src/keyboard.c **** 		}
 314:../src/keyboard.c **** 
 315:../src/keyboard.c **** 		row += 1 ;
 1009 00e0 50D9     		inc  	r9
 1010              	.LMM37:
 1012 00e2 4288     		add  	r8,r8
 1013 00e4 ED004F   		jxnz 	.L14
 1014              	.LMM38:
 316:../src/keyboard.c **** 	}
 317:../src/keyboard.c **** }
 1016              	.LBE2:
 1017 00e7 75D8     		popw 	rr8
 1018 00e9 75DA     		popw 	rr10
 1019 00eb 76DC     		pop  	r12
 1020 00ed 46       		ret 
 1021              		.endproc
 1027              	.Lscope2:
 1029              	
 1030              		.globl P3DR
 1031              		.desc	P3DR, 8bit register
 1032              	P3DR=	227
 1033              	
 1034              		.globl P4DR
 1035              		.desc	P4DR, 8bit register
 1036              	P4DR=	228
 1038              	
 1039              		.globl get_key
 1040              	
 1041              		.desc	get_key, near
 1042              		.proc	get_key
 1043              	get_key:
 318:../src/keyboard.c **** 
 319:../src/keyboard.c **** BYTE get_key( void)
 320:../src/keyboard.c **** {
 1045              	.LMM40:
 321:../src/keyboard.c **** 	BYTE	byt, cnt, tmp ;
 1047              	.LBB3:
 1048              	.LMM41:
 322:../src/keyboard.c **** 
 323:../src/keyboard.c **** //	byt = 0x7F ;
 324:../src/keyboard.c **** //	cnt = 0 ;
 325:../src/keyboard.c **** //	while( --cnt)
 326:../src/keyboard.c **** //	{
 327:../src/keyboard.c **** //		byt &= ~P3DR | 0xF0 ;
 328:../src/keyboard.c **** //		byt &= (~P4DR << 4) | 0x0F ;
 329:../src/keyboard.c **** //	}
 330:../src/keyboard.c **** 	tmp = cnt = 0 ;
 1050 00ee 90D2     		clr 	r2
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 24


 1051 00f0 38D2     		ld  	r3,r2
 1052              	.L32:
 1053              	.LMM42:
 331:../src/keyboard.c **** 	do
 332:../src/keyboard.c **** 	{
 333:../src/keyboard.c **** 		byt = ~P3DR & 0x0F ;
 1055 00f2 08E3     		ld  	r0,@P3DR
 1056 00f4 80D0     		cpl 	r0
 1057 00f6 18D0     		ld  	r1,r0
 1058 00f8 15D10F   		and 	r1,#15
 1059              	.LMM43:
 334:../src/keyboard.c **** 		byt |= (~P4DR << 4) & 0xF0 ;
 1061 00fb 08E4     		ld  	r0,@P4DR
 1062 00fd 80D0     		cpl 	r0
 1063 00ff F0D0     		swap 	r0
 1064 0101 15D0F0   		and  	r0,#240
 1065 0104 15D0F0   		and 	r0,#-16
 1066 0107 0210     		or 	r1,r0
 1067              	.LMM44:
 335:../src/keyboard.c **** 		if( tmp == byt)
 1069 0109 9231     		cp   	r3,r1
 1070 010b EB04     		jxnz 	.L35
 1071              	.LMM45:
 336:../src/keyboard.c **** 		{
 337:../src/keyboard.c **** 			cnt += 1 ;
 1073 010d 50D2     		inc  	r2
 1074              	.LMM46:
 338:../src/keyboard.c **** 		}
 1076 010f 8B04     		jxt  	.L34
 1077              	.L35:
 1078              	.LMM47:
 339:../src/keyboard.c **** 		else
 340:../src/keyboard.c **** 		{
 341:../src/keyboard.c **** 			tmp = byt ;
 1080 0111 38D1     		ld  	r3,r1
 1081              	.LMM48:
 342:../src/keyboard.c **** 			cnt = 0 ;
 1083 0113 90D2     		clr 	r2
 1084              	.LMM49:
 343:../src/keyboard.c **** 		}
 344:../src/keyboard.c **** 	} while( cnt < 255) ;
 1086              	.L34:
 1087 0115 95D2FE   		cp   	r2,#254
 1088 0118 3BD8     		jxule	.L32
 1089              	.LMM50:
 345:../src/keyboard.c **** 	
 346:../src/keyboard.c **** 	return byt ;
 1091              	.LMM51:
 347:../src/keyboard.c **** }
 1093              	.LBE3:
 1094 011a 46       		ret 
 1095              		.endproc
 1101              	.Lscope3:

⌨️ 快捷键说明

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