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

📄 main.src

📁 c8051f310xmodembootloader.rar
💻 SRC
📖 第 1 页 / 共 3 页
字号:
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	DPTR,#event_word_copy?041
	XCH  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R7
	MOVX 	@DPTR,A
; 
;           if(event_word_copy&event_uart_arrived)
			; SOURCE LINE # 118
	MOVX 	A,@DPTR
	JNB  	ACC.3,?C0006
; 		  {
			; SOURCE LINE # 119
; 			  EA=0;
			; SOURCE LINE # 120
	CLR  	EA
; 			  event_word&= ~(event_uart_arrived);//自毁完成任务标记
			; SOURCE LINE # 121
	MOV  	DPTR,#event_word+01H
	MOVX 	A,@DPTR
	ANL  	A,#0F7H
	MOVX 	@DPTR,A
; 			  EA=1;
			; SOURCE LINE # 122
	SETB 	EA
; 			  process_uart();
			; SOURCE LINE # 123
	LCALL	process_uart
; 		  }
			; SOURCE LINE # 124
?C0006:
; 
; 		  	  
; 		   		
; 		 
; /**********@task2@**********/		             //每100ms轮询无线标签   
; 		   if(event_word_copy&event_time_100ms)
			; SOURCE LINE # 130
	MOV  	DPTR,#event_word_copy?041+01H
	MOVX 	A,@DPTR
	JNB  	ACC.1,?C0007
; 		   {   
			; SOURCE LINE # 131
; 			   EA=0;
			; SOURCE LINE # 132
	CLR  	EA
; 			   event_word&= ~(event_time_100ms);
			; SOURCE LINE # 133
	MOV  	DPTR,#event_word+01H
	MOVX 	A,@DPTR
	ANL  	A,#0FDH
	MOVX 	@DPTR,A
; 			   EA=1;
			; SOURCE LINE # 134
	SETB 	EA
; 
; 			   if(((TRIG==0)&&(TRIG_STATE==1)) ||(TRIG==1))	  
			; SOURCE LINE # 136
	JB   	TRIG,?C0010
	JB   	TRIG_STATE,?C0009
?C0010:
	JNB  	TRIG,?C0007
?C0009:
; 			   {
			; SOURCE LINE # 137
; 			      								 //触发状态加触发或者非触发才询卡
; 			    SeekFrame(0x01);                 //普通寻卡
			; SOURCE LINE # 139
	MOV  	R7,#01H
	LCALL	_SeekFrame
;                 txregframe(FRAME_LEN);
			; SOURCE LINE # 140
	MOV  	R7,#012H
	LCALL	_txregframe
; 			   }
			; SOURCE LINE # 141
; 			       
; 		   }
			; SOURCE LINE # 143
?C0007:
; 	
; /**********@task3@**********/                    //1s基准处理时间事件
; 		  if(event_word_copy&event_time_1000ms)  
			; SOURCE LINE # 146
	MOV  	DPTR,#event_word_copy?041+01H
	MOVX 	A,@DPTR
	JB   	ACC.2,$ + 6H
	LJMP 	?C0011
; 		  {
			; SOURCE LINE # 147
; 			   EA=0;
			; SOURCE LINE # 148
	CLR  	EA
; 			   event_word&= ~(event_time_1000ms);
			; SOURCE LINE # 149
	MOV  	DPTR,#event_word+01H
	MOVX 	A,@DPTR
	ANL  	A,#0FBH
	MOVX 	@DPTR,A
; 			   EA=1;
			; SOURCE LINE # 150
	SETB 	EA
; 			  
; 			   for(nr=0;nr<10;nr++)				 //查询登记是否需要老化
			; SOURCE LINE # 152
	CLR  	A
	MOV  	DPTR,#nr?040
	MOVX 	@DPTR,A
?C0012:
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	SUBB 	A,#0AH
	JC   	$ + 5H
	LJMP 	?C0013
; 			   {
			; SOURCE LINE # 153
;                     if((tagnr[nr].save_inactivity)&&(tagnr[nr].save_state!=0))
			; SOURCE LINE # 154
	MOV  	A,R7
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+08H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+08H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JZ   	?C0015
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+07H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+07H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JZ   	?C0015
; 			        {
			; SOURCE LINE # 155
; 			            tagnr[nr].save_inactivity--;
			; SOURCE LINE # 156
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	MOV  	R6,A
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+08H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+08H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	DEC  	A
	MOVX 	@DPTR,A
; 				        if(tagnr[nr].save_inactivity==0)
			; SOURCE LINE # 157
	MOV  	A,R6
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+08H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+08H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JNZ  	?C0015
; 				        {
			; SOURCE LINE # 158
; 					       tagnr[nr].save_state=0;	 
			; SOURCE LINE # 159
	MOV  	A,R7
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+07H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+07H)
	MOV  	DPH,A
	CLR  	A
	MOVX 	@DPTR,A
; 					    }
			; SOURCE LINE # 160
; 			        }
			; SOURCE LINE # 161
?C0015:
; 
; 					if(tagnr[nr].save_inactivity==0)
			; SOURCE LINE # 163
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+08H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+08H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	JNZ  	?C0014
; 					{
			; SOURCE LINE # 164
; 					    tagnr[nr].save_state=0;	
			; SOURCE LINE # 165
	MOV  	A,R7
	MOV  	B,#09H
	MUL  	AB
	ADD  	A,#LOW (tagnr+07H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (tagnr+07H)
	MOV  	DPH,A
	CLR  	A
	MOVX 	@DPTR,A
; 					}
			; SOURCE LINE # 166
; 
; 
; 			   }
			; SOURCE LINE # 169
?C0014:
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	LJMP 	?C0012
?C0013:
; 
; 			   if(event_relay!=0)
			; SOURCE LINE # 171
	MOV  	R0,#LOW (event_relay)
	MOV  	A,@R0
	JZ   	?C0011
; 			   { 
			; SOURCE LINE # 172
; 			     event_relay--;
			; SOURCE LINE # 173
	DEC  	@R0
; 				   if(event_relay==0)
			; SOURCE LINE # 174
	MOV  	A,@R0
	JNZ  	?C0011
; 				   {
			; SOURCE LINE # 175
; 					  RELAY_IN=1;                //关闭继电器
			; SOURCE LINE # 176
	SETB 	RELAY_IN
; 					  RELAY_OUT=1;
			; SOURCE LINE # 177
	SETB 	RELAY_OUT
; 				   }
			; SOURCE LINE # 178
; 			   } 
			; SOURCE LINE # 179
; 			     
; 
; 		  }
			; SOURCE LINE # 182
?C0011:
; 
; 		
; 
; /**********@task4@**********/					 //处理接收的wiegand格式数据包
; 
; 		 if(event_word_copy&event_wie_arrived)
			; SOURCE LINE # 188
	MOV  	DPTR,#event_word_copy?041+01H
	MOVX 	A,@DPTR
	JNB  	ACC.4,?C0020
; 		 {
			; SOURCE LINE # 189
; 			 EA=0;
			; SOURCE LINE # 190
	CLR  	EA
; 			 event_word&= ~(event_wie_arrived);
			; SOURCE LINE # 191
	MOV  	DPTR,#event_word+01H
	MOVX 	A,@DPTR
	ANL  	A,#0EFH
	MOVX 	@DPTR,A
; 			 EA=1;
			; SOURCE LINE # 192
	SETB 	EA
; 
; 			 wie_str=0;	                         //清wiegand脉冲标记
			; SOURCE LINE # 194
	CLR  	wie_str
; 						                         //注意wie_cout半字节当一次处理
; 			 if(wie_cout==0)
			; SOURCE LINE # 196
	MOV  	R0,#LOW (wie_cout)
	MOV  	A,@R0
	JNZ  	?C0021
; 			 {wie_cout++;}
			; SOURCE LINE # 197
	INC  	@R0
?C0021:
; 			 for(nr=0;nr<wie_cout;nr++)
			; SOURCE LINE # 198
	CLR  	A
	MOV  	DPTR,#nr?040
	MOVX 	@DPTR,A
?C0022:
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	R0,#LOW (wie_cout)
	SUBB 	A,@R0
	JNC  	?C0023
; 			 {   
			; SOURCE LINE # 199
; 			   Printf_Char(wiebuf_cout[nr]);
			; SOURCE LINE # 200
	MOV  	A,#LOW (wiebuf_cout)
	ADD  	A,R7
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf_cout)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_Printf_Char
; 			 }		
			; SOURCE LINE # 201
	MOV  	DPTR,#nr?040
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0022
?C0023:
; 		     CLR_WIEBUF_COUT;
			; SOURCE LINE # 202
	CLR  	A
	MOV  	R0,#LOW (wie_cout)
	MOV  	@R0,A
	MOV  	R0,#LOW (wie_8bit)
	MOV  	@R0,#08H
; 		 }
			; SOURCE LINE # 203
?C0020:
; 
; /**********@task5@**********/					 //处理进出2路触发信号
;           if(TRIG_IN==0)
			; SOURCE LINE # 206
	JB   	TRIG_IN,?C0025
; 		  {
			; SOURCE LINE # 207
; 		    RELAY_TRIG_STATE=1;				     //当前进门
			; SOURCE LINE # 208
	MOV  	R0,#LOW (RELAY_TRIG_STATE)
	MOV  	@R0,#01H
; 			TRIG_STATE=1;
			; SOURCE LINE # 209
	SETB 	TRIG_STATE
; 		  }
			; SOURCE LINE # 210
	LJMP 	?C0003
?C0025:
; 		  else if(TRIG_OUT==0)
			; SOURCE LINE # 211
	JNB  	TRIG_OUT,$ + 6H
	LJMP 	?C0003
; 		  {
			; SOURCE LINE # 212
; 		    RELAY_TRIG_STATE=0;					 //当前出门
			; SOURCE LINE # 213
	CLR  	A
	MOV  	R0,#LOW (RELAY_TRIG_STATE)
	MOV  	@R0,A
; 			TRIG_STATE=1;
			; SOURCE LINE # 214
	SETB 	TRIG_STATE
; 		  }
			; SOURCE LINE # 215
	LJMP 	?C0003
; END OF main

; 		  else
; 		  {
; 		   ;
; 		  }
; /**********@task6@**********/	
; /**********@task7@**********/	
; /**********@task8@**********/	
; /**********@task9@**********/	
; /**********@task10@**********/	
; /**********@taskn@**********/					    
;   }
; }
; 
; 
; 
; /******************************************************************************
; ** 函数: PORT_Init ()
; ** 入参: 
; ** 返回: 
; ** 说明:
; ** PORT_Init
; ** Configure the Crossbar and GPIO ports.
; ** P0.4 - UART TX
; ** P0.5 - UART RX
; ** P3.3 - LED
; ******************************************************************************/
; void PORT_Init (void)

	RSEG  ?PR?PORT_Init?MAIN
PORT_Init:
			; SOURCE LINE # 242
; {
			; SOURCE LINE # 243
;    
;    P0SKIP    = 0xcf;					         //注意SPI没有配置成硬件,只是脚放在对应位置
			; SOURCE LINE # 245
	MOV  	P0SKIP,#0CFH
;    P1SKIP    = 0x03;				  	         //配置P1.2 P1.3 两端块脉冲捕获
			; SOURCE LINE # 246
	MOV  	P1SKIP,#03H
;    XBR0      = 0x01;                             // 使能 UART on P0.4(TX) and P0.5                    
			; SOURCE LINE # 247
	MOV  	XBR0,#01H
;    XBR1      = 0x42;
			; SOURCE LINE # 248
	MOV  	XBR1,#042H
;    P0MDOUT   = 0x1C;                             // 使能 UTX 为推挽输出  p0.2 p0.3
			; SOURCE LINE # 249
	MOV  	P0MDOUT,#01CH
;   
;    P3MDOUT  |= 0x06;				   	         //P3.1 P3.2 继电器
			; SOURCE LINE # 251
	ORL  	P3MDOUT,#06H
;    RELAY_IN  =1;
			; SOURCE LINE # 252
	SETB 	RELAY_IN
;    RELAY_OUT =1;
			; SOURCE LINE # 253
	SETB 	RELAY_OUT
;     
;    
;    P0MDOUT   = 0xfd;                             // sdo非推挽
			; SOURCE LINE # 256
	MOV  	P0MDOUT,#0FDH
;    P1MDOUT  |= 0xf3;					         // nsel p1.0 p1.1推挽  p1.4 p1.5 P1.6 P1.7 
			; SOURCE LINE # 257
	ORL  	P1MDOUT,#0F3H
;    P2MDOUT  |= 0xb0;					         // P2.7 P2.4 P2.5	 
			; SOURCE LINE # 258
	ORL  	P2MDOUT,#0B0H
; 
;    D0IN      = 0;
			; SOURCE LINE # 260
	CLR  	D0IN
;    D1IN      = 0;
			; SOURCE LINE # 261
	CLR  	D1IN
;    D0OUT     = 0;
			; SOURCE LINE # 262
	CLR  	D0OUT
;    D1OUT     = 0;
			; SOURCE LINE # 263
	CLR  	D1OUT
; 
;    BELL      = 0;					             //蜂鸣器关闭
			; SOURCE LINE # 265
	CLR  	BELL
;    LEDR      = 1;					             //LED关闭
			; SOURCE LINE # 266
	SETB 	LEDR
; 
;    sck       = 0;
			; SOURCE LINE # 268
	CLR  	sck
;    nsel      = 0;
			; SOURCE LINE # 269
	CLR  	nsel
;    sdi       = 1;
			; SOURCE LINE # 270
	SETB 	sdi
;    sdo       = 1;
			; SOURCE LINE # 271
	SETB 	sdo
; 
;    X_CS      = 1;                                //不选中AT25128 
			; SOURCE LINE # 273
	SETB 	X_CS
; 
; 	
; }
			; SOURCE LINE # 276
	RET  	
; END OF PORT_Init

; 
; /******************************************************************************
; ** 函数:beef(unchar be)
; ** 入参:be, rg 
; ** 返回: 
; ** 说明:
; 
; ******************************************************************************/
; void Beef(UCHAR be,UCHAR RG)

	RSEG  ?PR?_Beef?MAIN
_Beef:
	USING	0
			; SOURCE LINE # 285
	MOV  	DPTR,#RG?243
	MOV  	A,R5
	MOVX 	@DPTR,A
	MOV  	DPTR,#be?242
	MOV  	A,R7
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 286
;  UCHAR i;
; 
;   if(be==1)
			; SOURCE LINE # 289
	XRL  	A,#01H
	JNZ  	?C0031
;   {
			; SOURCE LINE # 290
;       BELL_ON;
			; SOURCE LINE # 291
	SETB 	BELL
; 	  if(RG==RED) {LEDR_ON;}
			; SOURCE LINE # 292
	INC  	DPTR
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0032
	CLR  	LEDR
	SETB 	LEDG
	SJMP 	?C0033
?C0032:
; 	  else
;       {LEDG_ON;}
			; SOURCE LINE # 294
	CLR  	LEDG
	SETB 	LEDR
?C0033:
;       delayms(100);
			; SOURCE LINE # 295
	MOV  	R7,#064H
	MOV  	R6,#00H
	LCALL	_delayms
;       BELL_OFF;			                         //单次蜂鸣
			; SOURCE LINE # 296
	CLR  	BELL
;       if(RG==RED) {LEDR_OFF;}
			; SOURCE LINE # 297
	MOV  	DPTR,#RG?243
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0034
	SETB 	LEDR
	RET  	
?C0034:
; 	  else
;       {LEDG_OFF;}
			; SOURCE LINE # 299
	SETB 	LEDG
;   }
			; SOURCE LINE # 300
	RET  	
?C0031:
; 
;   else
;   {
			; SOURCE LINE # 303
;     for(i=0;i<be;i++)
			; SOURCE LINE # 304
	CLR  	A
	MOV  	DPTR,#i?244
	MOVX 	@DPTR,A
?C0037:
	MOV  	DPTR,#be?242
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#i?244
	MOVX 	A,@DPTR
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0044
;     {
			; SOURCE LINE # 305
; 	  BELL_ON;
			; SOURCE LINE # 306
	SETB 	BELL
;       if(RG==RED) {LEDR_ON;}
			; SOURCE LINE # 307
	MOV  	DPTR,#RG?243
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0040
	CLR  	LEDR
	SETB 	LEDG
	SJMP 	?C0041
?C0040:
; 	  else
;       {LEDG_ON;}

⌨️ 快捷键说明

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