📄 main.lis
字号:
00B5 ; dphase = FREQ_MULT*atof(rx_buffer);
00B5 5000 mov A,>_rx_buffer
00B7 08 push A
00B8 5000 mov A,<_rx_buffer
00BA 08 push A
00BB 7C0000 xcall _atof
00BE 38FE add SP,-2
00C0 5100 mov A,[__r0]
00C2 08 push A
00C3 5100 mov A,[__r1]
00C5 08 push A
00C6 5100 mov A,[__r2]
00C8 08 push A
00C9 5100 mov A,[__r3]
00CB 08 push A
00CC 5045 mov A,69
00CE 08 push A
00CF 5086 mov A,-122
00D1 08 push A
00D2 5038 mov A,56
00D4 08 push A
00D5 5000 mov A,0
00D7 08 push A
00D8 7C0000 xcall __fpmul
00DB 18 pop A
00DC 5300 mov [__r3],A
00DE 18 pop A
00DF 5300 mov [__r2],A
00E1 18 pop A
00E2 5300 mov [__r1],A
00E4 18 pop A
00E5 5300 mov [__r0],A
00E7 38FC add SP,-4
00E9 504F mov A,79
00EB 08 push A
00EC 5000 mov A,0
00EE 08 push A
00EF 08 push A
00F0 08 push A
00F1 5100 mov A,[__r0]
00F3 08 push A
00F4 5100 mov A,[__r1]
00F6 08 push A
00F7 5100 mov A,[__r2]
00F9 08 push A
00FA 5100 mov A,[__r3]
00FC 08 push A
00FD 7C0000 xcall __fpcmp
0100 38F8 add SP,-8
0102 39FF cmp A,-1
0104 A055 jz L11
0106 504F mov A,79
0108 08 push A
0109 5000 mov A,0
010B 08 push A
010C 08 push A
010D 08 push A
010E 5100 mov A,[__r0]
0110 08 push A
0111 5100 mov A,[__r1]
0113 08 push A
0114 5100 mov A,[__r2]
0116 08 push A
0117 5100 mov A,[__r3]
0119 08 push A
011A 7C0000 xcall __fpsub
011D 18 pop A
011E 5300 mov [__r7],A
0120 18 pop A
0121 5300 mov [__r6],A
0123 18 pop A
0124 5300 mov [__r5],A
0126 18 pop A
0127 38FC add SP,-4
0129 08 push A
012A 5100 mov A,[__r5]
012C 08 push A
012D 5100 mov A,[__r6]
012F 08 push A
0130 5100 mov A,[__r7]
0132 08 push A
0133 7C0000 xcall __fp2long
0136 18 pop A
0137 5300 mov [__r7],A
0139 18 pop A
013A 5300 mov [__r6],A
013C 18 pop A
013D 5300 mov [__r5],A
013F 18 pop A
0140 5300 mov [__r4],A
0142 5100 mov A,[__r7]
0144 5405 mov [X+5],A
0146 5100 mov A,[__r6]
0148 0900 adc A,0
014A 5404 mov [X+4],A
014C 5100 mov A,[__r5]
014E 0900 adc A,0
0150 5403 mov [X+3],A
0152 5100 mov A,[__r4]
0154 0980 adc A,-128
0156 5402 mov [X+2],A
0158 8028 xjmp L12
015A L11:
015A 5100 mov A,[__r0]
015C 08 push A
015D 5100 mov A,[__r1]
015F 08 push A
0160 5100 mov A,[__r2]
0162 08 push A
0163 5100 mov A,[__r3]
0165 08 push A
0166 7C0000 xcall __fp2long
0169 18 pop A
016A 5300 mov [__r3],A
016C 18 pop A
016D 5300 mov [__r2],A
016F 18 pop A
0170 5300 mov [__r1],A
0172 18 pop A
0173 5402 mov [X+2],A
0175 5100 mov A,[__r1]
0177 5403 mov [X+3],A
0179 5100 mov A,[__r2]
017B 5404 mov [X+4],A
017D 5100 mov A,[__r3]
017F 5405 mov [X+5],A
0181 L12:
0181 5202 mov A,[X+2]
0183 5304 mov [_dphase],A
0185 5203 mov A,[X+3]
0187 5305 mov [_dphase+1],A
0189 5204 mov A,[X+4]
018B 5306 mov [_dphase+2],A
018D 5205 mov A,[X+5]
018F 5307 mov [_dphase+3],A
0191 .dbline 58
0191 ; ExchangeSend("The frequency was set well.\n\r");
0191 5045 mov A,>L13
0193 08 push A
0194 5045 mov A,<L13
0196 08 push A
0197 7C0000 xcall _ExchangeSend
019A 38FE add SP,-2
019C .dbline 59
019C ; break;
019C 804F xjmp L7
019E L14:
019E .dbline 63
019E ;
019E ; case 'g':
019E ; case 'G':
019E ; rx_buffer[msb] = 0;
019E 5F0001 mov [__r1],[_msb]
01A1 550000 mov [__r0],0
01A4 060000 add [__r1],<_rx_buffer
01A7 0E0000 adc [__r0],>_rx_buffer
01AA 5000 mov A,0
01AC 3F00 mvi [__r1],A
01AE .dbline 64
01AE ; lsb = atoi(rx_buffer);
01AE 5000 mov A,>_rx_buffer
01B0 08 push A
01B1 5000 mov A,<_rx_buffer
01B3 08 push A
01B4 7C0000 xcall _atoi
01B7 38FE add SP,-2
01B9 5F0000 mov [_lsb],[__r1]
01BC .dbline 65
01BC ; if (lsb < GAIN_LEVELS)
01BC 3C0016 cmp [_lsb],22
01BF D02C jnc L7
01C1 X8:
01C1 .dbline 66
01C1 ; {
01C1 .dbline 67
01C1 ; PGA_OUT_SetGain(gain_table[lsb]);
01C1 5F0000 mov [__r1],[_lsb]
01C4 550000 mov [__r0],0
01C7 6500 asl [__r1]
01C9 6B00 rlc [__r0]
01CB 060000 add [__r1],<_gain_table
01CE 0E0000 adc [__r0],>_gain_table
01D1 5100 mov A,[__r0]
01D3 10 push X
01D4 08 push A
01D5 5800 mov X,[__r1]
01D7 28 romx
01D8 18 pop A
01D9 75 inc X
01DA 0900 adc A,0
01DC 28 romx
01DD 7C0000 xcall _PGA_OUT_SetGain
01E0 20 pop X
01E1 .dbline 68
01E1 ; ExchangeSend("The gain was set well.\n\r");
01E1 502C mov A,>L17
01E3 08 push A
01E4 502C mov A,<L17
01E6 08 push A
01E7 7C0000 xcall _ExchangeSend
01EA 38FE add SP,-2
01EC .dbline 69
01EC ; }
01EC .dbline 70
01EC ; break;
01EC .dbline 73
01EC ;
01EC ; default:
01EC ; break;
01EC L7:
01EC .dbline 76
01EC ; }
01EC ;
01EC ; ready = TRUE;
01EC 550001 mov [_ready],1
01EF 8073 xjmp L20
01F1 L19:
01F1 .dbline 79
01F1 ;
01F1 ; while(ready)
01F1 ; {
01F1 .dbline 80
01F1 ; accum += dphase;
01F1 5107 mov A,[_dphase+3]
01F3 0403 add [_accum+3],A
01F5 5106 mov A,[_dphase+2]
01F7 0C02 adc [_accum+2],A
01F9 5105 mov A,[_dphase+1]
01FB 0C01 adc [_accum+1],A
01FD 5104 mov A,[_dphase]
01FF 0C00 adc [_accum],A
0201 .dbline 81
0201 ; SB(adr,0) = SB(accum,0);
0201 5F0800 mov [_adr],[_accum]
0204 .dbline 82
0204 ; SB(adr,1) = SB(accum,1);
0204 5F0901 mov [_adr+1],[_accum+1]
0207 .dbline 83
0207 ; if (SB(accum,0) & QUATER_BIT) adr ^= 0xFFFF;
0207 470004 tst [_accum],4
020A A007 jz L24
020C .dbline 83
020C 3609FF xor [_adr+1],-1
020F 3608FF xor [_adr],-1
0212 L24:
0212 .dbline 84
0212 ; adr &= TABLE_MASK;
0212 2609FF and [_adr+1],-1
0215 260803 and [_adr],3
0218 .dbline 86
0218 ;
0218 ; msb = lsb = sin_table[adr];
0218 5109 mov A,[_adr+1]
021A 0100 add A,<_sin_table
021C 5300 mov [__r1],A
021E 5108 mov A,[_adr]
0220 0900 adc A,>_sin_table
0222 10 push X
0223 5800 mov X,[__r1]
0225 28 romx
0226 20 pop X
0227 5300 mov [__r0],A
0229 5300 mov [_lsb],A
022B 5F0100 mov [_msb],[_lsb]
022E .dbline 88
022E ;
022E ; msb >>= 3;
022E 5101 mov A,[_msb]
0230 67 asr A
0231 67 asr A
0232 67 asr A
0233 211F and A,31
0235 5301 mov [_msb],A
0237 .dbline 89
0237 ; msb |= 0x80;
0237 2E0180 or [_msb],-128
023A .dbline 91
023A ;
023A ; lsb &= 0x07;
023A 260007 and [_lsb],7
023D .dbline 92
023D ; lsb <<= 2;
023D 6500 asl [_lsb]
023F 6500 asl [_lsb]
0241 .dbline 93
0241 ; lsb |= 0x80;
0241 2E0080 or [_lsb],-128
0244 .dbline 95
0244 ;
0244 ; if (SB(accum,0) & SIGN_BIT)
0244 470008 tst [_accum],8
0247 A008 jz L26
0249 .dbline 96
0249 ; msb |= 0x20;
0249 2E0120 or [_msb],32
024C 5101 mov A,[_msb]
024E 8006 xjmp L27
0250 L26:
0250 .dbline 98
0250 ; else
0250 ; lsb |= 0x20;
0250 2E0020 or [_lsb],32
0253 5100 mov A,[_lsb]
0255 L27:
0255 .dbline 100
0255 436501 or reg[65h], 01h
0258
0258 .dbline 101
0258 5101 mov A,[_msb]
025A 6080 mov REG[-128],A
025C .dbline 102
025C 4165FE and reg[65h], FEh
025F
025F .dbline 103
025F 5100 mov A,[_lsb]
0261 6090 mov REG[-112],A
0263 .dbline 106
0263 L20:
0263 .dbline 78
0263 3C0000 cmp [_ready],0
0266 BF8A jnz L19
0268 .dbline 108
0268 L4:
0268 .dbline 49
0268 8DCE xjmp L3
026A X1:
026A .dbline -2
026A .dbline 109
026A ;
026A ; M8C_Stall;
026A ; DAC_MSB_CR0 = msb;
026A ; M8C_Unstall;
026A ; DAC_LSB_CR0 = lsb;
026A ; //instead it, the fixed version DAC_WriteStall2B(lsb, msb) can be used
026A ; //but you have less time reserve
026A ; }
026A ;
026A ; }
026A ; }
026A L1:
026A 38FA add SP,-6
026C 20 pop X
026D .dbline 0 ; func end
026D 7F ret
026E .dbend
.area bss(ram, con, rel)
0000 .dbfile ./main.c
0000 _lsb:
0000 .blkb 1
0001 .dbsym s lsb _lsb c
0001 _msb:
0001 .blkb 1
0002 .dbsym s msb _msb c
.area lit(rom, con, rel)
042C L17:
042C 546865206761696E2077617320736574 .byte 'T,'h,'e,32,'g,'a,'i,'n,32,'w,'a,'s,32,'s,'e,'t
043C 2077656C6C2E0A0D00 .byte 32,'w,'e,'l,'l,46,10,13,0
0445 L13:
0445 546865206672657175656E6379207761 .byte 'T,'h,'e,32,'f,'r,'e,'q,'u,'e,'n,'c,'y,32,'w,'a
0455 73207365742077656C6C2E0A0D00 .byte 's,32,'s,'e,'t,32,'w,'e,'l,'l,46,10,13,0
0463 L2:
0463 546865204444532067656E657261746F .byte 'T,'h,'e,32,'D,'D,'S,32,'g,'e,'n,'e,'r,'a,'t,'o
0473 722069732072656164792E0A0D00 .byte 'r,32,'i,'s,32,'r,'e,'a,'d,'y,46,10,13,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -