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

📄 keyboard.src

📁 《单片机c程序设计及应用实列》一书的源代
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 142
	JNB  	P1_5,?C0020
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 143
	LCALL	L?0058
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 144
	JNB  	P1_5,?C0020
; 	return 6;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 145
	MOV  	R7,#06H
	RET  	
?C0020:
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 146
	JNB  	P1_6,?C0022
; 	PinLamp=FALSE;
			; SOURCE LINE # 147
	CLR  	P0_0
?C0022:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 148
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 149
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 150
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 151
	SETB 	P0_1
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 152
	JNB  	P1_6,?C0023
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 153
	LCALL	L?0058
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 154
	JNB  	P1_6,?C0023
; 	return 0;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 155
	MOV  	R7,#00H
	RET  	
?C0023:
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 156
	JNB  	P1_7,?C0025
; 	PinLamp=FALSE;
			; SOURCE LINE # 157
	CLR  	P0_0
?C0025:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 158
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 159
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 160
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 161
	SETB 	P0_1
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 162
	JNB  	P1_7,?C0026
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 163
	LCALL	L?0058
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 164
	JNB  	P1_7,?C0026
; 	return 13;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 165
	MOV  	R7,#0DH
	RET  	
?C0026:
; PinDrvKey2=FALSE;				//以上语句扫描第二列
			; SOURCE LINE # 166
	CLR  	P1_1
; PinDrvKey3=TRUE;
			; SOURCE LINE # 167
	SETB 	P1_2
; if(PinScanKey1==TRUE)
			; SOURCE LINE # 168
	JNB  	P1_4,?C0028
; 	PinLamp=FALSE;
			; SOURCE LINE # 169
	CLR  	P0_0
?C0028:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 170
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 171
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 172
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 173
	SETB 	P0_1
; if(PinScanKey1==TRUE)
			; SOURCE LINE # 174
	JNB  	P1_4,?C0029
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 175
	LCALL	L?0058
; if(PinScanKey1==TRUE)
			; SOURCE LINE # 176
	JNB  	P1_4,?C0029
; 	return 3;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 177
	MOV  	R7,#03H
	RET  	
?C0029:
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 178
	JNB  	P1_5,?C0031
; 	PinLamp=FALSE;
			; SOURCE LINE # 179
	CLR  	P0_0
?C0031:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 180
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 181
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 182
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 183
	SETB 	P0_1
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 184
	JNB  	P1_5,?C0032
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 185
	LCALL	L?0058
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 186
	JNB  	P1_5,?C0032
; 	return 7;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 187
	MOV  	R7,#07H
	RET  	
?C0032:
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 188
	JNB  	P1_6,?C0034
; 	PinLamp=FALSE;
			; SOURCE LINE # 189
	CLR  	P0_0
?C0034:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 190
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 191
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 192
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 193
	SETB 	P0_1
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 194
	JNB  	P1_6,?C0035
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 195
	LCALL	L?0058
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 196
	JNB  	P1_6,?C0035
; 	return 10;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 197
	MOV  	R7,#0AH
	RET  	
?C0035:
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 198
	JNB  	P1_7,?C0037
; 	PinLamp=FALSE;
			; SOURCE LINE # 199
	CLR  	P0_0
?C0037:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 200
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 201
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 202
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 203
	SETB 	P0_1
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 204
	JNB  	P1_7,?C0038
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 205
	LCALL	L?0058
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 206
	JNB  	P1_7,?C0038
; 	return 14;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 207
	MOV  	R7,#0EH
	RET  	
?C0038:
; PinDrvKey3=FALSE;				//以上语句扫描第三列
			; SOURCE LINE # 208
	CLR  	P1_2
; PinDrvKey4=TRUE;
			; SOURCE LINE # 209
	SETB 	P1_3
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 210
	JNB  	P1_7,?C0040
; 	PinLamp=FALSE;
			; SOURCE LINE # 211
	CLR  	P0_0
?C0040:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 212
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 213
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 214
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 215
	SETB 	P0_1
; if(PinScanKey1==TRUE)
			; SOURCE LINE # 216
	JNB  	P1_4,?C0041
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 217
	LCALL	L?0058
; if(PinScanKey1==TRUE)
			; SOURCE LINE # 218
	JNB  	P1_4,?C0041
; 	return 4;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 219
	MOV  	R7,#04H
	RET  	
?C0041:
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 220
	JNB  	P1_5,?C0043
; 	PinLamp=FALSE;
			; SOURCE LINE # 221
	CLR  	P0_0
?C0043:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 222
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 223
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 224
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 225
	SETB 	P0_1
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 226
	JNB  	P1_5,?C0044
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 227
	LCALL	L?0058
; if(PinScanKey2==TRUE)
			; SOURCE LINE # 228
	JNB  	P1_5,?C0044
; 	return 8;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 229
	MOV  	R7,#08H
	RET  	
?C0044:
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 230
	JNB  	P1_6,?C0046
; 	PinLamp=FALSE;
			; SOURCE LINE # 231
	CLR  	P0_0
?C0046:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 232
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 233
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 234
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 235
	SETB 	P0_1
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 236
	JNB  	P1_6,?C0047
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 237
	LCALL	L?0058
; if(PinScanKey3==TRUE)
			; SOURCE LINE # 238
	JNB  	P1_6,?C0047
; 	return 11;}					//确认确实有按键信号,返回键值
			; SOURCE LINE # 239
	MOV  	R7,#0BH
	RET  	
?C0047:
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 240
	JNB  	P1_7,?C0049
; 	PinLamp=FALSE;
			; SOURCE LINE # 241
	CLR  	P0_0
?C0049:
; 	PinSpeaker=FALSE;
			; SOURCE LINE # 242
; 	delay(DELAY_VALUE);		//如果判断有信号,则延时一次
			; SOURCE LINE # 243
	LCALL	L?0057
; 	PinLamp=TRUE;
			; SOURCE LINE # 244
	SETB 	P0_0
; 	PinSpeaker=TRUE; 
			; SOURCE LINE # 245
	SETB 	P0_1
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 246
	JNB  	P1_7,?C0050
; { delay(DELAY_VALUE);			//假如判断还有信号,则再延时
			; SOURCE LINE # 247
	LCALL	L?0058
; if(PinScanKey4==TRUE)
			; SOURCE LINE # 248
	JNB  	P1_7,?C0050
; 	return 15;}					//假如判断还有信号,则再延时
			; SOURCE LINE # 249
	MOV  	R7,#0FH
	RET  	
?C0050:
; PinDrvKey3=FALSE;				//以上语句扫描第四列
			; SOURCE LINE # 250
	CLR  	P1_2
; return 16;
			; SOURCE LINE # 251
	MOV  	R7,#010H
; }
			; SOURCE LINE # 252
?C0006:
	RET  	
; END OF keyscan

; 
; 
; void delay(short i)

	RSEG  ?PR?_delay?KEYBOARD
L?0056:
	USING	0
L?0057:
	CLR  	P0_1
L?0058:
	MOV  	R7,#03H
	MOV  	R6,#00H
_delay:
	USING	0
			; SOURCE LINE # 255
;---- Variable 'i?341' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 256
; 	int j=0;
			; SOURCE LINE # 257
;---- Variable 'j?342' assigned to Register 'R2/R3' ----
	CLR  	A
	MOV  	R3,A
	MOV  	R2,A
; 	int k=0;
			; SOURCE LINE # 258
;---- Variable 'k?343' assigned to Register 'R4/R5' ----
	MOV  	R4,A
; 	k=i*DELAY_VALUE;
			; SOURCE LINE # 259
	MOV  	R5,#03H
	LCALL	?C?IMUL
	MOV  	R4,AR6
	MOV  	R5,AR7
?C0052:
; 	while (j<k)j++;
			; SOURCE LINE # 260
	CLR  	C
	MOV  	A,R3
	SUBB 	A,R5
	MOV  	A,R4
	XRL  	A,#080H
	MOV  	R0,A
	MOV  	A,R2
	XRL  	A,#080H
	SUBB 	A,R0
	JNC  	?C0054
	INC  	R3
	CJNE 	R3,#00H,?C0055
	INC  	R2
?C0055:
	SJMP 	?C0052
; }
			; SOURCE LINE # 261
?C0054:
	RET  	
; END OF _delay

	END

⌨️ 快捷键说明

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