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

📄 sync.src

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 SRC
📖 第 1 页 / 共 4 页
字号:
	MOV  	R6,A
	MOV  	A,R7
	MOV  	R0,#03H
?C0100:
	CLR  	C
	RLC  	A
	XCH  	A,R6
	RLC  	A
	XCH  	A,R6
	DJNZ 	R0,?C0100
	MOV  	R7,A
	ADD  	A,#LOW (VsyncTbl+04H)
	MOV  	DPL,A
	MOV  	A,R6
	ADDC 	A,#HIGH (VsyncTbl+04H)
	MOV  	DPH,A
	LCALL	?C?PLDCODE
	MOV  	hsync_pt?241,R3
	MOV  	hsync_pt?241+01H,R2
	MOV  	hsync_pt?241+02H,R1
;         cnt = VsyncTbl[i].htbl_cnt;
			; SOURCE LINE # 393
	MOV  	A,#LOW (VsyncTbl+07H)
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,R6
	ADDC 	A,#HIGH (VsyncTbl+07H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	cnt?243,A
; 
;     // search HSync table
;     if (HsyncCnt < VsyncTbl[i].hsync_low)
			; SOURCE LINE # 396
	MOV  	A,#LOW (VsyncTbl+02H)
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,R6
	ADDC 	A,#HIGH (VsyncTbl+02H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R7,A
	CLR  	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R7
	MOV  	A,HsyncCnt
	SUBB 	A,R6
	JNC  	?C0040
;     {
			; SOURCE LINE # 397
;                 return MODE_OUTOFSYNC;              // out of sync
			; SOURCE LINE # 398
	MOV  	R7,#0F0H
	RET  	
;     }
			; SOURCE LINE # 399
?C0040:
; 
;     while (cnt--) {
			; SOURCE LINE # 401
	MOV  	R7,cnt?243
	DEC  	cnt?243
	MOV  	A,R7
	JZ   	?C0041
;         if (HsyncCnt < hsync_pt->hsync_hi) {
			; SOURCE LINE # 402
	MOV  	R3,hsync_pt?241
	MOV  	R2,hsync_pt?241+01H
	MOV  	R1,hsync_pt?241+02H
	LCALL	?C?ILDPTR
	MOV  	R7,A
	CLR  	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R7
	MOV  	A,HsyncCnt
	SUBB 	A,B
	JNC  	?C0042
;                 if ((hsync_pt->sync_pol & NOPOL) ||
			; SOURCE LINE # 403
	MOV  	DPTR,#02H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	JB   	ACC.7,?C0044
	MOV  	R5,InputPolarity
	MOV  	A,R5
	RLC  	A
	SUBB 	A,ACC
	MOV  	R4,A
	MOV  	A,R7
	XRL  	A,R5
	JNZ  	?C0101
	MOV  	A,R4
?C0101:
	JNZ  	?C0042
?C0044:
;                             (hsync_pt->sync_pol == InputPolarity) )
;             return (hsync_pt->mode);    // found
			; SOURCE LINE # 405
	MOV  	DPTR,#03H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	RET  	
;         }
			; SOURCE LINE # 406
?C0042:
;             hsync_pt++;
			; SOURCE LINE # 407
	MOV  	A,#04H
	ADD  	A,hsync_pt?241+02H
	MOV  	hsync_pt?241+02H,A
	CLR  	A
	ADDC 	A,hsync_pt?241+01H
	MOV  	hsync_pt?241+01H,A
;     }
			; SOURCE LINE # 408
	SJMP 	?C0040
?C0041:
; 
;         return MODE_OUTOFSYNC;              // out of sync
			; SOURCE LINE # 410
	MOV  	R7,#0F0H
; }
			; SOURCE LINE # 411
?C0031:
	RET  	
; END OF syncChanged

; 
; //
; //  Verify sync counter
; //
; char syncVerify(void)

	RSEG  ?PR?syncVerify?SYNC
	USING	0
syncVerify:
			; SOURCE LINE # 416
; {
			; SOURCE LINE # 417
; 	unsigned int idata vsync_cnt0;
; 	char overcnt = 0;
			; SOURCE LINE # 419
	CLR  	A
	MOV  	overcnt?345,A
; #define hsync_cnt0  ival
; #define status      buff[8]
; #define overmask    buff[9]
; 
; #if DEBUGMSG
; 		printf("  Sync verify ?? ");
; #endif
; 
;     RegByteOut(0x01, 0x00);
			; SOURCE LINE # 428
	MOV  	R7,#01H
	MOV  	R5,A
	LCALL	_RegByteOut
?C0045:
;     //overmask = (eepData.MascotFlag & FLAG_PORTB) ? 0xC0 : 0x30;
;     while (1) {
			; SOURCE LINE # 430
;     	overmask = (eepData.MascotFlag & FLAG_PORTB) ? 0xC0 : 0x30;
			; SOURCE LINE # 431
	MOV  	R0,#eepData+01BH
	MOV  	A,@R0
	JNB  	ACC.6,?C0047
	MOV  	R7,#0C0H
	SJMP 	?C0048
?C0047:
	MOV  	R7,#030H
?C0048:
	MOV  	R0,#buff+09H
	MOV  	A,R7
	MOV  	@R0,A
;         status = RegByteIn(0x01);
			; SOURCE LINE # 432
	MOV  	R7,#01H
	LCALL	_RegByteIn
	MOV  	R0,#buff+08H
	MOV  	A,R7
	MOV  	@R0,A
;         if (status & overmask) return -1;   // overflow
			; SOURCE LINE # 433
	INC  	R0
	MOV  	A,@R0
	ANL  	A,R7
	JZ   	?C0049
	MOV  	R7,#0FFH
	RET  	
?C0049:
;         if (status & 0x02) break;
			; SOURCE LINE # 434
	MOV  	R0,#buff+08H
	MOV  	A,@R0
	JNB  	ACC.1,?C0045
; 
;     }
			; SOURCE LINE # 436
?C0046:
; 
;     RegDataIn(0x0B, buff, 5);
			; SOURCE LINE # 438
	MOV  	R7,#0BH
	MOV  	R3,#00H
	MOV  	R2,#HIGH (buff)
	MOV  	R1,#LOW (buff)
	MOV  	?_RegDataIn?BYTE+04H,#00H
	MOV  	?_RegDataIn?BYTE+05H,#05H
	LCALL	_RegDataIn
; 
;     overmask = (eepData.MascotFlag & FLAG_PORTB) ? (buff[4]>>2) : buff[4];
			; SOURCE LINE # 440
	MOV  	R0,#eepData+01BH
	MOV  	A,@R0
	JNB  	ACC.6,?C0052
	MOV  	R0,#buff+04H
	MOV  	A,@R0
	MOV  	R7,A
	RRC  	A
	RRC  	A
	ANL  	A,#03FH
	MOV  	R7,A
	SJMP 	?C0053
?C0052:
	MOV  	R0,#buff+04H
	MOV  	A,@R0
	MOV  	R7,A
?C0053:
	MOV  	R0,#buff+09H
	MOV  	A,R7
	MOV  	@R0,A
;         if (InputPolarity != (overmask & 0x03))
			; SOURCE LINE # 441
	ANL  	A,#03H
	MOV  	R7,A
	MOV  	R5,InputPolarity
	MOV  	A,R5
	RLC  	A
	SUBB 	A,ACC
	MOV  	R4,A
	MOV  	A,R5
	XRL  	A,R7
	JNZ  	?C0102
	MOV  	A,R4
?C0102:
	JZ   	?C0054
;         return 0;
			; SOURCE LINE # 442
	MOV  	R7,#00H
	RET  	
?C0054:
; 
;     vsync_cnt0 = buff[1]*0x100 + buff[0];
			; SOURCE LINE # 444
	MOV  	R0,#buff+01H
	MOV  	A,@R0
	MOV  	R6,A
	DEC  	R0
	MOV  	A,@R0
	MOV  	R4,#00H
	ADD  	A,#00H
	MOV  	R7,A
	MOV  	A,R4
	ADDC 	A,R6
	MOV  	R6,A
	MOV  	R0,#vsync_cnt0?344
	MOV  	@R0,A
	MOV  	R4,A
	INC  	R0
	MOV  	A,R7
	MOV  	@R0,A
	MOV  	R5,A
;     hsync_cnt0 = buff[3]*0x100 + buff[2];
			; SOURCE LINE # 445
	MOV  	R0,#buff+03H
	MOV  	A,@R0
	MOV  	R6,A
	DEC  	R0
	MOV  	A,@R0
	MOV  	R2,#00H
	ADD  	A,#00H
	MOV  	R0,#ival+01H
	MOV  	@R0,A
	MOV  	A,R2
	ADDC 	A,R6
	DEC  	R0
	MOV  	@R0,A
; 
; #if (DEBUGMSG>=6)
;         printf("  VSync=%04X HSync=%04X\n",VsyncCnt, HsyncCnt);
; #endif
; 
;     if ((VsyncCnt < vsync_cnt0) && (vsync_cnt0-VsyncCnt > VERRORRANGE))
			; SOURCE LINE # 451
	CLR  	C
	MOV  	A,VsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,VsyncCnt
	SUBB 	A,R4
	JNC  	?C0055
	CLR  	C
	MOV  	R0,#vsync_cnt0?344+01H
	MOV  	A,@R0
	SUBB 	A,VsyncCnt+01H
	MOV  	R7,A
	DEC  	R0
	MOV  	A,@R0
	SUBB 	A,VsyncCnt
	MOV  	R6,A
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#010H
	MOV  	A,R6
	SUBB 	A,#00H
	JC   	?C0055
;         return 0;
			; SOURCE LINE # 452
	MOV  	R7,#00H
	RET  	
?C0055:
;     if ((VsyncCnt > vsync_cnt0) && (VsyncCnt-vsync_cnt0 > VERRORRANGE))
			; SOURCE LINE # 453
	MOV  	R0,#vsync_cnt0?344
	MOV  	A,@R0
	MOV  	R6,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R7,A
	SETB 	C
	MOV  	A,VsyncCnt+01H
	SUBB 	A,R7
	MOV  	A,VsyncCnt
	SUBB 	A,R6
	JC   	?C0056
	CLR  	C
	MOV  	A,VsyncCnt+01H
	SUBB 	A,R7
	MOV  	R7,A
	MOV  	A,VsyncCnt
	SUBB 	A,R6
	MOV  	R6,A
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#010H
	MOV  	A,R6
	SUBB 	A,#00H
	JC   	?C0056
;         return 0;
			; SOURCE LINE # 454
	MOV  	R7,#00H
	RET  	
?C0056:
;     if ((HsyncCnt < hsync_cnt0) && (hsync_cnt0-HsyncCnt > HERRORRANGE))
			; SOURCE LINE # 455
	MOV  	R0,#ival
	MOV  	A,@R0
	MOV  	R4,A
	INC  	R0
	MOV  	A,@R0
	MOV  	R5,A
	CLR  	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,HsyncCnt
	SUBB 	A,R4
	JNC  	?C0057
	CLR  	C
	MOV  	A,R5
	SUBB 	A,HsyncCnt+01H
	MOV  	R7,A
	MOV  	A,R4
	SUBB 	A,HsyncCnt
	MOV  	R6,A
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#012H
	MOV  	A,R6
	SUBB 	A,#00H
	JC   	?C0057
;         return 0;
			; SOURCE LINE # 456
	MOV  	R7,#00H
	RET  	
?C0057:
;     if ((HsyncCnt > hsync_cnt0) && (HsyncCnt-hsync_cnt0 > HERRORRANGE))
			; SOURCE LINE # 457
	SETB 	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,HsyncCnt
	SUBB 	A,R4
	JC   	?C0058
	CLR  	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R5
	MOV  	R7,A
	MOV  	A,HsyncCnt
	SUBB 	A,R4
	MOV  	R6,A
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#012H
	MOV  	A,R6
	SUBB 	A,#00H
	JC   	?C0058
;         return 0;
			; SOURCE LINE # 458
	MOV  	R7,#00H
	RET  	
?C0058:
; 
; #if DEBUGMSG
; 		printf(" --->  ok\n");
; #endif
;     return 1;
			; SOURCE LINE # 463
	MOV  	R7,#01H
; 
; #undef hsync_cnt0
; #undef status
; #undef in_pol
; #undef overmask
; }
			; SOURCE LINE # 469
?C0050:
	RET  	
; END OF syncVerify

; 
; 
; #if DO_SYNCRANGECHECK
; 
; void syncCheckRange(unsigned char mode)

	RSEG  ?PR?_syncCheckRange?SYNC
	USING	0
_syncCheckRange:
;---- Variable 'mode?446' assigned to Register 'R7' ----
			; SOURCE LINE # 474
; {
			; SOURCE LINE # 475
;     unsigned char i;
; 
; #if DEBUGMSG
;     printf("syncCheckRange, ");
; #endif
; 
;     i = ModeTbl[mode].pol;
			; SOURCE LINE # 482
	MOV  	B,#0BH
	MOV  	A,R7
	MOV  	DPTR,#ModeTbl+0AH
	LCALL	?C?OFFXADD
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R6,A
;---- Variable 'i?447' assigned to Register 'R6' ----
;     
;     PresetModeFlag = ((i&PRESETMODE)&&1);
			; SOURCE LINE # 484
	JNB  	ACC.6,?C0059
	SETB 	C
	SJMP 	?C0060
?C0059:
	CLR  	C
?C0060:
	MOV  	PresetModeFlag,C
;     
;     if (!PresetModeFlag)	{
			; SOURCE LINE # 486
	JB   	PresetModeFlag,$ + 6H
	LJMP 	?C0062
; #if DEBUGMSG
;         printf(" ---------- Not Preset Mode\n");
; #endif
;         return;    
;     
;     }
			; SOURCE LINE # 492
?C0061:
;     
;     if (InputPolarity != (i&0x03)) {
			; SOURCE LINE # 494
	MOV  	A,R6
	ANL  	A,#03H
	MOV  	R5,A
	MOV  	R3,InputPolarity
	MOV  	A,R3
	RLC  	A
	SUBB 	A,ACC
	MOV  	R2,A
	MOV  	A,R3
	XRL  	A,R5
	JNZ  	?C0103
	MOV  	A,R2
?C0103:
	JZ   	?C0063
; 
;         PresetModeFlag = 0;
			; SOURCE LINE # 496
	CLR  	PresetModeFlag
	RET  	
; #if DEBUGMSG
;         printf("  ----------  Pol OUT\n");
; #endif
;         return;
;     }
			; SOURCE LINE # 501
?C0063:
; 
;     for (i=0; i<NUM_OF_SYNCRANGE; i++) {
			; SOURCE LINE # 503
	CLR  	A
	MOV  	R6,A
?C0064:
;         if (SyncRangeTbl[i].mode != mode) continue;
			; SOURCE LINE # 504
	MOV  	A,R6
	MOV  	B,#07H
	MUL  	AB
	ADD  	A,#LOW (SyncRangeTbl)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (SyncRangeTbl)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	XRL  	A,R7
	JZ   	$ + 5H
	LJMP 	?C0066
?C0067:
; 
;         ival = SyncRangeTbl[i].minHSync;
			; SOURCE LINE # 506
	MOV  	A,R6
	MOV  	B,#07H
	MUL  	AB
	ADD  	A,#LOW (SyncRangeTbl+01H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (SyncRangeTbl+01H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R4,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R5,A
	MOV  	R0,#ival
	MOV  	A,R4
	MOV  	@R0,A
	INC  	R0
	MOV  	A,R5
	MOV  	@R0,A
;         if (HsyncCnt < ival || HsyncCnt > ival+SyncRangeTbl[i].rngHSync) {
			; SOURCE LINE # 507
	CLR  	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,HsyncCnt
	SUBB 	A,R4
	JC   	?C0069
	MOV  	A,R6
	MOV  	B,#07H
	MUL  	AB
	ADD  	A,#LOW (SyncRangeTbl+03H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (SyncRangeTbl+03H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADD  	A,@R0
	MOV  	R5,A
	CLR  	A
	DEC  	R0
	ADDC 	A,@R0
	MOV  	R4,A
	SETB 	C
	MOV  	A,HsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,HsyncCnt
	SUBB 	A,R4
	JC   	?C0068
?C0069:
; 
;             PresetModeFlag = 0;
			; SOURCE LINE # 509
	CLR  	PresetModeFlag
	RET  	
; #if DEBUGMSG
;             printf("  ----------  HSync OUT\n");
; #endif
;             return;
;         }
			; SOURCE LINE # 514
?C0068:
;         ival = SyncRangeTbl[i].minVSync;
			; SOURCE LINE # 515
	MOV  	A,R6
	MOV  	B,#07H
	MUL  	AB
	ADD  	A,#LOW (SyncRangeTbl+04H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (SyncRangeTbl+04H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	R4,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	R5,A
	MOV  	R0,#ival
	MOV  	A,R4
	MOV  	@R0,A
	INC  	R0
	MOV  	A,R5
	MOV  	@R0,A
;         if (VsyncCnt < ival || VsyncCnt > ival+SyncRangeTbl[i].rngVSync) {
			; SOURCE LINE # 516
	CLR  	C
	MOV  	A,VsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,VsyncCnt
	SUBB 	A,R4
	JC   	?C0071
	MOV  	A,R6
	MOV  	B,#07H
	MUL  	AB
	ADD  	A,#LOW (SyncRangeTbl+06H)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (SyncRangeTbl+06H)
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	ADD  	A,@R0
	MOV  	R5,A
	CLR  	A
	DEC  	R0
	ADDC 	A,@R0
	MOV  	R4,A
	SETB 	C
	MOV  	A,VsyncCnt+01H
	SUBB 	A,R5
	MOV  	A,VsyncCnt
	SUBB 	A,R4
	JC   	?C0066

⌨️ 快捷键说明

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