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

📄 keypaddrive.src

📁 这是用proteus做的基于51核的一个菜单仿真的程序开发环境keil 没有使用os在裸机上跑
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\keypaddrive.SRC generated from: keypaddrive.c
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE keypaddrive.c LARGE BROWSE DEBUG OBJECTEXTEND SRC(.\keypaddrive.SRC)


NAME	KEYPADDRIVE

?PR?_PutInBuf?KEYPADDRIVE                SEGMENT CODE 
?PR?GetKey?KEYPADDRIVE                   SEGMENT CODE 
?PR?KeyScan?KEYPADDRIVE                  SEGMENT CODE 
?C_INITSEG           SEGMENT CODE 
?CO?KEYPADDRIVE      SEGMENT CODE 
?ID?KEYPADDRIVE      SEGMENT IDATA 
?XD?KEYPADDRIVE      SEGMENT XDATA 
?BA?KEYPADDRIVE      SEGMENT DATA BITADDRESSABLE 
	PUBLIC	Vertical3
	PUBLIC	Vertical2
	PUBLIC	Vertical1
	PUBLIC	Vertical0
	PUBLIC	KeyPadStatus
	PUBLIC	KeyBuf
	PUBLIC	Temp1
	PUBLIC	Delay10ms
	PUBLIC	KeyElement3
	PUBLIC	KeyElement2
	PUBLIC	KeyElement1
	PUBLIC	KeyElement0
	PUBLIC	Key
	PUBLIC	BufFlag
	PUBLIC	Temp
	PUBLIC	Front
	PUBLIC	Real
	PUBLIC	Row
	PUBLIC	KeyScan
	PUBLIC	GetKey
	PUBLIC	_PutInBuf

	RSEG  ?ID?KEYPADDRIVE
           Real:   DS   1
          Front:   DS   1
   KeyPadStatus:   DS   1

	RSEG  ?XD?KEYPADDRIVE
           Temp:   DS   1
        BufFlag:   DS   1
    KeyElement0:   DS   4
    KeyElement1:   DS   4
    KeyElement2:   DS   4
    KeyElement3:   DS   4
      Delay10ms:   DS   1
          Temp1:   DS   1
         KeyBuf:   DS   16

	RSEG  ?BA?KEYPADDRIVE
            Key:   DS   1
Vertical0	EQU	(Key+0).0
Vertical1	EQU	(Key+0).1
Vertical2	EQU	(Key+0).2
Vertical3	EQU	(Key+0).3

	RSEG  ?CO?KEYPADDRIVE
Row:
	DB	001H
	DB	002H
	DB	004H
	DB	008H


	RSEG ?XD?KEYPADDRIVE

	RSEG  ?C_INITSEG
	DB	001H
	DB	KeyPadStatus
	DB	000H

	DB	001H
	DB	Front
	DB	000H

	DB	001H
	DB	Real
	DB	000H

	DB	041H
	DW	BufFlag
	DB	000H

	DB	044H
	DW	KeyElement0
	DB	031H
	DB	032H
	DB	033H
	DB	034H

	DB	044H
	DW	KeyElement1
	DB	035H
	DB	036H
	DB	037H
	DB	038H

	DB	044H
	DW	KeyElement2
	DB	039H
	DB	030H
	DB	020H
	DB	020H

	DB	044H
	DW	KeyElement3
	DB	020H
	DB	020H
	DB	020H
	DB	020H

; //---------------------------------------------
; // the 4*4 keypad driver 
; // write by liujianwei 2005-6-25
; // e-mail:liujianwei@ruyi.com
; // qq:361299856
; //---------------------------------------------
; 
; 
; #include <absacc.h>
; #define KEY_ROW_PORT 		0x2000
; #define KEY_VERTICAL_PORT   0xA000
; #define unchar unsigned char 
; #define KEY_ROW 		XBYTE[KEY_ROW_PORT]
; #define KEY_VERTICAL	XBYTE[KEY_VERTICAL_PORT]
; #define EMPTY 				0
; #define NOTEMPTY 			2
; #define FULL 				1
; #define NOTFULL				3
; //-------------------------------------------
; // the globle varible declar   here 
; //---------------------------------------------
;  unchar  KeyBuf[16];
;  unchar  idata  KeyPadStatus=0;
;  unchar  idata Front=0;
;  unchar  idata Real=0;
;  unchar  BufFlag=EMPTY;  //0= empty
;   const unchar code  Row[4]={ 0x01,0x02,0x04,0x08}; 
;   const unchar KeyElement0[4]={'1','2','3','4'};
;   const unchar KeyElement1[4]={'5','6','7','8'};
;   const unchar KeyElement2[4]={'9','0',' ',' '};
;   const unchar KeyElement3[4]={' ',' ',' ',' '};
;  unchar bdata  Key;
;    sbit   Vertical0= Key^0;
;    sbit   Vertical1= Key^1;
;    sbit   Vertical2= Key^2;
;    sbit   Vertical3= Key^3;
; 
;  unchar Temp,Temp1;
;  unchar Delay10ms;
; //--------------------------------------
; // put the  char into  the  key buffer
; //--------------------------------------
; 	PutInBuf(unchar x)

	RSEG  ?PR?_PutInBuf?KEYPADDRIVE
_PutInBuf:
	USING	0
			; SOURCE LINE # 43
;---- Variable 'x?040' assigned to Register 'R7' ----
;  		{
			; SOURCE LINE # 44
; 		  if (BufFlag!=FULL)
			; SOURCE LINE # 45
	MOV  	DPTR,#BufFlag
	MOVX 	A,@DPTR
	XRL  	A,#01H
	JZ   	?C0003
;            		{
			; SOURCE LINE # 46
; 				 KeyBuf[Real]=x;
			; SOURCE LINE # 47
	MOV  	R0,#LOW (Real)
	MOV  	A,@R0
	ADD  	A,#LOW (KeyBuf)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (KeyBuf)
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
; 				 
; 				 Real++;
			; SOURCE LINE # 49
	INC  	@R0
; 				 Real&=0x0f;
			; SOURCE LINE # 50
	MOV  	A,@R0
	ANL  	A,#0FH
	MOV  	R7,A
	MOV  	@R0,A
; 				 BufFlag=NOTEMPTY;
			; SOURCE LINE # 51
	MOV  	DPTR,#BufFlag
	MOV  	A,#02H
	MOVX 	@DPTR,A
; 				 if (Real==Front)
			; SOURCE LINE # 52
	INC  	R0
	MOV  	A,@R0
	CJNE 	A,AR7,?C0003
; 					BufFlag=FULL;
			; SOURCE LINE # 53
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 				}
			; SOURCE LINE # 54
; 		}
			; SOURCE LINE # 55
?C0003:
	RET  	
; END OF _PutInBuf

; //----------------------------------------
; //  get char from the key bufffer
; //---------------------------------------
;  
;  unchar GetKey()

	RSEG  ?PR?GetKey?KEYPADDRIVE
GetKey:
	USING	0
			; SOURCE LINE # 60
; 	     { unchar x;
			; SOURCE LINE # 61
; 		  if (BufFlag!=EMPTY)
			; SOURCE LINE # 62
	MOV  	DPTR,#BufFlag
	MOVX 	A,@DPTR
	JZ   	?C0004
; 			  {
			; SOURCE LINE # 63
; 			    x=KeyBuf[Front];
			; SOURCE LINE # 64
	MOV  	R0,#LOW (Front)
	MOV  	A,@R0
	ADD  	A,#LOW (KeyBuf)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (KeyBuf)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R7,A
;---- Variable 'x?141' assigned to Register 'R7' ----
; 			    Front++;
			; SOURCE LINE # 65
	INC  	@R0
; 				Front&=0x0f;
			; SOURCE LINE # 66
	MOV  	A,@R0
	ANL  	A,#0FH
	MOV  	R6,A
	MOV  	@R0,A
; 				BufFlag=NOTFULL;
			; SOURCE LINE # 67
	MOV  	DPTR,#BufFlag
	MOV  	A,#03H
	MOVX 	@DPTR,A
; 				if (Real==Front)
			; SOURCE LINE # 68
	DEC  	R0
	MOV  	A,@R0
	CJNE 	A,AR6,?C0005
; 					BufFlag=EMPTY;
			; SOURCE LINE # 69
	CLR  	A
	MOVX 	@DPTR,A
?C0005:
; 				return(x);	
			; SOURCE LINE # 70
	RET  	
; 			  }
			; SOURCE LINE # 71
?C0004:
; 			 //else 	
;     		return(0);	
			; SOURCE LINE # 73
	MOV  	R7,#00H
; 	     }
			; SOURCE LINE # 74
?C0006:
	RET  	
; END OF GetKey

;   
; //--------------------------------------
; // key scan  function 
; // scan the key and put the key into key  buffer 
; //-----------------------------------------------
;   KeyScan()

	RSEG  ?PR?KeyScan?KEYPADDRIVE
KeyScan:
	USING	0
			; SOURCE LINE # 80
; 	{unchar x0,x1,x2,x3;
			; SOURCE LINE # 81
; 	 
; 	 switch(KeyPadStatus)
			; SOURCE LINE # 83
	MOV  	R0,#LOW (KeyPadStatus)
	MOV  	A,@R0
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0029
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0031
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0053
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0055
	ADD  	A,#04H
	JZ   	$ + 5H
	LJMP 	?C0065
;         {
			; SOURCE LINE # 84
; 	 case 0  : 
			; SOURCE LINE # 85
?C0008:
; //--------------------------------------------------------------------------
; // scan the first row
; //--------------------------------------------------------------------------
;                       KEY_ROW = Row[0];
			; SOURCE LINE # 89
	MOV  	DPTR,#Row
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DPTR,#02000H
	MOVX 	@DPTR,A
; 					 
;                       Key=KEY_VERTICAL;
			; SOURCE LINE # 91
	MOV  	DPTR,#0A000H
	MOVX 	A,@DPTR
	MOV  	Key,A
; 					//	while(1);
; 					  
; 					 if (Key )
			; SOURCE LINE # 94
	JZ   	?C0009
; 						{
			; SOURCE LINE # 95
; 					  if (Vertical0)
			; SOURCE LINE # 96
	JNB  	Vertical0,?C0010
; 						  {
			; SOURCE LINE # 97
;                           Temp=KeyElement0[0];
			; SOURCE LINE # 98
	MOV  	DPTR,#KeyElement0
; 						   KeyPadStatus=1;
			; SOURCE LINE # 99
;                           break;
			; SOURCE LINE # 100
	LJMP 	?C0080
; 					      }
			; SOURCE LINE # 101
?C0010:
; 						    
; 					  if  (Vertical1)
			; SOURCE LINE # 103
	JNB  	Vertical1,?C0011
;                           {
			; SOURCE LINE # 104
;                           Temp=KeyElement0[1];
			; SOURCE LINE # 105
	MOV  	DPTR,#KeyElement0+01H
?C0066:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 107
;                           break;
			; SOURCE LINE # 108
	LJMP 	?C0080
; 					      }
			; SOURCE LINE # 109
?C0011:
;                       if  (Vertical2)
			; SOURCE LINE # 110
	JNB  	Vertical2,?C0012
;                           {
			; SOURCE LINE # 111
;                           Temp=KeyElement0[2];
			; SOURCE LINE # 112
	MOV  	DPTR,#KeyElement0+02H
?C0067:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 114
;                           break;
			; SOURCE LINE # 115
	LJMP 	?C0080
; 					      }
			; SOURCE LINE # 116
?C0012:
; 					 if  (Vertical3)
			; SOURCE LINE # 117
	JNB  	Vertical3,?C0009
;                           {
			; SOURCE LINE # 118
;                           Temp=KeyElement0[3];
			; SOURCE LINE # 119
	MOV  	DPTR,#KeyElement0+03H
?C0068:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 121
;                          break;
			; SOURCE LINE # 122
	LJMP 	?C0080
; 					      }
			; SOURCE LINE # 123
; 						}
			; SOURCE LINE # 124
?C0009:
; //------------------------------------------------------------------------------
; // scan the secend  row
; //------------------------------------------------------------------------------
; 					  KEY_ROW = Row[1];    
			; SOURCE LINE # 128
	MOV  	DPTR,#Row+01H
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DPTR,#02000H
	MOVX 	@DPTR,A
;                       Key=KEY_VERTICAL;
			; SOURCE LINE # 129
	MOV  	DPTR,#0A000H
	MOVX 	A,@DPTR
	MOV  	Key,A
; 					 if (Key)
			; SOURCE LINE # 130
	JZ   	?C0014
; 						{
			; SOURCE LINE # 131
; 					  if (Vertical0)
			; SOURCE LINE # 132
	JNB  	Vertical0,?C0015
; 						  {
			; SOURCE LINE # 133
;                           Temp=KeyElement1[0];
			; SOURCE LINE # 134
	MOV  	DPTR,#KeyElement1
?C0069:
; 						   KeyPadStatus=1;
			; SOURCE LINE # 135
;                           break;
			; SOURCE LINE # 136
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 137
?C0015:
; 						    
; 					  if  (Vertical1)
			; SOURCE LINE # 139
	JNB  	Vertical1,?C0016
;                           {
			; SOURCE LINE # 140
;                           Temp=KeyElement1[1];
			; SOURCE LINE # 141
	MOV  	DPTR,#KeyElement1+01H
?C0070:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 143
;                           break;
			; SOURCE LINE # 144
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 145
?C0016:
;                       if  (Vertical2)
			; SOURCE LINE # 146
	JNB  	Vertical2,?C0017
;                           {
			; SOURCE LINE # 147
;                           Temp=KeyElement1[2];
			; SOURCE LINE # 148
	MOV  	DPTR,#KeyElement1+02H
?C0071:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 150
;                           break;
			; SOURCE LINE # 151
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 152
?C0017:
; 					 if  (Vertical3)
			; SOURCE LINE # 153
	JNB  	Vertical3,?C0014
;                           {
			; SOURCE LINE # 154
;                           Temp=KeyElement1[3];
			; SOURCE LINE # 155
	MOV  	DPTR,#KeyElement1+03H
?C0072:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 157
;                           break;
			; SOURCE LINE # 158
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 159
; 						}
			; SOURCE LINE # 160
?C0014:
; //------------------------------------------------------------------------------
; // scan the third  row
; //------------------------------------------------------------------------------
; 					  KEY_ROW = Row[2];    
			; SOURCE LINE # 164
	MOV  	DPTR,#Row+02H
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DPTR,#02000H
	MOVX 	@DPTR,A
;                       Key=KEY_VERTICAL;
			; SOURCE LINE # 165
	MOV  	DPTR,#0A000H
	MOVX 	A,@DPTR
	MOV  	Key,A
; 					 if (Key)
			; SOURCE LINE # 166
	JZ   	?C0019
; 						{
			; SOURCE LINE # 167
; 					  if (Vertical0)
			; SOURCE LINE # 168
	JNB  	Vertical0,?C0020
; 						  {
			; SOURCE LINE # 169
;                           Temp=KeyElement2[0];
			; SOURCE LINE # 170
	MOV  	DPTR,#KeyElement2
?C0073:
; 						   KeyPadStatus=1;
			; SOURCE LINE # 171
;                           break;
			; SOURCE LINE # 172
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 173
?C0020:
; 						    
; 					  if  (Vertical1)
			; SOURCE LINE # 175
	JNB  	Vertical1,?C0021
;                           {
			; SOURCE LINE # 176
;                           Temp=KeyElement2[1];
			; SOURCE LINE # 177
	MOV  	DPTR,#KeyElement2+01H
?C0074:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 179
;                           break;
			; SOURCE LINE # 180
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 181
?C0021:
;                       if  (Vertical2)
			; SOURCE LINE # 182
	JNB  	Vertical2,?C0022
;                           {
			; SOURCE LINE # 183
;                           Temp=KeyElement2[2];
			; SOURCE LINE # 184
	MOV  	DPTR,#KeyElement2+02H
?C0075:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 186
;                           break;
			; SOURCE LINE # 187
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 188
?C0022:
; 					 if  (Vertical3)
			; SOURCE LINE # 189
	JNB  	Vertical3,?C0019
;                           {
			; SOURCE LINE # 190
;                           Temp=KeyElement2[3];
			; SOURCE LINE # 191
	MOV  	DPTR,#KeyElement2+03H
?C0076:
; 
;                           KeyPadStatus=1;
			; SOURCE LINE # 193
;                           break;
			; SOURCE LINE # 194
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 195
; 						}
			; SOURCE LINE # 196
?C0019:
; //------------------------------------------------------------------------------
; // scan the fourth  row
; //------------------------------------------------------------------------------
; 					  KEY_ROW = Row[3];    
			; SOURCE LINE # 200
	MOV  	DPTR,#Row+03H
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	DPTR,#02000H
	MOVX 	@DPTR,A
;                       Key=KEY_VERTICAL;
			; SOURCE LINE # 201
	MOV  	DPTR,#0A000H
	MOVX 	A,@DPTR
	MOV  	Key,A
; 					if (Key)
			; SOURCE LINE # 202
	JNZ  	$ + 5H
	LJMP 	?C0065
; 						{
			; SOURCE LINE # 203
; 					  if (Vertical0)
			; SOURCE LINE # 204
	JNB  	Vertical0,?C0025
; 						  {
			; SOURCE LINE # 205
;                           Temp=KeyElement3[0];
			; SOURCE LINE # 206
	MOV  	DPTR,#KeyElement3
?C0077:
; 						   KeyPadStatus=1;
			; SOURCE LINE # 207
;                          break;
			; SOURCE LINE # 208
	SJMP 	?C0080
; 					      }
			; SOURCE LINE # 209
?C0025:
; 						    
; 					  if  (Vertical1)
			; SOURCE LINE # 211
	JNB  	Vertical1,?C0026
;                           {
			; SOURCE LINE # 212
;                           Temp=KeyElement3[1];

⌨️ 快捷键说明

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