📄 measure.lis
字号:
0426 .dbline -1
0426 .dbline 266
0426 ; }
0426 ;
0426 ; void s_transstart(void)
0426 ; //----------------------------------------------------------------------------------
0426 ; // generates a transmission start
0426 ; // _____ ________
0426 ; // DATA: |_______|
0426 ; // ___ ___
0426 ; // SCK : ___| |___| |______
0426 ; {
0426 .dbline 267
0426 ; DATA_TO_1();
0426 80916200 lds R24,98
042A 8260 ori R24,2
042C 80936200 sts 98,R24
0430 .dbline 268
0430 ; _NOP();
0430 0000 nop
0432 .dbline 269
0432 ; SCK_TO_0(); //Initial state
0432 80916200 lds R24,98
0436 8B7F andi R24,251
0438 80936200 sts 98,R24
043C .dbline 270
043C ; _NOP();
043C 0000 nop
043E .dbline 271
043E ; SCK_TO_1();
043E 80916200 lds R24,98
0442 8460 ori R24,4
0444 80936200 sts 98,R24
0448 .dbline 272
0448 ; _NOP();
0448 0000 nop
044A .dbline 273
044A ; DATA_TO_0();
044A 80916200 lds R24,98
044E 8D7F andi R24,253
0450 80936200 sts 98,R24
0454 .dbline 274
0454 ; _NOP();
0454 0000 nop
0456 .dbline 275
0456 ; SCK_TO_0();
0456 80916200 lds R24,98
045A 8B7F andi R24,251
045C 80936200 sts 98,R24
0460 .dbline 277
0460 ; //delay_us(5); //pulswith approx. 5 us
0460 ; _NOP();
0460 0000 nop
0462 .dbline 278
0462 ; _NOP();
0462 0000 nop
0464 .dbline 279
0464 ; _NOP();
0464 0000 nop
0466 .dbline 280
0466 ; _NOP();
0466 0000 nop
0468 .dbline 281
0468 ; _NOP();
0468 0000 nop
046A .dbline 282
046A ; SCK_TO_1();
046A 80916200 lds R24,98
046E 8460 ori R24,4
0470 80936200 sts 98,R24
0474 .dbline 283
0474 ; _NOP();
0474 0000 nop
0476 .dbline 284
0476 ; DATA_TO_1();
0476 80916200 lds R24,98
047A 8260 ori R24,2
047C 80936200 sts 98,R24
0480 .dbline 285
0480 ; _NOP();
0480 0000 nop
0482 .dbline 286
0482 ; SCK_TO_0();
0482 80916200 lds R24,98
0486 8B7F andi R24,251
0488 80936200 sts 98,R24
048C .dbline 287
048C ; _NOP();
048C 0000 nop
048E .dbline -2
048E L41:
048E .dbline 0 ; func end
048E 0895 ret
0490 .dbend
0490 .dbfunc e s_connectionreset _s_connectionreset fV
0490 ; i -> R20
.even
0490 _s_connectionreset::
0490 4A93 st -y,R20
0492 5A93 st -y,R21
0494 .dbline -1
0494 .dbline 298
0494 ; }
0494 ;
0494 ;
0494 ; void s_connectionreset(void)
0494 ; //----------------------------------------------------------------------------------
0494 ; // communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart
0494 ; // _____________________________________________________ ________
0494 ; // DATA: |_______|
0494 ; // _ _ _ _ _ _ _ _ _ ___ ___
0494 ; // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______| |___| |______
0494 ; {
0494 .dbline 300
0494 ; unsigned char i;
0494 ; DATA_TO_1();
0494 80916200 lds R24,98
0498 8260 ori R24,2
049A 80936200 sts 98,R24
049E .dbline 301
049E ; _NOP();
049E 0000 nop
04A0 .dbline 302
04A0 ; SCK_TO_0(); //Initial state
04A0 80916200 lds R24,98
04A4 8B7F andi R24,251
04A6 80936200 sts 98,R24
04AA .dbline 303
04AA ; _NOP();
04AA 0000 nop
04AC .dbline 304
04AC ; for(i=0;i<9;i++) //9 SCK cycles
04AC 4427 clr R20
04AE 0DC0 xjmp L46
04B0 L43:
04B0 .dbline 305
04B0 .dbline 305
04B0 80916200 lds R24,98
04B4 8460 ori R24,4
04B6 80936200 sts 98,R24
04BA .dbline 306
04BA 0000 nop
04BC .dbline 307
04BC 80916200 lds R24,98
04C0 8B7F andi R24,251
04C2 80936200 sts 98,R24
04C6 .dbline 308
04C6 0000 nop
04C8 .dbline 309
04C8 L44:
04C8 .dbline 304
04C8 4395 inc R20
04CA L46:
04CA .dbline 304
04CA 4930 cpi R20,9
04CC 88F3 brlo L43
04CE X18:
04CE .dbline 310
04CE ; { SCK_TO_1();
04CE ; _NOP();
04CE ; SCK_TO_0();
04CE ; _NOP();
04CE ; }
04CE ; s_transstart(); //transmission start
04CE ABDF xcall _s_transstart
04D0 .dbline -2
04D0 L42:
04D0 5991 ld R21,y+
04D2 4991 ld R20,y+
04D4 .dbline 0 ; func end
04D4 0895 ret
04D6 .dbsym r i 20 c
04D6 .dbend
04D6 .dbfunc e s_measure _s_measure fc
04D6 ; error -> R20,R21
04D6 ; k -> R12,R13
04D6 ; i -> R14,R15
04D6 ; j -> R22,R23
04D6 ; mode -> R12
04D6 ; p_checksum -> R10,R11
.even
04D6 _s_measure::
04D6 0E940000 xcall push_xgset5
04DA C22E mov R12,R18
04DC 5801 movw R10,R16
04DE .dbline -1
04DE .dbline 317
04DE ; }
04DE ;
04DE ;
04DE ; char s_measure(unsigned char *p_checksum, unsigned char mode)
04DE ; //----------------------------------------------------------------------------------
04DE ; // makes a measurement (humidity/temperature) with checksum
04DE ; {
04DE .dbline 318
04DE ; unsigned error=0;
04DE 4427 clr R20
04E0 5527 clr R21
04E2 .dbline 321
04E2 ; unsigned int i,j,k;
04E2 ;
04E2 ; s_transstart(); //transmission start
04E2 A1DF xcall _s_transstart
04E4 .dbline 322
04E4 ; switch(mode){ //send command to sensor
04E4 DD24 clr R13
04E6 CC20 tst R12
04E8 11F4 brne X19
04EA DD20 tst R13
04EC 31F0 breq L51
04EE X19:
04EE C601 movw R24,R12
04F0 8130 cpi R24,1
04F2 E0E0 ldi R30,0
04F4 9E07 cpc R25,R30
04F6 41F0 breq L52
04F8 X20:
04F8 0DC0 xjmp L49
04FA X21:
04FA .dbline 322
04FA L51:
04FA .dbline 323
04FA ; case TEMP : error+=s_write_byte(MEASURE_TEMP); break;
04FA 03E0 ldi R16,3
04FC 96DD xcall _s_write_byte
04FE 202E mov R2,R16
0500 3324 clr R3
0502 420D add R20,R2
0504 531D adc R21,R3
0506 .dbline 323
0506 06C0 xjmp L49
0508 L52:
0508 .dbline 324
0508 ; case HUMI : error+=s_write_byte(MEASURE_HUMI); break;
0508 05E0 ldi R16,5
050A 8FDD xcall _s_write_byte
050C 202E mov R2,R16
050E 3324 clr R3
0510 420D add R20,R2
0512 531D adc R21,R3
0514 .dbline 324
0514 .dbline 325
0514 ; default : break;
0514 L49:
0514 .dbline 327
0514 ; }
0514 ; PORTF |=0x02;
0514 80916200 lds R24,98
0518 8260 ori R24,2
051A 80936200 sts 98,R24
051E .dbline 328
051E ; DDRF &=0xfd;
051E 80916100 lds R24,97
0522 8D7F andi R24,253
0524 80936100 sts 97,R24
0528 .dbline 329
0528 ; for(k=0;k<65535u;k++)
0528 CC24 clr R12
052A DD24 clr R13
052C 1AC0 xjmp L56
052E L53:
052E .dbline 330
052E ; {
052E .dbline 331
052E ; for (i=0;i<65535u;i++)
052E EE24 clr R14
0530 FF24 clr R15
0532 0BC0 xjmp L60
0534 L57:
0534 .dbline 332
0534 ; {
0534 .dbline 333
0534 ; j=PINF&0x02;//DATA_status();//PORTF&0x02;
0534 60B1 in R22,0x0
0536 7727 clr R23
0538 6270 andi R22,2
053A 7070 andi R23,0
053C .dbline 334
053C 6030 cpi R22,0
053E 6707 cpc R22,R23
0540 09F4 brne L61
0542 X22:
0542 .dbline 334
0542 ; if(j==0) break;
0542 08C0 xjmp L59
0544 L61:
0544 .dbline 335
0544 L58:
0544 .dbline 331
0544 C701 movw R24,R14
0546 0196 adiw R24,1
0548 7C01 movw R14,R24
054A L60:
054A .dbline 331
054A C701 movw R24,R14
054C 8F3F cpi R24,255
054E EFEF ldi R30,255
0550 9E07 cpc R25,R30
0552 80F3 brlo L57
0554 X23:
0554 L59:
0554 .dbline 336
0554 ; }
0554 ; if(j==0)
0554 6030 cpi R22,0
0556 6707 cpc R22,R23
0558 09F4 brne L63
055A X24:
055A .dbline 337
055A ; break;
055A 08C0 xjmp L55
055C L63:
055C .dbline 338
055C L54:
055C .dbline 329
055C C601 movw R24,R12
055E 0196 adiw R24,1
0560 6C01 movw R12,R24
0562 L56:
0562 .dbline 329
0562 C601 movw R24,R12
0564 8F3F cpi R24,255
0566 EFEF ldi R30,255
0568 9E07 cpc R25,R30
056A 08F3 brlo L53
056C X25:
056C L55:
056C .dbline 342
056C 6030 cpi R22,0
056E 6707 cpc R22,R23
0570 11F0 breq L65
0572 X26:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -