📄 remote.lis
字号:
02D2 ; WDR();
02D2 A895 wdr
02D4 .dbline 131
02D4 ; me = 0; // manchester encoded txbyte
02D4 CC24 clr R12
02D6 .dbline 132
02D6 ; for (j=0 ; j<4; j++)
02D6 AA24 clr R10
02D8 0DC0 xjmp L46
02DA L43:
02DA .dbline 133
02DA ; {
02DA .dbline 134
02DA ; me >>=2;
02DA C694 lsr R12
02DC C694 lsr R12
02DE .dbline 135
02DE ; if (TxByte & 0x01)
02DE 40FF sbrs R20,0
02E0 04C0 rjmp L47
02E2 .dbline 136
02E2 ; {
02E2 .dbline 137
02E2 ; me |= 0x80;
02E2 8C2D mov R24,R12
02E4 8068 ori R24,128
02E6 C82E mov R12,R24
02E8 .dbline 138
02E8 ; }
02E8 03C0 xjmp L48
02EA L47:
02EA .dbline 140
02EA ; else
02EA ; {
02EA .dbline 141
02EA ; me |= 0x40;
02EA 8C2D mov R24,R12
02EC 8064 ori R24,64
02EE C82E mov R12,R24
02F0 .dbline 142
02F0 ; }
02F0 L48:
02F0 .dbline 143
02F0 4695 lsr R20
02F2 .dbline 144
02F2 L44:
02F2 .dbline 132
02F2 A394 inc R10
02F4 L46:
02F4 .dbline 132
02F4 8A2D mov R24,R10
02F6 8430 cpi R24,4
02F8 80F3 brlo L43
02FA .dbline 145
02FA 0C2D mov R16,R12
02FC 0AD0 xcall _TxChar
02FE .dbline 146
02FE L40:
02FE .dbline 128
02FE 6395 inc R22
0300 L42:
0300 .dbline 128
0300 6230 cpi R22,2
0302 38F3 brlo L39
0304 .dbline 147
0304 ; TxByte >>=1;
0304 ; }
0304 ; TxChar(me);
0304 ; }
0304 ; delay_ms(1);
0304 01E0 ldi R16,1
0306 10E0 ldi R17,0
0308 0E940000 xcall _delay_ms
030C .dbline -2
030C .dbline 148
030C ; }
030C L38:
030C 0E940000 xcall pop_gset4
0310 .dbline 0 ; func end
0310 0895 ret
0312 .dbsym r i 22 c
0312 .dbsym r j 10 c
0312 .dbsym r me 12 c
0312 .dbsym r TxByte 20 c
0312 .dbend
0312 .dbfunc e TxChar _TxChar fV
0312 ; ch -> R16
.even
0312 _TxChar::
0312 .dbline -1
0312 .dbline 156
0312 ;
0312 ; //******************************************************************
0312 ; //* TxChar(unsigned char ch)
0312 ; //*
0312 ; //* Send a byte to the remote
0312 ; //******************************************************************
0312 ; void TxChar(unsigned char ch)
0312 ; {
0312 01C0 xjmp L51
0314 L50:
0314 .dbline 157
0314 A895 wdr
0316 L51:
0316 .dbline 157
0316 ; while (!(UCSR1A & 0x20)) WDR();
0316 20909B00 lds R2,155
031A 25FE sbrs R2,5
031C FBCF rjmp L50
031E .dbline 158
031E ; UDR1 = ch;
031E 00939C00 sts 156,R16
0322 .dbline -2
0322 .dbline 159
0322 ; }
0322 L49:
0322 .dbline 0 ; func end
0322 0895 ret
0324 .dbsym r ch 16 c
0324 .dbend
.area vector(rom, abs)
.org 120
0078 0C949201 jmp _RxChar
.area text(rom, con, rel)
0324 .dbfile C:\DATA\MP3\Player\Code\remote.c
.area bss(ram, con, rel)
0000 .dbfile C:\DATA\MP3\Player\Code\remote.c
0000 L54:
0000 .blkb 1
0001 L55:
0001 .blkb 1
0002 L56:
0002 .blkb 1
.area data(ram, con, rel)
0000 .dbfile C:\DATA\MP3\Player\Code\remote.c
0000 L57:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile C:\DATA\MP3\Player\Code\remote.c
.area text(rom, con, rel)
0324 .dbfile C:\DATA\MP3\Player\Code\remote.c
0324 .dbfunc e RxChar _RxChar fV
0324 .dbsym s Qte L57 c
0324 .dbsym s Error L56 c
0324 .dbsym s TempKey L55 c
0324 .dbsym s ch L54 c
.even
0324 _RxChar::
0324 2A92 st -y,R2
0326 3A92 st -y,R3
0328 8A93 st -y,R24
032A 9A93 st -y,R25
032C 2FB6 in R2,0x3f
032E 2A92 st -y,R2
0330 .dbline -1
0330 .dbline 168
0330 ;
0330 ; //******************************************************************
0330 ; //* void RxChar(void)
0330 ; //*
0330 ; //* Send a byte to the remote
0330 ; //******************************************************************
0330 ; #pragma interrupt_handler RxChar:31
0330 ; void RxChar(void)
0330 ; {
0330 .dbline 173
0330 ; static unsigned char ch,TempKey;
0330 ; static unsigned char Error;
0330 ; static unsigned char Qte = 0;
0330 ;
0330 ; ch = UDR1;
0330 20909C00 lds R2,156
0334 20920000 sts L54,R2
0338 .dbline 175
0338 ;
0338 ; if ((ch == 0xf0) && (Key == 0))
0338 822D mov R24,R2
033A 803F cpi R24,240
033C 59F4 brne L58
033E 20900000 lds R2,_Key
0342 2220 tst R2
0344 39F4 brne L58
0346 .dbline 176
0346 ; {
0346 .dbline 177
0346 ; Qte = 1;
0346 81E0 ldi R24,1
0348 80930000 sts L57,R24
034C .dbline 178
034C ; Error = FALSE;
034C 2224 clr R2
034E 20920200 sts L56,R2
0352 .dbline 179
0352 ; return;
0352 2FC0 xjmp L53
0354 L58:
0354 .dbline 182
0354 ; }
0354 ;
0354 ; if ((ch == 0x0f) && (Error == FALSE))
0354 80910000 lds R24,L54
0358 8F30 cpi R24,15
035A 61F4 brne L60
035C 20900200 lds R2,L56
0360 2220 tst R2
0362 41F4 brne L60
0364 .dbline 183
0364 ; {
0364 .dbline 184
0364 ; Qte = 0;
0364 2224 clr R2
0366 20920000 sts L57,R2
036A .dbline 185
036A ; Key = TempKey;
036A 20900100 lds R2,L55
036E 20920000 sts _Key,R2
0372 .dbline 186
0372 ; return;
0372 1FC0 xjmp L53
0374 L60:
0374 .dbline 189
0374 ; }
0374 ;
0374 ; if (Qte == 1)
0374 80910000 lds R24,L57
0378 8130 cpi R24,1
037A 41F4 brne L62
037C .dbline 190
037C ; {
037C .dbline 191
037C ; TempKey = ch;
037C 20900000 lds R2,L54
0380 20920100 sts L55,R2
0384 .dbline 192
0384 ; Qte++;
0384 8F5F subi R24,255 ; addi 1
0386 80930000 sts L57,R24
038A .dbline 193
038A ; return;
038A 13C0 xjmp L53
038C L62:
038C .dbline 196
038C 80910000 lds R24,L57
0390 8230 cpi R24,2
0392 79F4 brne L64
0394 20900000 lds R2,L54
0398 2094 com R2
039A 30900100 lds R3,L55
039E 3214 cp R3,R2
03A0 41F0 breq L64
03A2 .dbline 197
03A2 .dbline 198
03A2 81E0 ldi R24,1
03A4 80930200 sts L56,R24
03A8 .dbline 199
03A8 80910000 lds R24,L57
03AC 8F5F subi R24,255 ; addi 1
03AE 80930000 sts L57,R24
03B2 .dbline 200
03B2 L64:
03B2 .dbline -2
03B2 .dbline 202
03B2 ; }
03B2 ;
03B2 ; if ((Qte == 2) && (TempKey != ~ch))
03B2 ; {
03B2 ; Error = TRUE;
03B2 ; Qte++;
03B2 ; return;
03B2 ; }
03B2 ; }
03B2 L53:
03B2 2990 ld R2,y+
03B4 2FBE out 0x3f,R2
03B6 9991 ld R25,y+
03B8 8991 ld R24,y+
03BA 3990 ld R3,y+
03BC 2990 ld R2,y+
03BE .dbline 0 ; func end
03BE 1895 reti
03C0 .dbend
.area data(ram, con, rel)
0001 .dbfile C:\DATA\MP3\Player\Code\remote.c
0001 L4:
0001 .blkb 4
.area idata
0001 25630000 .byte 37,'c,0,0
.area data(ram, con, rel)
0005 .dbfile C:\DATA\MP3\Player\Code\remote.c
0005 L3:
0005 .blkb 6
.area idata
0005 256325730000 .byte 37,'c,37,'s,0,0
.area data(ram, con, rel)
000B .dbfile C:\DATA\MP3\Player\Code\remote.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -