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

📄 inr_funcation.s

📁 MCU控制继电器做的电源老化测试程序.每次测100次
💻 S
字号:
	.module inr_funcation.c
	.area text(rom, con, rel)
	.dbfile E:\company\hardware\eboda\LCD_TV\TV_power_tester\inr_funcation.c
	.dbfunc e DELAY_10uS _DELAY_10uS fV
;              a -> R20,R21
;              b -> R22,R23
;              i -> R16,R17
	.even
_DELAY_10uS::
	rcall push_gset2
	.dbline -1
	.dbline 7
; #include <iom16v.h>
; #include <inr_define.h>
; 
; 
; /********************DELAY_10uS***************************/
; void DELAY_10uS(unsigned int i)
; { unsigned int a, b;
	.dbline 8
;          for( a=i;a;a--)
	movw R20,R16
	rjmp L5
L2:
	.dbline 9
	ldi R22,14
	ldi R23,0
	rjmp L9
L6:
	.dbline 9
L7:
	.dbline 9
	subi R22,1
	sbci R23,0
L9:
	.dbline 9
	cpi R22,0
	cpc R22,R23
	brne L6
X0:
L3:
	.dbline 8
	subi R20,1
	sbci R21,0
L5:
	.dbline 8
	cpi R20,0
	cpc R20,R21
	brne L2
X1:
	.dbline -2
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 i
	.dbsym r b 22 i
	.dbsym r i 16 i
	.dbend
	.dbfunc e DELAY_100uS _DELAY_100uS fV
;              a -> R20,R21
;              b -> R22,R23
;              i -> R20,R21
	.even
_DELAY_100uS::
	rcall push_gset2
	movw R20,R16
	.dbline -1
	.dbline 16
; 		    for(b=14;b;b--);// a=1 &b=14 for 10us
; }
; /**********************DELAY_10uS****************************/
; 
; 
; /********************DELAY_100uS***************************/
; void DELAY_100uS(unsigned int i)
; { unsigned int a, b;
	.dbline 17
;          for( a=i*10;a;a--)
	ldi R16,10
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R20,R16
	rjmp L14
L11:
	.dbline 18
	ldi R22,23
	ldi R23,0
	rjmp L18
L15:
	.dbline 18
L16:
	.dbline 18
	subi R22,1
	sbci R23,0
L18:
	.dbline 18
	cpi R22,0
	cpc R22,R23
	brne L15
X2:
L12:
	.dbline 17
	subi R20,1
	sbci R21,0
L14:
	.dbline 17
	cpi R20,0
	cpc R20,R21
	brne L11
X3:
	.dbline -2
L10:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 i
	.dbsym r b 22 i
	.dbsym r i 20 i
	.dbend
	.dbfunc e DELAY_1MS _DELAY_1MS fV
;              a -> R20,R21
;              b -> R22,R23
;              i -> R20,R21
	.even
_DELAY_1MS::
	rcall push_gset2
	movw R20,R16
	.dbline -1
	.dbline 24
; 		    for(b=23;b;b--);// a=10 &b=23 for 100us
; }
; /**********************DELAY_100uS****************************/
; 
; /********************DELAY_1MS***************************/
; void DELAY_1MS(unsigned int i)
; { unsigned int a, b;
	.dbline 25
;          for( a=i*10;a;a--)
	ldi R16,10
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R20,R16
	rjmp L23
L20:
	.dbline 26
	ldi R22,270
	ldi R23,1
	rjmp L27
L24:
	.dbline 26
L25:
	.dbline 26
	subi R22,1
	sbci R23,0
L27:
	.dbline 26
	cpi R22,0
	cpc R22,R23
	brne L24
X4:
L21:
	.dbline 25
	subi R20,1
	sbci R21,0
L23:
	.dbline 25
	cpi R20,0
	cpc R20,R21
	brne L20
X5:
	.dbline -2
L19:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 i
	.dbsym r b 22 i
	.dbsym r i 20 i
	.dbend
	.dbfunc e DELAY_10MS _DELAY_10MS fV
;              a -> R20,R21
;              b -> R22,R23
;              i -> R20,R21
	.even
_DELAY_10MS::
	rcall push_gset2
	movw R20,R16
	.dbline -1
	.dbline 33
; 		    for(b=270;b;b--);
; }
; /**********************DELAY_1MS****************************/
; 
; 
; /********************DELAY_10MS***************************/
; void DELAY_10MS(unsigned int i)
; { unsigned int a, b;
	.dbline 34
;          for( a=i*100;a;a--)
	ldi R16,100
	ldi R17,0
	movw R18,R20
	rcall empy16s
	movw R20,R16
	rjmp L32
L29:
	.dbline 35
	ldi R22,270
	ldi R23,1
	rjmp L36
L33:
	.dbline 35
L34:
	.dbline 35
	subi R22,1
	sbci R23,0
L36:
	.dbline 35
	cpi R22,0
	cpc R22,R23
	brne L33
X6:
L30:
	.dbline 34
	subi R20,1
	sbci R21,0
L32:
	.dbline 34
	cpi R20,0
	cpc R20,R21
	brne L29
X7:
	.dbline -2
L28:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r a 20 i
	.dbsym r b 22 i
	.dbsym r i 20 i
	.dbend
	.dbfunc e LED_FLASH _LED_FLASH fV
	.even
_LED_FLASH::
	.dbline -1
	.dbline 112
; 		    for(b=270;b;b--);//A=100 AND B=270 FOR 10MS
; }
; /**********************DELAY_10MS****************************/
; 
; #if PCB_EJK610
; void LED1ON(void) 			
; {
; 	 LED1_ON;
; 	 DELAY_10MS(100);
; }
; //*************************************************
; 
; void LED1OFF(void)
; {
; LED1_OFF;
; //DELAY_10MS(100);
; }
; //**************************************************
;   
; void LED2RED(void)
; {
; LED2_RED;
; DELAY_10MS(100);
; }
; //**************************************************
; void LED2GREEN(void)
; {
; LED2_GREEN;
; DELAY_10MS(100);
; }
; //**************************************************
; #endif
; 
; 
; 
; /****************EJK610_LED_TEST***************************/
; 
; #if EJK610_LED_TEST
; void LEDTEST(void)
; {
; LED1ON();
; LED2_ON;
; LED2RED();
; LED2GREEN();
; LED1OFF();
; LED2_OFF;
; 
; DELAY_10MS(100);
; LED2_ON;
; LED2RED();
; LED2GREEN();
; LED2_OFF;
; }
; #endif
; /*****************EJK610_LED_TEST************************/
; 
; 
; /**************EJK610_KEY_TEST_F***********************/
; #if EJK610_KEY_TEST
; void EJK610_KEY_TEST_F(void)
; 		{
; 		PORTA=0xFF;
; 		//PORTA&=0xFF
; 		 		 
; 		if((PINA&=0x01)==0)  
; 		{
; 		LED1ON();
; 		LEDTEST();
; 		}	     // SCAN  KEY_IN 
; 		  else LED1OFF();
; 		}
; #endif
; /*************EJK610_KEY_TEST_F**************************/
; 
; #if PCB_EJK601
; /*****************LED_FLASH_1S************************/
; void LED_FLASH(void)
; {
	.dbline 113
; LED1_ON;
	cbi 0x18,0
	.dbline 114
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 115
; LED1_OFF;  // 1
	sbi 0x18,0
	.dbline -2
L37:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_FLASH_FAST _LED_FLASH_FAST fV
	.even
_LED_FLASH_FAST::
	.dbline -1
	.dbline 119
; }
; 
; void LED_FLASH_FAST(void)    // EJK601 PCB
; {
	.dbline 120
; LED1_ON;
	cbi 0x18,0
	.dbline 121
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 122
; LED1_OFF;  // 1
	sbi 0x18,0
	.dbline 123
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 124
; LED1_ON;
	cbi 0x18,0
	.dbline 125
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 126
; LED1_OFF;  // 2
	sbi 0x18,0
	.dbline 127
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 128
; LED1_ON;
	cbi 0x18,0
	.dbline 129
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 130
; LED1_OFF;  // 3
	sbi 0x18,0
	.dbline 131
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 132
; LED1_ON;
	cbi 0x18,0
	.dbline 133
; DELAY_10MS(10);
	ldi R16,10
	ldi R17,0
	rcall _DELAY_10MS
	.dbline 134
; LED1_OFF;  // 4
	sbi 0x18,0
	.dbline -2
L38:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e EJK601_TEST _EJK601_TEST fV
;       TEST_OK2 -> R20,R21
;       TEST_OK1 -> R22,R23
;              j -> R12,R13
;              i -> R10,R11
	.even
_EJK601_TEST::
	rcall push_gset4
	.dbline -1
	.dbline 142
; 
; }
; 
; /*****************LED_FLASH_1S************************/
; 
; //-------------------EJK601_TEST---------------------------
; void  EJK601_TEST(void)
;           {
	.dbline 143
;               int TEST_OK1=0,TEST_OK2=0;
	clr R22
	clr R23
	.dbline 143
	clr R20
	clr R21
	.dbline 146
; 		int i,j;	
; //-------------------------test Q1 ---------------------------//
; 		for(i=0;i<100;i++)
	clr R10
	clr R11
L40:
	.dbline 147
; 			{
	.dbline 148
; 		IR_H;  /*pd5=1   若 pd2=0        (pind&=0x04)==0  成立说明Q1 OK */
	sbi 0x12,5
	.dbline 149
; 		DELAY_10uS(1);//(5)(10)
	ldi R16,1
	ldi R17,0
	rcall _DELAY_10uS
	.dbline 151
; 	//	ONE_TIME_LED_OFF;   070328
; 		if((PIND&=0x04)==0)   /* (pind&=0x04)==0  成立说明Q1 OK */
	in R24,0x10
	andi R24,4
	out 0x10,R24
	tst R24
	brne L44
	.dbline 152
;                   {   IR_L;  /*再反向测PD5=0若pd2=1  (pind&=0x04)==0x04  成立说明Q1  ok */
	.dbline 152
	ldi R24,32
	in R2,0x12
	eor R2,R24
	out 0x12,R2
	.dbline 153
; 		           DELAY_10uS(1);//(5) (10)
	ldi R16,1
	ldi R17,0
	rcall _DELAY_10uS
	.dbline 154
; 		           if((PIND&=0x04)==0X04)    /*(pind&=0x04)==0x04  成立说明Q1 ok */	
	in R24,0x10
	andi R24,4
	out 0x10,R24
	cpi R24,4
	brne L46
	.dbline 155
; 		           	{
	.dbline 157
; 		           	//LED_FLASH();
; 		              TEST_OK1++ ;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 158
; 		           	}
L46:
	.dbline 159
; 			}
L44:
	.dbline 161
L41:
	.dbline 146
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 146
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brlt L40
	.dbline 171
; 		//else LED1_OFF;
; 		}
; /*
; 			if(TEST_OK1==4)    
; 			LED_FLASH_FAST();
; 	          	else LED1_ON; 
; 	          	// 若测试没能通过,则LED1 长亮 
; */	          	
; //-------------------------test Q1 ---------------------------//
; 
; //-------------------------test Q2 ---------------------------//
; for(j=0;j<100;j++)
	clr R12
	clr R13
L48:
	.dbline 172
; 			{
	.dbline 173
; 		VIDEO_H;  /*pb7=1   若 pd0=0        (pind&=0x01)==0  成立说明Q2 OK */
	sbi 0x18,7
	.dbline 174
; 		DELAY_10uS(1);//(5)(10)
	ldi R16,1
	ldi R17,0
	rcall _DELAY_10uS
	.dbline 176
; 		//ONE_TIME_LED_ON;  070328
; 		if((PIND&=0x01)==0)   /* (pind&=0x01)==0  成立说明Q2 OK */
	in R24,0x10
	andi R24,1
	out 0x10,R24
	tst R24
	brne L52
	.dbline 177
;                   {   VIDEO_L;  /*再反向测Pb7=0若pd0=1  (pind&=0x01)==0  成立说明Q2  ok */
	.dbline 177
	cbi 0x18,7
	.dbline 178
; 		           DELAY_10uS(1);//(5)(10)
	ldi R16,1
	ldi R17,0
	rcall _DELAY_10uS
	.dbline 179
; 		           if((PIND&=0x01)==0X01)    /*(pind&=0x01)==0x01  成立说明Q2  ok*/	
	in R24,0x10
	andi R24,1
	out 0x10,R24
	cpi R24,1
	brne L54
	.dbline 180
; 		           	{
	.dbline 182
; 		           	//LED_FLASH_FAST();
; 		              TEST_OK2++ ;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 183
; 		           	}
L54:
	.dbline 184
; 			}
L52:
	.dbline 186
L49:
	.dbline 171
	movw R24,R12
	adiw R24,1
	movw R12,R24
	.dbline 171
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brlt L48
	.dbline 188
; 		//else LED1_OFF;
; 		}
; 
; 			if((TEST_OK2==100)  &&(TEST_OK1==100))  //检查是否两者都通过测试
	cpi R20,100
	ldi R30,0
	cpc R21,R30
	brne L56
	cpi R22,100
	ldi R30,0
	cpc R23,R30
	brne L56
	.dbline 189
; 			LED_FLASH_FAST();
	rcall _LED_FLASH_FAST
	rjmp L57
L56:
	.dbline 190
	cbi 0x18,0
L57:
	.dbline -2
L39:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r TEST_OK2 20 I
	.dbsym r TEST_OK1 22 I
	.dbsym r j 12 I
	.dbsym r i 10 I
	.dbend

⌨️ 快捷键说明

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