?? tea5767.s
字號:
.module tea5767.c
.area text(rom, con, rel)
.dbfile tea5767.c
.dbfunc e delay _delay fV
; i -> R16,R17
.even
_delay::
.dbline -1
.dbline 7
; #include<iom32v.h>
; #include<macros.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define ulong unsigned long
; void delay()
; {
.dbline 8
; uint i=0;
clr R16
clr R17
.dbline 9
; for (i=0;i<2000;i++)
xjmp L5
L2:
.dbline 10
L3:
.dbline 9
subi R16,255 ; offset = 1
sbci R17,255
L5:
.dbline 9
cpi R16,208
ldi R30,7
cpc R17,R30
brlo L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.area data(ram, con, rel)
.dbfile tea5767.c
_radio_write_data::
.blkb 2
.area idata
.byte 'i,40
.area data(ram, con, rel)
.dbfile tea5767.c
.blkb 2
.area idata
.byte 160,19
.area data(ram, con, rel)
.dbfile tea5767.c
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile tea5767.c
.dbsym e radio_write_data _radio_write_data A[5:5]c
.area text(rom, con, rel)
.dbfile tea5767.c
.dbfunc e inputbyte _inputbyte fV
; mid -> R20
; i -> R22
; CD -> R10
.even
_inputbyte::
xcall push_gset3
mov R10,R16
.dbline -1
.dbline 14
; ;
; }
; unsigned char radio_write_data[5]={0x69,0x28,0xa0,0x13,0x00}; //要寫入TEA5767的數據
; void inputbyte(uchar CD) //寫入一字節數據
; {
.dbline 15
; uchar i,mid=0;
clr R20
.dbline 16
; for (i=0;i<8;i++)
clr R22
xjmp L10
L7:
.dbline 17
; {
.dbline 18
; mid=CD&0x80;
mov R20,R10
andi R20,128
.dbline 19
; if (mid==0)
brne L11
.dbline 20
; PORTC&=~BIT(PA0);
cbi 0x15,0
xjmp L12
L11:
.dbline 22
; else
; PORTC|=BIT(PA0);
sbi 0x15,0
L12:
.dbline 23
sbi 0x15,1
.dbline 24
xcall _delay
.dbline 25
cbi 0x15,1
.dbline 26
xcall _delay
.dbline 27
lsl R10
.dbline 28
L8:
.dbline 16
inc R22
L10:
.dbline 16
cpi R22,8
brlo L7
.dbline -2
L6:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r mid 20 c
.dbsym r i 22 c
.dbsym r CD 10 c
.dbend
.area data(ram, con, rel)
.dbfile tea5767.c
_radio::
.blkb 4
.area idata
.word 33728,1327
.area data(ram, con, rel)
.dbfile tea5767.c
.dbsym e radio _radio L
_N::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile tea5767.c
.dbsym e N _N I
.area text(rom, con, rel)
.dbfile tea5767.c
.dbfunc e GetKey _GetKey fV
.even
_GetKey::
xcall push_gset2
.dbline -1
.dbline 33
; PORTC|=BIT(PA1);
; delay();
; PORTC&=~BIT(PA1);
; delay();
; CD=CD<<1;
; }
; }
; long radio=87000000;
; int N=0;
; void GetKey(void)
; {
.dbline 34
; if(!(PINA&0x20)){
sbic 0x19,5
rjmp L14
.dbline 34
.dbline 35
; radio+=100000;
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
lds R4,_radio+2
lds R5,_radio+2+1
lds R2,_radio
lds R3,_radio+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _radio+1,R3
sts _radio,R2
sts _radio+2+1,R5
sts _radio+2,R4
.dbline 36
; if (radio>108000000)
ldi R20,0
ldi R21,243
ldi R22,111
ldi R23,6
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L16
.dbline 37
; radio=87000000;
ldi R20,192
ldi R21,131
ldi R22,47
ldi R23,5
sts _radio+1,R21
sts _radio,R20
sts _radio+2+1,R23
sts _radio+2,R22
L16:
.dbline 38
; N=(long)((radio-225000)*4)/32768;
lds R4,_radio+2
lds R5,_radio+2+1
lds R2,_radio
lds R3,_radio+1
ldi R20,4
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,160
ldi R21,187
ldi R22,13
ldi R23,0
movw R2,R16
movw R4,R18
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
ldi R20,0
ldi R21,128
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32s
sts _N+1,R17
sts _N,R16
.dbline 39
; PORTC|=BIT(PA2);
sbi 0x15,2
.dbline 40
; inputbyte(N>>8);
mov R16,R17
clr R17
sbrc R16,7
com R17
xcall _inputbyte
.dbline 41
; inputbyte(N);
lds R16,_N
xcall _inputbyte
.dbline 42
; inputbyte(0xa0);
ldi R16,160
xcall _inputbyte
.dbline 43
; inputbyte(0x13);
ldi R16,19
xcall _inputbyte
.dbline 44
; inputbyte(0x00);
clr R16
xcall _inputbyte
.dbline 45
; PORTC&=~BIT(PA2);
cbi 0x15,2
.dbline 46
; delay();
xcall _delay
.dbline 48
;
; }
xjmp L15
L14:
.dbline 49
; else if(!(PINA&0x10)){
sbic 0x19,4
rjmp L18
.dbline 49
.dbline 50
; radio-=100000;
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
lds R4,_radio+2
lds R5,_radio+2+1
lds R2,_radio
lds R3,_radio+1
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
sts _radio+1,R3
sts _radio,R2
sts _radio+2+1,R5
sts _radio+2,R4
.dbline 51
; if (radio<87000000)
ldi R20,192
ldi R21,131
ldi R22,47
ldi R23,5
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brge L20
.dbline 52
; radio=108000000;
ldi R20,0
ldi R21,243
ldi R22,111
ldi R23,6
sts _radio+1,R21
sts _radio,R20
sts _radio+2+1,R23
sts _radio+2,R22
L20:
.dbline 53
; N=(long)((radio-225000)*4)/32768;
lds R4,_radio+2
lds R5,_radio+2+1
lds R2,_radio
lds R3,_radio+1
ldi R20,4
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,160
ldi R21,187
ldi R22,13
ldi R23,0
movw R2,R16
movw R4,R18
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
ldi R20,0
ldi R21,128
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32s
sts _N+1,R17
sts _N,R16
.dbline 54
; PORTC|=BIT(PA2);
sbi 0x15,2
.dbline 55
; inputbyte(N>>8);
mov R16,R17
clr R17
sbrc R16,7
com R17
xcall _inputbyte
.dbline 56
; inputbyte(N);
lds R16,_N
xcall _inputbyte
.dbline 57
; inputbyte(0xa0);
ldi R16,160
xcall _inputbyte
.dbline 58
; inputbyte(0x13);
ldi R16,19
xcall _inputbyte
.dbline 59
; inputbyte(0x00);
clr R16
xcall _inputbyte
.dbline 60
; PORTC&=~BIT(PA2);
cbi 0x15,2
.dbline 61
; delay();
xcall _delay
.dbline 62
; }
L18:
L15:
.dbline -2
L13:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 68
;
;
; }
;
; void main()
; {
.dbline 69
; uchar i=0;
clr R20
.dbline 70
; DDRC=0xff;
ldi R24,255
out 0x14,R24
.dbline 71
; DDRA=0x00;
clr R2
out 0x1a,R2
.dbline 72
; PORTA=0xff;
out 0x1b,R24
.dbline 73
; delay();
xcall _delay
.dbline 75
; //PORTC|=BIT(PA3);
; PORTC|=BIT(PA4);
sbi 0x15,4
xjmp L24
L23:
.dbline 77
.dbline 78
xcall _GetKey
.dbline 79
L24:
.dbline 76
xjmp L23
X0:
.dbline -2
L22:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -