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

📄 main.src

📁 读写ID卡源代码
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	RSEG  ?PR?init?MAIN
init:
			; SOURCE LINE # 127
; {
			; SOURCE LINE # 128
; 
; //		 TMOD=0x21;
; 		 TMOD=0x12;     //定时器0为8位自动重装;定时器1为16位计数器工作方式
			; SOURCE LINE # 131
	MOV  	TMOD,#012H
; 		 IP=0x00;
			; SOURCE LINE # 132
	CLR  	A
	MOV  	IP,A
; 		 TCON=1;         //外部中断0的触发方式为边沿方式
			; SOURCE LINE # 133
	MOV  	TCON,#01H
; 		 SCON=0x50;
			; SOURCE LINE # 134
	MOV  	SCON,#050H
; 		 PCON|=0x80;           //dual 4800X2=9600
			; SOURCE LINE # 135
	ORL  	PCON,#080H
; 
; //		 TH1=TL1=0xf4;      //fosc=22.1184Mhz baud=9600    TH1=TL1=256-(24000000/4800/32/12+0.5)
; //		 TH1=TL1=0xe8;         //22.1184MHZ
; //		 TH1=TL1=256-(40000000/2400/32/12+0.5);
; //		 TH1=TL1=0xD4;     //40MHZ
; //		 TH0=0xfc;           //1ms time
; //		 TL0=0x66;
; //		 IE=0x12;
; //		 TR0=1;
; //		 TR1=1;
; 		 ES=1;
			; SOURCE LINE # 146
	SETB 	ES
;   
; //  LED = OFF;
; //  delay_10ms(50);
; //  LED = ON;
; 
; //  IT0 = 1;    			// Config ext0 as edge trigger for RC500
; //  EX0 = 1; 			// Enable ext0 interrupt for RC500
; 
; //  EA = TRUE;			// Enable all interrupts
; 
; }
			; SOURCE LINE # 157
	RET  	
; END OF init

; void m_readcard(void)

	RSEG  ?PR?m_readcard?MAIN
m_readcard:
			; SOURCE LINE # 158
; {
			; SOURCE LINE # 159
; 	TR0=0;
			; SOURCE LINE # 160
	CLR  	TR0
; 	ET0=0;
			; SOURCE LINE # 161
	CLR  	ET0
; 	PX0=1;
			; SOURCE LINE # 162
	SETB 	PX0
; 	m_sta=0;
			; SOURCE LINE # 163
	CLR  	A
	MOV  	DPTR,#m_sta
	MOVX 	@DPTR,A
; 	TH0=0x16;
			; SOURCE LINE # 164
	MOV  	TH0,#016H
; 	m_flag=0;
			; SOURCE LINE # 165
	CLR  	m_flag
; 	short_flag=0;
			; SOURCE LINE # 166
	CLR  	short_flag
; 	EX0=1;
			; SOURCE LINE # 167
	SETB 	EX0
; 	EA=1;
			; SOURCE LINE # 168
	SETB 	EA
; 
; }
			; SOURCE LINE # 170
	RET  	
; END OF m_readcard

; unsigned char CMP_STRING(unsigned char *pt1,

	RSEG  ?PR?_CMP_STRING?MAIN
_CMP_STRING:
	USING	0
			; SOURCE LINE # 171
	MOV  	DPTR,#pt1?349
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
;                          unsigned char *pt2,unsigned char len)
; {
			; SOURCE LINE # 173
;      unsigned char ct;         // fixed lenth 4.
;      for (ct=0;ct<len;ct++)
			; SOURCE LINE # 175
;---- Variable 'ct?352' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0008:
	MOV  	DPTR,#len?351
	MOVX 	A,@DPTR
	MOV  	R6,A
	MOV  	A,R7
	CLR  	C
	SUBB 	A,R6
	JNC  	?C0009
;      {
			; SOURCE LINE # 176
;          if (*pt1++ != *pt2++)
			; SOURCE LINE # 177
	MOV  	DPTR,#pt2?350
	LCALL	L?0035
	MOV  	R6,A
	MOV  	DPTR,#pt1?349
	LCALL	L?0035
	XRL  	A,R6
	JZ   	?C0010
;          return 1;
			; SOURCE LINE # 178
	MOV  	R7,#01H
	RET  	
;      }
			; SOURCE LINE # 179
?C0010:
	INC  	R7
	SJMP 	?C0008
?C0009:
;      return 0;                 // equal return 0. 	
			; SOURCE LINE # 180
	MOV  	R7,#00H
; }
			; SOURCE LINE # 181
?C0012:
	RET  	
; END OF _CMP_STRING

; 
; void 	delay_10ms (uint _10ms)

	RSEG  ?PR?_delay_10ms?MAIN
_delay_10ms:
	USING	0
			; SOURCE LINE # 183
;---- Variable '_10ms?453' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 184
;  
;    ET2 = 0; 	// Disable timer2 interrupt
			; SOURCE LINE # 186
	CLR  	ET2
;   T2CON = 0x04;	// 16-bit auto-reload, clear TF2, start timer
			; SOURCE LINE # 187
	MOV  	T2CON,#04H
?C0013:
;   while (_10ms--)
			; SOURCE LINE # 188
	MOV  	A,R7
	DEC  	R7
	MOV  	R4,AR6
	JNZ  	?C0032
	DEC  	R6
?C0032:
	ORL  	A,R4
	JZ   	?C0014
;   {
			; SOURCE LINE # 189
?C0015:
; 	while (!TF2)
			; SOURCE LINE # 190
	JB   	TF2,?C0016
; 	{
			; SOURCE LINE # 191
; //	  if (CmdValid || CmdReceived)
; 	  {
			; SOURCE LINE # 193
; 		TR2 = FALSE;
			; SOURCE LINE # 194
	CLR  	TR2
; 		TF2 = FALSE;
			; SOURCE LINE # 195
	CLR  	TF2
	RET  	
; 		return;
; 	  }
			; SOURCE LINE # 197
; 	}
			; SOURCE LINE # 198
?C0016:
; 	TF2 = FALSE;
			; SOURCE LINE # 199
	CLR  	TF2
; }
			; SOURCE LINE # 200
	SJMP 	?C0013
?C0014:
;   TR2 = FALSE;
			; SOURCE LINE # 201
	CLR  	TR2
; }
			; SOURCE LINE # 202
?C0017:
	RET  	
; END OF _delay_10ms

CSEG	AT	0000BH
	LJMP	isr_timer0

; 
; /****************************************************************************
; 
; ****************************************************************************/
; void 	isr_timer0(void) interrupt 1 using 2

	RSEG  ?PR?isr_timer0?MAIN
	USING	2
isr_timer0:
			; SOURCE LINE # 207
; {
; 
; }
			; SOURCE LINE # 210
	RETI 	
; END OF isr_timer0

CSEG	AT	00023H
	LJMP	receive_send

; 
; 
; /*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 		uart interrupt 4
; 		receive_send
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
; void receive_send() interrupt 4

	RSEG  ?PR?receive_send?MAIN
	USING	0
receive_send:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR6
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 217
; {
; 		unsigned char s;
; 		ES=0;
			; SOURCE LINE # 220
	CLR  	ES
; 		if(RI)
			; SOURCE LINE # 221
	JNB  	RI,?C0019
; 		{
			; SOURCE LINE # 222
; 			RI=0;
			; SOURCE LINE # 223
	CLR  	RI
; 			s=SBUF;
			; SOURCE LINE # 224
;---- Variable 's?654' assigned to Register 'R7' ----
	MOV  	R7,SBUF
; 			if((rxhead==0)&&(s!=0x02))
			; SOURCE LINE # 225
	MOV  	DPTR,#rxhead
	MOVX 	A,@DPTR
	JNZ  	?C0020
	MOV  	A,R7
	XRL  	A,#02H
	JZ   	?C0020
; 			{
			; SOURCE LINE # 226
; 				rxhead=0;
			; SOURCE LINE # 227
	CLR  	A
	MOVX 	@DPTR,A
; 				ES=1;
			; SOURCE LINE # 228
	SETB 	ES
; 			}
			; SOURCE LINE # 229
?C0020:
; 			receive_buf1[rxhead++]=s;
			; SOURCE LINE # 230
	MOV  	DPTR,#rxhead
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	A
	MOVX 	@DPTR,A
	MOV  	A,#LOW (receive_buf1)
	ADD  	A,R6
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (receive_buf1)
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
; 			if(s==0x03)
			; SOURCE LINE # 231
	CJNE 	A,#03H,?C0022
; 			{
			; SOURCE LINE # 232
; 					receive_flag=1;
			; SOURCE LINE # 233
	SETB 	receive_flag
; 					rxhead=0;
			; SOURCE LINE # 234
	MOV  	DPTR,#rxhead
	CLR  	A
	MOVX 	@DPTR,A
; 					ES=1;
			; SOURCE LINE # 235
	SETB 	ES
; 			}
			; SOURCE LINE # 236
; 	     }
			; SOURCE LINE # 237
	SJMP 	?C0022
?C0019:
; 		else if(TI)
			; SOURCE LINE # 238
	JNB  	TI,?C0022
; 		{
			; SOURCE LINE # 239
; 			TI=0;
			; SOURCE LINE # 240
	CLR  	TI
; 			ES=1;
			; SOURCE LINE # 241
	SETB 	ES
	SJMP 	?C0024
; 			return;
; 		}
			; SOURCE LINE # 243
?C0022:
; 		ES=1;
			; SOURCE LINE # 244
	SETB 	ES
; }	
			; SOURCE LINE # 245
?C0024:
	POP  	AR7
	POP  	AR6
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
; END OF receive_send

; /***************************************************************************/
; 
; void flash_led(void)

	RSEG  ?PR?flash_led?MAIN
flash_led:
	USING	0
			; SOURCE LINE # 248
; {
			; SOURCE LINE # 249
; 	unsigned int i;
; 	LED=0;
			; SOURCE LINE # 251
	CLR  	LED
; 	for(i=0;i<800;i++);
			; SOURCE LINE # 252
;---- Variable 'i?755' assigned to Register 'R6/R7' ----
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
?C0025:
	INC  	R7
	CJNE 	R7,#00H,?C0033
	INC  	R6
?C0033:
	CJNE 	R6,#03H,?C0025
	CJNE 	R7,#020H,?C0025
?C0026:
; 	LED=1;
			; SOURCE LINE # 253
	SETB 	LED
; 
; }
			; SOURCE LINE # 255
	RET  	
; END OF flash_led

CSEG	AT	00003H
	LJMP	EM_REV

; /////////////////////////////////////////////////
; 
; 
; void EM_REV (void) interrupt 0 using 1

	RSEG  ?PR?EM_REV?MAIN
	USING	1
EM_REV:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
			; SOURCE LINE # 259
; {
; 	TR0=0;
			; SOURCE LINE # 261
	CLR  	TR0
; 	TL0=0x89;                //定时为130uS;  0x89=137   137=256-(x/12000000/11059200)    x=130
			; SOURCE LINE # 262
	MOV  	TL0,#089H
; 	TF0=0;
			; SOURCE LINE # 263
	CLR  	TF0
; 	TR0=1;
			; SOURCE LINE # 264
	SETB 	TR0
; 	ET0=1;
			; SOURCE LINE # 265
	SETB 	ET0
; 	if(m_flag==0)
			; SOURCE LINE # 266
	JB   	m_flag,?C0031
; 	{
			; SOURCE LINE # 267
; 		if(short_flag==1)
			; SOURCE LINE # 268
	JNB  	short_flag,?C0031
; 		m_sta=0;
			; SOURCE LINE # 269
	MOV  	DPTR,#m_sta
	CLR  	A
	MOVX 	@DPTR,A
; 	}
			; SOURCE LINE # 270
; }
			; SOURCE LINE # 271
?C0031:
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
; END OF EM_REV

	END

⌨️ 快捷键说明

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