📄 bu1923a.lis
字号:
; }
00FC 01C0 xjmp L18
00FE L17:
00FE .dbline 94
00FE .dbline 96
00FE E6D0 xcall _get_rds_block
0100 .dbline 97
0100 L18:
0100 .dbline -2
0100 .dbline 99
; else
; {
; // printf("get_rds_block\n");
; get_rds_block();
; }
; //EIRR_ER3 = 0;
; }
0100 L13:
0100 0E940000 xcall pop_lset
0104 .dbline 0 ; func end
0104 1895 reti
0106 .dbfunc s rds_syc_detect _rds_syc_detect fI
.area func_lit(rom, con, rel)
0000 L59:
0000 BD00 .word `L30
0002 1001 .word `L43
0004 1F01 .word `L46
0006 2E01 .word `L49
0008 2E01 .word `L49
000A 5201 .word `L55
.area text(rom, con, rel)
0106 .dbfile D:\avrmcu\AT980\bu1923\bu1923a.c
; p -> R20,R21
; temp_syc_word -> R16,R17
; i -> R22
.even
0106 _rds_syc_detect::
0106 0E940000 xcall push_gset2
010A .dbline -1
010A .dbline 117
; /*
; unsigned int compute_syc(void)
; {
; unsigned int i,syc_value;
; unsigned long k;
; syc_value = 0;
; k= 0x02000000;
; for(i=0;i<26;i++)
; {
; if(rds_buffer&k)
; syc_value ^= matrix_H[i];
; k>>1;
; }
; return syc_value;
; }*/
;
; void rds_syc_detect(void)
; {
010A .dbline 121
; register unsigned char i;
; register unsigned int temp_syc_word;
; register const unsigned int *p;
; p = &matrix_H[25];
010A 40E0 ldi R20,<_matrix_H+50
010C 50E0 ldi R21,>_matrix_H+50
010E .dbline 122
; temp_syc_word = 0;
010E 0027 clr R16
0110 1127 clr R17
0112 .dbline 123
; asm("lds R2, _rds_bit_buffer\n"
0112 20906900 lds R2, _rds_bit_buffer
0116 30906A00 lds R3, _rds_bit_buffer+1
011A 40906B00 lds R4, _rds_bit_buffer+2
011E 50906C00 lds R5, _rds_bit_buffer+3
0122 .dbline 127
; "lds R3, _rds_bit_buffer+1\n"
; "lds R4, _rds_bit_buffer+2\n"
; "lds R5, _rds_bit_buffer+3");
; i = 0;
0122 6627 clr R22
0124 L24:
0124 .dbline 129
; do
; {
0124 .dbline 130
; asm("sbrs R2,0\n"
0124 20FE sbrs R2,0
0126 06C0 rjmp _bit_is_zero
0128 .dbline 132
; "rjmp _bit_is_zero");
; temp_syc_word ^= *p; //matrix_H[i];
0128 FA01 movw R30,R20
012A 0590 lpm R0,Z+
012C 1490 lpm R1,Z
012E F001 movw R30,R0
0130 0E27 eor R16,R30
0132 1F27 eor R17,R31
0134 .dbline 133
; asm("_bit_is_zero:");
0134 _bit_is_zero:
0134 .dbline 134
; asm("lsr R5\n"
0134 5694 lsr R5
0136 4794 ror R4
0138 3794 ror R3
013A 2794 ror R2
013C .dbline 138
; "ror R4\n"
; "ror R3\n"
; "ror R2");
; p--;
013C 4250 subi R20,2
013E 5040 sbci R21,0
0140 .dbline 139
; i++;
0140 6395 inc R22
0142 .dbline 140
0142 L25:
0142 .dbline 140
; } while(i<26);
0142 6A31 cpi R22,26
0144 78F3 brlo L24
0146 .dbline 141
; switch(rds_step)
0146 20910500 lds R18,_rds_step
014A 3327 clr R19
014C 2130 cpi R18,1
014E E0E0 ldi R30,0
0150 3E07 cpc R19,R30
0152 0CF4 brge X2
0154 B8C0 xjmp L27
0156 X2:
0156 86E0 ldi R24,6
0158 90E0 ldi R25,0
015A 8217 cp R24,R18
015C 9307 cpc R25,R19
015E 0CF4 brge X3
0160 B2C0 xjmp L27
0162 X3:
0162 80E0 ldi R24,<L59
0164 90E0 ldi R25,>L59
0166 F901 movw R30,R18
0168 3197 sbiw R30,1
016A EE0F lsl R30
016C FF1F rol R31
016E E80F add R30,R24
0170 F91F adc R31,R25
0172 0590 lpm R0,Z+
0174 1490 lpm R1,Z
0176 F001 movw R30,R0
0178 0994 ijmp
017A X0:
017A .dbline 142
; {
017A L30:
017A .dbline 145
;
; case SEARCH_SYC_STEP:
; switch(temp_syc_word)
017A 0C3C cpi R16,204
017C E3E0 ldi R30,3
017E 1E07 cpc R17,R30
0180 81F1 breq L35
0182 8CEC ldi R24,972
0184 93E0 ldi R25,3
0186 8017 cp R24,R16
0188 9107 cpc R25,R17
018A 7CF0 brlt L40
018C L39:
018C 0835 cpi R16,88
018E E2E0 ldi R30,2
0190 1E07 cpc R17,R30
0192 09F4 brne X4
0194 3EC0 xjmp L38
0196 X4:
0196 0835 cpi R16,88
0198 E2E0 ldi R30,2
019A 1E07 cpc R17,R30
019C 0CF4 brge X5
019E 93C0 xjmp L28
01A0 X5:
01A0 L41:
01A0 0C35 cpi R16,92
01A2 E2E0 ldi R30,2
01A4 1E07 cpc R17,R30
01A6 E9F0 breq L35
01A8 8EC0 xjmp L28
01AA L40:
01AA 043D cpi R16,212
01AC E3E0 ldi R30,3
01AE 1E07 cpc R17,R30
01B0 89F0 breq L34
01B2 043D cpi R16,212
01B4 E3E0 ldi R30,3
01B6 1E07 cpc R17,R30
01B8 0CF4 brge X6
01BA 85C0 xjmp L28
01BC X6:
01BC L42:
01BC 083D cpi R16,216
01BE E3E0 ldi R30,3
01C0 1E07 cpc R17,R30
01C2 09F0 breq L33
01C4 80C0 xjmp L28
01C6 X1:
01C6 .dbline 146
; {
01C6 L33:
01C6 .dbline 148
; case A_SYC_WORD:
; rds_step = SYC_B_STEP;
01C6 83E0 ldi R24,3
01C8 80930500 sts _rds_step,R24
01CC .dbline 149
; bit_count = 0;
01CC 2224 clr R2
01CE 20920D00 sts _bit_count,R2
01D2 .dbline 151
; //printf("get a word\n");
; break;
01D2 79C0 xjmp L28
01D4 L34:
01D4 .dbline 153
; case B_SYC_WORD:
; rds_step = SYC_C_STEP;
01D4 84E0 ldi R24,4
01D6 80930500 sts _rds_step,R24
01DA .dbline 154
; bit_count = 0;
01DA 2224 clr R2
01DC 20920D00 sts _bit_count,R2
01E0 .dbline 156
; // printf("get b word\n");
; break;
01E0 72C0 xjmp L28
01E2 L35:
01E2 .dbline 159
; case C_SYC_WORD:
; case C1_SYC_WORD:
; rds_step = SYC_D_STEP;
01E2 86E0 ldi R24,6
01E4 80930500 sts _rds_step,R24
01E8 .dbline 160
; bit_count = 0;
01E8 2224 clr R2
01EA 20920D00 sts _bit_count,R2
01EE .dbline 161
; if(temp_syc_word == C_SYC_WORD)
01EE 0C35 cpi R16,92
01F0 E2E0 ldi R30,2
01F2 1E07 cpc R17,R30
01F4 39F4 brne L36
01F6 .dbline 162
; c_word_val = C_OFF_WORD;
01F6 88E6 ldi R24,616
01F8 92E0 ldi R25,2
01FA 90930200 sts _c_word_val+1,R25
01FE 80930100 sts _c_word_val,R24
0202 61C0 xjmp L28
0204 L36:
0204 .dbline 164
; else
; c_word_val = C1_OFF_WORD;
0204 80E5 ldi R24,848
0206 93E0 ldi R25,3
0208 90930200 sts _c_word_val+1,R25
020C 80930100 sts _c_word_val,R24
0210 .dbline 166
; //printf("get c word\n");
; break;
0210 5AC0 xjmp L28
0212 L38:
0212 .dbline 168
; case D_SYC_WORD:
; rds_step = SYC_A_STEP;
0212 82E0 ldi R24,2
0214 80930500 sts _rds_step,R24
0218 .dbline 169
; bit_count = 0;
0218 2224 clr R2
021A 20920D00 sts _bit_count,R2
021E .dbline 171
; //printf("get d word\n");
; break;
021E .dbline 173
; }
; break;
021E 53C0 xjmp L28
0220 L43:
0220 .dbline 175
; case SYC_A_STEP:
; if(temp_syc_word!=A_SYC_WORD)
0220 083D cpi R16,216
0222 E3E0 ldi R30,3
0224 1E07 cpc R17,R30
0226 21F0 breq L44
0228 .dbline 176
; {
0228 .dbline 177
; rds_step = SEARCH_SYC_STEP;
0228 81E0 ldi R24,1
022A 80930500 sts _rds_step,R24
022E .dbline 178
; }
022E 4BC0 xjmp L28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -