📄 remote.lis
字号:
04EC 9999 sbic 0x13,1
04EE 02C0 rjmp L118
04F0 .dbline 347
04F0 02E0 ldi R16,2
04F2 01C0 rjmp L101
04F4 L118:
04F4 .dbline 349
04F4 ;
04F4 ; return NONE;
04F4 0027 clr R16
04F6 .dbline -2
04F6 L101:
04F6 .dbline 0 ; func end
04F6 0895 ret
04F8 .dbend
04F8 .dbfunc e delay_ms _delay_ms fV
04F8 ; j -> R20,R21
04F8 ; i -> R22,R23
04F8 ; ms -> R16,R17
.even
04F8 _delay_ms::
04F8 00D0 rcall push_gset2
04FA .dbline -1
04FA .dbline 358
04FA ; }
04FA ;
04FA ; //******************************************************************
04FA ; //* Delay millisecond Function
04FA ; //*
04FA ; //* Clock = 1Mhz
04FA ; //******************************************************************
04FA ; void delay_ms(int ms)
04FA ; {
04FA .dbline 361
04FA ; int i,j;
04FA ;
04FA ; for (j=0;j<ms;j++)
04FA 4427 clr R20
04FC 5527 clr R21
04FE 0BC0 rjmp L124
0500 L121:
0500 .dbline 362
0500 ; {
0500 .dbline 363
0500 6627 clr R22
0502 7727 clr R23
0504 L125:
0504 .dbline 363
0504 L126:
0504 .dbline 363
0504 6F5F subi R22,255 ; offset = 1
0506 7F4F sbci R23,255
0508 .dbline 363
0508 6238 cpi R22,130
050A E0E0 ldi R30,0
050C 7E07 cpc R23,R30
050E D4F3 brlt L125
0510 .dbline 364
0510 A895 wdr
0512 .dbline 365
0512 L122:
0512 .dbline 361
0512 4F5F subi R20,255 ; offset = 1
0514 5F4F sbci R21,255
0516 L124:
0516 .dbline 361
0516 4017 cp R20,R16
0518 5107 cpc R21,R17
051A 94F3 brlt L121
051C .dbline -2
051C .dbline 366
051C ; for (i=0;i<130;i++);
051C ; WDR();
051C ; }
051C ; }
051C L120:
051C 00D0 rcall pop_gset2
051E .dbline 0 ; func end
051E 0895 ret
0520 .dbsym r j 20 I
0520 .dbsym r i 22 I
0520 .dbsym r ms 16 I
0520 .dbend
.area vector(rom, abs)
.org 22
0016 90C2 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0520 .dbfile C:\DATA\MP3\Remote\Code\remote.c
.area bss(ram, con, rel)
000F .dbfile C:\DATA\MP3\Remote\Code\remote.c
000F L130:
000F .blkb 1
0010 L131:
0010 .blkb 1
0011 L132:
0011 .blkb 1
.area text(rom, con, rel)
0520 .dbfile C:\DATA\MP3\Remote\Code\remote.c
0520 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0520 .dbsym s Qte L132 c
0520 .dbsym s Decoded L131 c
0520 .dbsym s Error L130 c
0520 ; i -> R22
0520 ; ch -> R20
.even
0520 _uart0_rx_isr::
0520 2A92 st -y,R2
0522 3A92 st -y,R3
0524 4A92 st -y,R4
0526 0A93 st -y,R16
0528 1A93 st -y,R17
052A 2A93 st -y,R18
052C 3A93 st -y,R19
052E 8A93 st -y,R24
0530 9A93 st -y,R25
0532 EA93 st -y,R30
0534 FA93 st -y,R31
0536 2FB6 in R2,0x3f
0538 2A92 st -y,R2
053A 00D0 rcall push_gset2
053C .dbline -1
053C .dbline 375
053C ;
053C ; //*************************************
053C ; // void uart0_rx_isr(void)
053C ; //
053C ; // manchester encoded byte
053C ; //*************************************
053C ; #pragma interrupt_handler uart0_rx_isr:12
053C ; void uart0_rx_isr(void)
053C ; {
053C .dbline 382
053C ; unsigned char ch;
053C ; unsigned char i;
053C ; static unsigned char Error;
053C ; static unsigned char Decoded;
053C ; static unsigned char Qte;
053C ;
053C ; ch = UDR; //uart has received a character in UDR
053C 4CB1 in R20,0xc
053E .dbline 384
053E ;
053E ; if (ch == 0xf0)
053E 403F cpi R20,240
0540 31F4 brne L133
0542 .dbline 385
0542 ; {
0542 .dbline 386
0542 ; Qte = 0;
0542 2224 clr R2
0544 20921100 sts L132,R2
0548 .dbline 387
0548 ; Error = FALSE;
0548 20920F00 sts L130,R2
054C .dbline 388
054C ; return;
054C 6CC0 rjmp L129
054E L133:
054E .dbline 391
054E ; }
054E ;
054E ; if ((ch == 0x0f) && (Error == FALSE))
054E 4F30 cpi R20,15
0550 A9F4 brne L135
0552 20900F00 lds R2,L130
0556 2220 tst R2
0558 89F4 brne L135
055A .dbline 392
055A ; {
055A .dbline 393
055A ; RxData[Qte/2] = 0x00;
055A 22E0 ldi R18,2
055C 30E0 ldi R19,0
055E 00911100 lds R16,L132
0562 1127 clr R17
0564 00D0 rcall div16s
0566 F801 movw R30,R16
0568 80E0 ldi R24,<_RxData
056A 90E0 ldi R25,>_RxData
056C E80F add R30,R24
056E F91F adc R31,R25
0570 2224 clr R2
0572 2082 std z+0,R2
0574 .dbline 394
0574 ; NewMessage = TRUE;
0574 81E0 ldi R24,1
0576 80930500 sts _NewMessage,R24
057A .dbline 395
057A ; return;
057A 55C0 rjmp L129
057C L135:
057C .dbline 398
057C ; }
057C ;
057C ; Decoded = 0x00;
057C 2224 clr R2
057E 20921000 sts L131,R2
0582 .dbline 400
0582 ;
0582 ; for (i=0;i<4;i++)
0582 6627 clr R22
0584 1DC0 rjmp L140
0586 L137:
0586 .dbline 401
0586 ; {
0586 .dbline 402
0586 ; Decoded >>= 1;
0586 20901000 lds R2,L131
058A 2694 lsr R2
058C 20921000 sts L131,R2
0590 .dbline 403
0590 ; if ((ch & 0x03) == 0x02) Decoded |= 0x08;
0590 842F mov R24,R20
0592 8370 andi R24,3
0594 8230 cpi R24,2
0596 29F4 brne L141
0598 .dbline 403
0598 822D mov R24,R2
059A 8860 ori R24,8
059C 80931000 sts L131,R24
05A0 0CC0 rjmp L142
05A2 L141:
05A2 .dbline 404
05A2 ; else if ((ch & 0x03) == 0x01) Decoded = Decoded;
05A2 842F mov R24,R20
05A4 8370 andi R24,3
05A6 8130 cpi R24,1
05A8 29F4 brne L143
05AA .dbline 404
05AA 20901000 lds R2,L131
05AE 20921000 sts L131,R2
05B2 03C0 rjmp L144
05B4 L143:
05B4 .dbline 405
05B4 ; else Error = TRUE;
05B4 81E0 ldi R24,1
05B6 80930F00 sts L130,R24
05BA L144:
05BA L142:
05BA .dbline 406
05BA 4695 lsr R20
05BC 4695 lsr R20
05BE .dbline 407
05BE L138:
05BE .dbline 400
05BE 6395 inc R22
05C0 L140:
05C0 .dbline 400
05C0 6430 cpi R22,4
05C2 08F3 brlo L137
05C4 .dbline 409
05C4 ; ch >>= 2;
05C4 ; }
05C4 ;
05C4 ; if (Qte <= (MAXLEN * 2))
05C4 80E5 ldi R24,80
05C6 20901100 lds R2,L132
05CA 8215 cp R24,R2
05CC 38F1 brlo L145
05CE .dbline 410
05CE ; {
05CE .dbline 411
05CE ; if ((Qte % 2) == 0) RxData[Qte/2] = Decoded;
05CE 12E0 ldi R17,2
05D0 022D mov R16,R2
05D2 00D0 rcall mod8u
05D4 0023 tst R16
05D6 79F4 brne L147
05D8 .dbline 411
05D8 22E0 ldi R18,2
05DA 30E0 ldi R19,0
05DC 00911100 lds R16,L132
05E0 1127 clr R17
05E2 00D0 rcall div16s
05E4 F801 movw R30,R16
05E6 80E0 ldi R24,<_RxData
05E8 90E0 ldi R25,>_RxData
05EA E80F add R30,R24
05EC F91F adc R31,R25
05EE 20901000 lds R2,L131
05F2 2082 std z+0,R2
05F4 13C0 rjmp L148
05F6 L147:
05F6 .dbline 412
05F6 ; else RxData[Qte/2] += (Decoded << 4);
05F6 22E0 ldi R18,2
05F8 30E0 ldi R19,0
05FA 00911100 lds R16,L132
05FE 1127 clr R17
0600 00D0 rcall div16s
0602 1801 movw R2,R16
0604 80E0 ldi R24,<_RxData
0606 90E0 ldi R25,>_RxData
0608 280E add R2,R24
060A 391E adc R3,R25
060C 80911000 lds R24,L131
0610 8F70 andi R24,#0x0F
0612 8295 swap R24
0614 F101 movw R30,R2
0616 4080 ldd R4,z+0
0618 480E add R4,R24
061A 4082 std z+0,R4
061C L148:
061C .dbline 413
061C ; }
061C L145:
061C .dbline 414
061C ; Qte++;
061C 80911100 lds R24,L132
0620 8F5F subi R24,255 ; addi 1
0622 80931100 sts L132,R24
0626 .dbline -2
0626 .dbline 415
0626 ; }
0626 L129:
0626 00D0 rcall pop_gset2
0628 2990 ld R2,y+
062A 2FBE out 0x3f,R2
062C F991 ld R31,y+
062E E991 ld R30,y+
0630 9991 ld R25,y+
0632 8991 ld R24,y+
0634 3991 ld R19,y+
0636 2991 ld R18,y+
0638 1991 ld R17,y+
063A 0991 ld R16,y+
063C 4990 ld R4,y+
063E 3990 ld R3,y+
0640 2990 ld R2,y+
0642 .dbline 0 ; func end
0642 1895 reti
0644 .dbsym r i 22 c
0644 .dbsym r ch 20 c
0644 .dbend
0644 .dbfunc e AnalyseData _AnalyseData fV
0644 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -