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

📄 main.src

📁 c8051f310xmodembootloader.rar
💻 SRC
📖 第 1 页 / 共 3 页
字号:
			; SOURCE LINE # 309
	CLR  	LEDG
	SETB 	LEDR
?C0041:
;       delayms(100);
			; SOURCE LINE # 310
	MOV  	R7,#064H
	MOV  	R6,#00H
	LCALL	_delayms
;       BELL_OFF;
			; SOURCE LINE # 311
	CLR  	BELL
;       if(RG==RED) {LEDR_OFF;}
			; SOURCE LINE # 312
	MOV  	DPTR,#RG?243
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0042
	SETB 	LEDR
	SJMP 	?C0043
?C0042:
; 	  else
;       {LEDG_OFF;}
			; SOURCE LINE # 314
	SETB 	LEDG
?C0043:
; 	  delayms(200);	                             //多次蜂鸣需要间隔延时
			; SOURCE LINE # 315
	MOV  	R7,#0C8H
	MOV  	R6,#00H
	LCALL	_delayms
; 	}
			; SOURCE LINE # 316
	MOV  	DPTR,#i?244
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0037
;   }
			; SOURCE LINE # 317
; }
			; SOURCE LINE # 318
?C0044:
	RET  	
; END OF _Beef

; 
;  void BeefL(UCHAR be,UCHAR RG)

	RSEG  ?PR?_BeefL?MAIN
_BeefL:
	USING	0
			; SOURCE LINE # 320
	MOV  	DPTR,#RG?346
	MOV  	A,R5
	MOVX 	@DPTR,A
	MOV  	DPTR,#be?345
	MOV  	A,R7
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 321
;  UCHAR i;
; 
;   if(be==1)
			; SOURCE LINE # 324
	XRL  	A,#01H
	JNZ  	?C0045
;   {
			; SOURCE LINE # 325
;       BELL_ON;
			; SOURCE LINE # 326
	SETB 	BELL
;       if(RG==RED) {LEDR_ON;}
			; SOURCE LINE # 327
	INC  	DPTR
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0046
	CLR  	LEDR
	SETB 	LEDG
	SJMP 	?C0047
?C0046:
; 	  else
;       {LEDG_ON;}
			; SOURCE LINE # 329
	CLR  	LEDG
	SETB 	LEDR
?C0047:
;       delayms(500);
			; SOURCE LINE # 330
	MOV  	R7,#0F4H
	MOV  	R6,#01H
	LCALL	_delayms
;       BELL_OFF;			                         //单次蜂鸣
			; SOURCE LINE # 331
	CLR  	BELL
;       if(RG==RED) {LEDR_OFF;}
			; SOURCE LINE # 332
	MOV  	DPTR,#RG?346
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0048
	SETB 	LEDR
	RET  	
?C0048:
; 	  else
;       {LEDG_OFF;}
			; SOURCE LINE # 334
	SETB 	LEDG
;   }
			; SOURCE LINE # 335
	RET  	
?C0045:
; 
;   else
;   {
			; SOURCE LINE # 338
;    for(i=0;i<be;i++)
			; SOURCE LINE # 339
	CLR  	A
	MOV  	DPTR,#i?347
	MOVX 	@DPTR,A
?C0051:
	MOV  	DPTR,#be?345
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#i?347
	MOVX 	A,@DPTR
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0058
;    {
			; SOURCE LINE # 340
; 	  BELL_ON;
			; SOURCE LINE # 341
	SETB 	BELL
;       if(RG==RED) {LEDR_ON;}
			; SOURCE LINE # 342
	MOV  	DPTR,#RG?346
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0054
	CLR  	LEDR
	SETB 	LEDG
	SJMP 	?C0055
?C0054:
; 	  else
;       {LEDG_ON;}
			; SOURCE LINE # 344
	CLR  	LEDG
	SETB 	LEDR
?C0055:
;       delayms(300);
			; SOURCE LINE # 345
	MOV  	R7,#02CH
	MOV  	R6,#01H
	LCALL	_delayms
;       BELL_OFF;
			; SOURCE LINE # 346
	CLR  	BELL
;       if(RG==RED) {LEDR_OFF;}
			; SOURCE LINE # 347
	MOV  	DPTR,#RG?346
	MOVX 	A,@DPTR
	CJNE 	A,#01H,?C0056
	SETB 	LEDR
	SJMP 	?C0057
?C0056:
; 	  else
;       {LEDG_OFF;}
			; SOURCE LINE # 349
	SETB 	LEDG
?C0057:
; 	  delayms(200);	                             //多次蜂鸣需要间隔延时
			; SOURCE LINE # 350
	MOV  	R7,#0C8H
	MOV  	R6,#00H
	LCALL	_delayms
;     }
			; SOURCE LINE # 351
	MOV  	DPTR,#i?347
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0051
;   }
			; SOURCE LINE # 352
; }
			; SOURCE LINE # 353
?C0058:
	RET  	
; END OF _BeefL

; 
; 
; /******************************************************************************
; ** 函数: SYSCLK_Init ()
; ** 入参: 
; ** 返回: 
; ** 说明:
; ** SYSCLK_Init
; ** This routine initializes the system clock to use the internal oscillator
; ** at its maximum frequency.
; ** Also enables the Missing Clock Detector.
; ******************************************************************************/
; 
; void SYSCLK_Init (void)

	RSEG  ?PR?SYSCLK_Init?MAIN
SYSCLK_Init:
			; SOURCE LINE # 367
; {
			; SOURCE LINE # 368
;    OSCICN |= 0x03;                               // Configure internal oscillator for
			; SOURCE LINE # 369
	ORL  	OSCICN,#03H
;                                                  // its maximum frequency
;    RSTSRC = 0x04;                                // Enable missing clock detector
			; SOURCE LINE # 371
	MOV  	RSTSRC,#04H
;      								     
; }
			; SOURCE LINE # 373
	RET  	
; END OF SYSCLK_Init

; 
; /******************************************************************************
; ** 函数: delay()
; ** 入参: unsigned int m
; ** 返回: 
; ** 说明:
; ******************************************************************************/
; 
; void delay(unsigned int m)

	RSEG  ?PR?_delay?MAIN
_delay:
	USING	0
			; SOURCE LINE # 382
;---- Variable 'm?548' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 383
;    unsigned int n;
;    n=0;
			; SOURCE LINE # 385
;---- Variable 'n?549' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0060:
;    while(n<m)
			; SOURCE LINE # 386
	CLR  	C
	MOV  	A,R5
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0062
;    {n++;}
			; SOURCE LINE # 387
	INC  	R5
	CJNE 	R5,#00H,?C0078
	INC  	R4
?C0078:
	SJMP 	?C0060
;    return;
; }
			; SOURCE LINE # 389
?C0062:
	RET  	
; END OF _delay

; 
; 
; /******************************************************************************
; ** 函数:  PCA_Init
; ** 入参:  无
; ** 返回:  误
; ** 说明:  脉冲捕获初始化
; ******************************************************************************/
; 
; void PCA_Init (void)

	RSEG  ?PR?PCA_Init?MAIN
PCA_Init:
			; SOURCE LINE # 399
; {
			; SOURCE LINE # 400
; 	EIE1     = 0x10;		                     //允许PCA0中断请求		
			; SOURCE LINE # 401
	MOV  	EIE1,#010H
;    
; 	PCA0L	 = 0x00;
			; SOURCE LINE # 403
	CLR  	A
	MOV  	PCA0L,A
; 	PCA0H	 = 0x00;
			; SOURCE LINE # 404
	MOV  	PCA0H,A
; 
; 	PCA0CPM0 = 0x11;	
			; SOURCE LINE # 406
	MOV  	PCA0CPM0,#011H
; 	PCA0CPL0 = 0x00;
			; SOURCE LINE # 407
	MOV  	PCA0CPL0,A
; 	PCA0CPH0 = 0x20;
			; SOURCE LINE # 408
	MOV  	PCA0CPH0,#020H
; 
; 
;     PCA0CPM1 = 0x11;	
			; SOURCE LINE # 411
	MOV  	PCA0CPM1,#011H
; 	PCA0CPL1 = 0x00;
			; SOURCE LINE # 412
	MOV  	PCA0CPL1,A
; 	PCA0CPH1 = 0x20;
			; SOURCE LINE # 413
	MOV  	PCA0CPH1,#020H
; 
; 	PCA0CN   = 0x40;		                     //允许PCA定时器/计数器
			; SOURCE LINE # 415
	MOV  	PCA0CN,#040H
; 
; }
			; SOURCE LINE # 417
	RET  	
; END OF PCA_Init

CSEG	AT	0005BH
	LJMP	PCA_ISR

; /******************************************************************************
; ** 函数:  PCA_ISR
; ** 入参:  无
; ** 返回:  无
; ** 说明:  脉冲捕获中断服务程序
; ******************************************************************************/
; 
; void PCA_ISR (void) interrupt 11

	RSEG  ?PR?PCA_ISR?MAIN
	USING	0
PCA_ISR:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR0
	PUSH 	AR6
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 425
; {
; 
; 
; 	CF   = 0;			                         //脉冲中断清标记
			; SOURCE LINE # 429
	CLR  	CF
; 
; 	wie_str=1;				                     //设置标记提供TIME0检测
			; SOURCE LINE # 431
	SETB 	wie_str
;     RE_LOAD_TIME0;
			; SOURCE LINE # 432
	MOV  	TH0,#00H
	MOV  	TL0,TH0
; 				                                 //重载定时器0
; 	
; 
;   if(CCF0==1)				                     //查看d0 or d1
			; SOURCE LINE # 436
	JNB  	CCF0,?C0064
;   {
			; SOURCE LINE # 437
; 	CCF0 = 0;		                             //清匹配中断标志
			; SOURCE LINE # 438
	CLR  	CCF0
; 	
; 	wiebuf_cout[wie_cout]<<=1;	
			; SOURCE LINE # 440
	MOV  	R0,#LOW (wie_cout)
	MOV  	A,@R0
	MOV  	R7,A
	ADD  	A,#LOW (wiebuf_cout)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf_cout)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	ADD  	A,ACC
	MOVX 	@DPTR,A
; 	wiebuf_cout[wie_cout] |=0;
			; SOURCE LINE # 441
	MOV  	A,#LOW (wiebuf_cout)
	ADD  	A,R7
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf_cout)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOVX 	@DPTR,A
; 	wie_8bit--;
			; SOURCE LINE # 442
	MOV  	R0,#LOW (wie_8bit)
	DEC  	@R0
; 
;   }
			; SOURCE LINE # 444
?C0064:
; 
; 
;   if(CCF1==1)
			; SOURCE LINE # 447
	JNB  	CCF1,?C0065
;   {
			; SOURCE LINE # 448
; 	CCF1 = 0;
			; SOURCE LINE # 449
	CLR  	CCF1
; 	wiebuf_cout[wie_cout]<<=1;
			; SOURCE LINE # 450
	MOV  	R0,#LOW (wie_cout)
	MOV  	A,@R0
	MOV  	R7,A
	ADD  	A,#LOW (wiebuf_cout)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf_cout)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	ADD  	A,ACC
	MOVX 	@DPTR,A
;     wiebuf_cout[wie_cout] |=1;	
			; SOURCE LINE # 451
	MOV  	A,#LOW (wiebuf_cout)
	ADD  	A,R7
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (wiebuf_cout)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	ORL  	A,#01H
	MOVX 	@DPTR,A
; 	wie_8bit--;
			; SOURCE LINE # 452
	MOV  	R0,#LOW (wie_8bit)
	DEC  	@R0
;   }
			; SOURCE LINE # 453
?C0065:
; 
; 
;    if(!wie_8bit)				                 //8bit 1字节溢出归0,数组指针+1
			; SOURCE LINE # 456
	MOV  	R0,#LOW (wie_8bit)
	MOV  	A,@R0
	JNZ  	?C0066
;    {
			; SOURCE LINE # 457
;     wie_cout++;
			; SOURCE LINE # 458
	MOV  	R0,#LOW (wie_cout)
	INC  	@R0
;     wie_8bit=8;
			; SOURCE LINE # 459
	MOV  	R0,#LOW (wie_8bit)
	MOV  	@R0,#08H
;    }
			; SOURCE LINE # 460
?C0066:
; 
;    				   
;    if(wie_cout>=32)			                     //最多接收32字节wiegand信号
			; SOURCE LINE # 463
	MOV  	R0,#LOW (wie_cout)
	MOV  	A,@R0
	CLR  	C
	SUBB 	A,#020H
	JC   	?C0068
;    {
			; SOURCE LINE # 464
; 	CLR_WIEBUF_COUT;
			; SOURCE LINE # 465
	MOV  	@R0,#00H
	MOV  	R0,#LOW (wie_8bit)
	MOV  	@R0,#08H
;    }
			; SOURCE LINE # 466
;    		
; }
			; SOURCE LINE # 468
?C0068:
	POP  	AR7
	POP  	AR6
	POP  	AR0
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
; END OF PCA_ISR

; /******************************************************************************
; ** 函数:  relay_work
; ** 入参:  无
; ** 返回:  无
; ** 说明:  继电器动作
; ******************************************************************************/
; void relay_work()

	RSEG  ?PR?relay_work?MAIN
relay_work:
	USING	0
			; SOURCE LINE # 475
; {
			; SOURCE LINE # 476
;     if(TRIG==1)	                                 //非外部触发信号
			; SOURCE LINE # 477
	JNB  	TRIG,?C0069
;     {
			; SOURCE LINE # 478
; 	  if(WIE_CK==0)                              //既进又出
			; SOURCE LINE # 479
	JB   	WIE_CK,?C0070
; 	  {
			; SOURCE LINE # 480
; 	    RELAY_IN=0;
			; SOURCE LINE # 481
	CLR  	RELAY_IN
; 	    RELAY_OUT=0;
			; SOURCE LINE # 482
	CLR  	RELAY_OUT
; 	  }
			; SOURCE LINE # 483
	RET  	
?C0070:
; 
; 	  else
; 	  {
			; SOURCE LINE # 486
; 	      if(IN_OUT==1)                          //根据卡标记动作
			; SOURCE LINE # 487
	JNB  	IN_OUT,?C0072
; 		  {
			; SOURCE LINE # 488
; 		    RELAY_IN=0;
			; SOURCE LINE # 489
	CLR  	RELAY_IN
; 		  }
			; SOURCE LINE # 490
	RET  	
?C0072:
; 		  else
; 		  {
			; SOURCE LINE # 492
; 		    RELAY_OUT=0;
			; SOURCE LINE # 493
	CLR  	RELAY_OUT
; 		  }
			; SOURCE LINE # 494
; 	  }
			; SOURCE LINE # 495
; 
;     }
			; SOURCE LINE # 497
	RET  	
?C0069:
;     else	                                     //外部触发信号
;     {
			; SOURCE LINE # 499
; 	  if(RELAY_TRIG_STATE==1)
			; SOURCE LINE # 500
	MOV  	R0,#LOW (RELAY_TRIG_STATE)
	MOV  	A,@R0
	CJNE 	A,#01H,?C0075
; 	  {
			; SOURCE LINE # 501
; 	    RELAY_IN=0;                              //如果触发的是进门,开进门继电器
			; SOURCE LINE # 502
	CLR  	RELAY_IN
; 	  }
			; SOURCE LINE # 503
	RET  	
?C0075:
; 	  else
; 	  {
			; SOURCE LINE # 505
; 	    RELAY_OUT=0;
			; SOURCE LINE # 506
	CLR  	RELAY_OUT
; 	  }
			; SOURCE LINE # 507
; 		
; 	} 
			; SOURCE LINE # 509
; }
			; SOURCE LINE # 510
?C0077:
	RET  	
; END OF relay_work

	END

⌨️ 快捷键说明

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