📄 pt2320.s
字号:
.module pt2320.c
.area data(ram, con, rel)
_Mchvol::
.blkb 1
.area idata
.byte 30
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Mchvol _Mchvol c
_Treblevol::
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Treblevol _Treblevol c
_Bassvol::
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Bassvol _Bassvol c
_Balanceval::
.blkb 1
.area idata
.byte 7
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Balanceval _Balanceval c
_Loudnessval::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Loudnessval _Loudnessval c
_pt_fsel_val::
.blkb 1
.area idata
.byte 4
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s pt_fsel_val _pt_fsel_val c
_Schvol::
.blkb 1
.area idata
.byte 8
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Schvol _Schvol c
_SWchvol::
.blkb 1
.area idata
.byte 8
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s SWchvol _SWchvol c
_Cchvol::
.blkb 1
.area idata
.byte 8
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbsym s Cchvol _Cchvol c
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
.dbfunc s pt2320_3d _pt2320_3d fI
.even
_pt2320_3d::
.dbline -1
.dbline 36
; /*pt2320*/
; #include <iom163.h>
; #include "..\main.h"
; #include "..\io.h"
; #define PT_LMM 0x10
; #define PT_RMM 0x20
; #define PT_MC 0x30
; #define PT_LMR 0x40
; #define PT_RMR 0x50
; #define PT_MSW 0x60
; #define PT_FSEL 0x70
; #define PT_BASS 0x90
; #define PT_INTER 0xa0
; #define PT_TREBLE 0xb0
; #define PT_SWITCH 0xc0
; #define PT_MVOL_ONE 0xd0
; #define PT_MVOL_TEN 0xe0
; #define PT_RESET 0xf0
;
; #define DVD_CH 0x07
; #define AV3_CH 0x06
; #define AV2_CH 0x05
; #define AV1_CH 0x04
; #define TUNER_CH 0x03
;
; unsigned char Mchvol=30,Treblevol=7,Bassvol=7,Balanceval=7,Loudnessval=0;
; unsigned char pt_fsel_val=4;
; #ifndef NO_SIX_CHANNEL_OUTPUT
; unsigned char Schvol=8,SWchvol=8,Cchvol=8;
; #endif
; #define pt2320_switch(x) pt2320_write(PT_SWITCH|x)
; extern unsigned char g_avtv,muted,work_mode,rds_display_type,display_type,g_ui_tmp_msg_cnt;
; extern unsigned int g_vfd_grid_buffer[];
;
; void pt2320_3d(void)
; {
.dbline 37
; if(Loudnessval)
lds R2,_Loudnessval
tst R2
breq L2
.dbline 38
; pt_fsel_val &= 0x0b;
lds R24,_pt_fsel_val
andi R24,11
sts _pt_fsel_val,R24
xjmp L3
L2:
.dbline 40
; else
; pt_fsel_val |= 0x04;
lds R24,_pt_fsel_val
ori R24,4
sts _pt_fsel_val,R24
L3:
.dbline 41
; pt2320_write(PT_FSEL|pt_fsel_val);
lds R16,_pt_fsel_val
clr R17
ori R16,112
xcall _pt2320_write
.dbline -2
.dbline 42
; }
L1:
.dbline 0 ; func end
ret
.dbfunc s set_balance _set_balance fI
; val1 -> R20
.even
_set_balance::
xcall push_gset1
.dbline -1
.dbline 45
;
; void set_balance(void)
; {
.dbline 47
; unsigned char val1;
; if(Balanceval<7)
lds R24,_Balanceval
cpi R24,7
brsh L5
.dbline 48
; {
.dbline 49
; val1= 7-Balanceval;
mov R2,R24
ldi R20,7
sub R20,R2
.dbline 50
; val1 <<=1;
lsl R20
.dbline 51
; }
xjmp L6
L5:
.dbline 53
; else
; val1 = 0;
clr R20
L6:
.dbline 54
; pt2320_write(PT_RMM|++val1);
mov R24,R20
subi R24,255 ; addi 1
mov R2,R24
mov R20,R2
mov R16,R2
clr R17
ori R16,32
xcall _pt2320_write
.dbline 56
;
; if(Balanceval>7)
ldi R24,7
lds R2,_Balanceval
cp R24,R2
brsh L7
.dbline 57
; {
.dbline 58
; val1=Balanceval-7;
mov R20,R2
subi R20,7
.dbline 59
; val1<<=1;
lsl R20
.dbline 60
; }
xjmp L8
L7:
.dbline 62
; else
; val1 = 0;
clr R20
L8:
.dbline 63
; pt2320_write(PT_LMM|++val1);
mov R24,R20
subi R24,255 ; addi 1
mov R2,R24
mov R20,R2
mov R16,R2
clr R17
ori R16,16
xcall _pt2320_write
.dbline -2
.dbline 64
; }
L4:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r val1 20 c
.dbfunc s pt2320_vol _pt2320_vol fI
; val_ten -> R20
; val_one -> R22
.even
_pt2320_vol::
xcall push_gset2
sbiw R28,2
.dbline -1
.dbline 67
; #define PT2320_ADD 0x88
; void pt2320_vol(void)
; {
.dbline 70
; unsigned char val_one,val_ten;
; //temp_val = Mchvol;
; if(Mchvol==0)
lds R2,_Mchvol
tst R2
brne L10
.dbline 71
; {
.dbline 72
; val_one =9;
ldi R22,9
.dbline 73
; val_ten =7;
ldi R20,7
.dbline 74
; }
xjmp L11
L10:
.dbline 76
; else
; {
.dbline 77
; val_one = 60-Mchvol;
lds R2,_Mchvol
ldi R22,60
sub R22,R2
.dbline 78
; val_ten = val_one/10;
ldi R17,10
mov R16,R22
xcall div8u
mov R20,R16
.dbline 79
; val_one %= 10;
ldi R17,10
mov R16,R22
xcall mod8u
mov R22,R16
.dbline 80
; }
L11:
.dbline 83
; //Mchvol = vol_table[Mchvol];
; //VFD_volume = (BYTE)temp_val&0x3f;
; i2c_write(PT2320_ADD,PT_MVOL_TEN|val_ten,PT_MVOL_ONE|val_one);
mov R24,R22
clr R25
ori R24,208
std y+0,R24
std y+1,R25
mov R18,R20
clr R19
ori R18,224
ldi R16,136
ldi R17,0
xcall _i2c_write
.dbline -2
.dbline 84
; }
L9:
adiw R28,2
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r val_ten 20 c
.dbsym r val_one 22 c
.dbfunc s bt_trans _bt_trans fI
; val -> R16
.even
_bt_trans::
.dbline -1
.dbline 88
;
;
; unsigned char bt_trans(unsigned char val)
; {
.dbline 89
; if(val>7)
ldi R24,7
cp R24,R16
brsh L13
.dbline 90
; val = (22-val);
ldi R24,22
sub R24,R16
mov R16,R24
L13:
.dbline 91
; return val;
clr R17
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbsym r val 16 c
.dbfunc s pt2320_bass _pt2320_bass fI
; bass -> R20
.even
_pt2320_bass::
xcall push_gset1
.dbline -1
.dbline 94
; }
; void pt2320_bass(void)
; {
.dbline 96
; unsigned char bass;
; bass = bt_trans(Bassvol);
lds R16,_Bassvol
xcall _bt_trans
movw R2,R16
mov R20,R2
.dbline 97
; pt2320_write(PT_BASS|bass);
mov R16,R20
clr R17
ori R16,144
xcall _pt2320_write
.dbline -2
.dbline 99
;
; }
L15:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r bass 20 c
.dbfunc s pt2320_treble _pt2320_treble fI
; treble -> R20
.even
_pt2320_treble::
xcall push_gset1
.dbline -1
.dbline 102
;
; void pt2320_treble(void)
; {
.dbline 104
; unsigned char treble;
; treble = bt_trans(Treblevol);
lds R16,_Treblevol
xcall _bt_trans
movw R2,R16
mov R20,R2
.dbline 105
; pt2320_write(PT_TREBLE|treble);
mov R16,R20
clr R17
ori R16,176
xcall _pt2320_write
.dbline -2
.dbline 106
; }
L16:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r treble 20 c
.dbfunc s pt2320_Cch _pt2320_Cch fI
.even
_pt2320_Cch::
.dbline -1
.dbline 108
; void pt2320_Cch(void)
; {
.dbline 109
; pt2320_write(PT_MC|(15-Cchvol));
lds R2,_Cchvol
clr R3
ldi R16,15
ldi R17,0
sub R16,R2
sbc R17,R3
ori R16,48
xcall _pt2320_write
.dbline -2
.dbline 110
; }
L17:
.dbline 0 ; func end
ret
.dbfunc s pt2320_SWch _pt2320_SWch fI
.even
_pt2320_SWch::
.dbline -1
.dbline 112
; void pt2320_SWch(void)
; {
.dbline 113
; pt2320_write(PT_MSW|(15-SWchvol));
lds R2,_SWchvol
clr R3
ldi R16,15
ldi R17,0
sub R16,R2
sbc R17,R3
ori R16,96
xcall _pt2320_write
.dbline -2
.dbline 114
; }
L18:
.dbline 0 ; func end
ret
.dbfunc s pt2320_Sch _pt2320_Sch fI
.even
_pt2320_Sch::
sbiw R28,2
.dbline -1
.dbline 116
; void pt2320_Sch(void)
; {
.dbline 117
; i2c_write(PT2320_ADD,PT_LMR|(15-Schvol),PT_RMR|(15-Schvol));
lds R2,_Schvol
clr R3
ldi R24,15
ldi R25,0
sub R24,R2
sbc R25,R3
movw R2,R24
ori R24,80
std y+0,R24
std y+1,R25
movw R18,R2
ori R18,64
ldi R16,136
ldi R17,0
xcall _i2c_write
.dbline -2
.dbline 118
; }
L19:
adiw R28,2
.dbline 0 ; func end
ret
.dbfunc s pt2320_init _pt2320_init fI
.even
_pt2320_init::
.dbline -1
.dbline 120
; void pt2320_init(void)
; {
.dbline 121
; pt2320_vol(); //vol
xcall _pt2320_vol
.dbline 122
; set_balance();
xcall _set_balance
.dbline 123
; pt2320_bass(); //BASS
xcall _pt2320_bass
.dbline 124
; pt2320_treble(); //treble
xcall _pt2320_treble
.dbline 125
; pt2320_3d();
xcall _pt2320_3d
.dbline 127
; #ifndef NO_SIX_CHANNEL_OUTPUT
; pt2320_Cch();
xcall _pt2320_Cch
.dbline 128
; pt2320_SWch();
xcall _pt2320_SWch
.dbline 129
; pt2320_Sch();
xcall _pt2320_Sch
.dbline -2
.dbline 131
; #endif
; }
L20:
.dbline 0 ; func end
ret
.dbfunc s work_mode_convert _work_mode_convert fI
.area func_lit(rom, con, rel)
L34:
.word `L28
.word `L25
.word `L27
.word `L26
.area text(rom, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
; i -> R20
.even
_work_mode_convert::
xcall push_gset1
sbiw R28,2
.dbline -1
.dbline 134
;
; void work_mode_convert(void)
; {
.dbline 137
; unsigned char i;
; #ifdef SGJM_RDS
; rds_display_type = DIS_FREQUENCY;
clr R2
sts _rds_display_type,R2
.dbline 140
; #endif
;
; muted = 1;
ldi R24,1
sts _muted,R24
.dbline 141
; MCU_mute();
xcall _MCU_mute
.dbline 142
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 143
; i2c_write(PT2320_ADD,PT_MVOL_TEN|7,PT_MVOL_ONE|9);
ldi R24,217
ldi R25,0
std y+0,R24
std y+1,R25
ldi R18,231
ldi R19,0
ldi R16,136
ldi R17,0
xcall _i2c_write
.dbline 144
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 145
; decoder_power_off();
clr R16
clr R17
xcall _DEC_power
.dbline 146
; SPCR = 0x00;
clr R2
out 0xd,R2
.dbline 147
; Set_FS1_L();
CBI 0x15,3
.dbline 148
; switch(work_mode)
lds R20,_work_mode
clr R21
cpi R20,0
ldi R30,0
cpc R21,R30
brge X1
xjmp L22
X1:
ldi R24,3
ldi R25,0
cp R24,R20
cpc R25,R21
brge X2
xjmp L22
X2:
ldi R24,<L34
ldi R25,>L34
movw R30,R20
lsl R30
rol R31
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
ijmp
X0:
.dbline 149
; {
L25:
.dbline 153
;
; case TUNER_MODE: //Radio Mode
; //decoder_power_off();
; Set_FS1_H();
SBI 0x15,3
.dbline 155
; #ifdef SGJM_RDS
; rds_display_type = 0;
clr R2
sts _rds_display_type,R2
.dbline 157
; #endif
; pt2320_switch(TUNER_CH);
ldi R16,195
ldi R17,0
xcall _pt2320_write
.dbline 158
; init_radio();
xcall _init_radio
.dbline 159
; break;
xjmp L23
L26:
.dbline 163
;
; case AV2_MODE: //AV Mode
; //decoder_power_off();
; pt2320_switch(AV2_CH);
ldi R16,197
ldi R17,0
xcall _pt2320_write
.dbline 164
; break;
xjmp L23
L27:
.dbline 167
; case AV1_MODE:
; //decoder_power_off();
; pt2320_switch(AV1_CH);
ldi R16,196
ldi R17,0
xcall _pt2320_write
.dbline 168
; break;
xjmp L23
L28:
.dbline 170
; case DVD_MODE:
; decoder_power_on();
ldi R16,1
ldi R17,0
xcall _DEC_power
.dbline 171
; delay_ms(200);
ldi R16,200
ldi R17,0
xcall _delay_ms
.dbline 172
; for(i=0;i<12;i++)
clr R20
xjmp L32
L29:
.dbline 173
ldi R24,<_g_vfd_grid_buffer
ldi R25,>_g_vfd_grid_buffer
mov R30,R20
clr R31
lsl R30
rol R31
add R30,R24
adc R31,R25
clr R2
clr R3
std z+0,R2
std z+1,R3
L30:
.dbline 172
inc R20
L32:
.dbline 172
cpi R20,12
brlo L29
.dbline 174
; g_vfd_grid_buffer[i] = 0;
; Set_String(" DVD");
ldi R16,<L33
ldi R17,>L33
xcall _Set_String
.dbline 175
; SPCR = 0xec;
ldi R24,236
out 0xd,R24
.dbline 176
; pt2320_switch(DVD_CH);
ldi R16,199
ldi R17,0
xcall _pt2320_write
.dbline 177
; break;
xjmp L23
L22:
.dbline 179
; default:
; decoder_power_off(); //Standby Mode
clr R16
clr R17
xcall _DEC_power
.dbline 180
; pt2320_switch(DVD_CH);
ldi R16,199
ldi R17,0
xcall _pt2320_write
.dbline 181
; g_avtv = 1;
ldi R24,1
sts _g_avtv,R24
.dbline 182
; Set_AVTV();
xcall _Set_AVTV
.dbline 183
; break;
L23:
.dbline 185
; }
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 186
; pt2320_init();
xcall _pt2320_init
.dbline 187
; delay_ms(100);
ldi R16,100
ldi R17,0
xcall _delay_ms
.dbline 188
; if(work_mode!=POWER_OFF_MODE)
lds R24,_work_mode
cpi R24,5
breq L35
.dbline 189
; {
.dbline 190
; muted = 0;
clr R2
sts _muted,R2
.dbline 191
; MCU_mute();
xcall _MCU_mute
.dbline 192
L35:
.dbline 192
; };
.dbline 193
; display_type = DISPLAY_WELCOME;
ldi R24,18
sts _display_type,R24
.dbline 194
; g_ui_tmp_msg_cnt = 10;
ldi R24,10
sts _g_ui_tmp_msg_cnt,R24
.dbline -2
.dbline 195
; }
L21:
adiw R28,2
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
L33:
.blkb 6
.area idata
.byte 32,32,'D,'V,'D,0
.area data(ram, con, rel)
.dbfile D:\avrmcu\AT980\pt2320\pt2320.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -