📄 inr_funcation.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 + -