📄 main.s
字号:
.module main.c
.area vector(rom, abs)
.org 12
rjmp _timer1_ovf_isr
.org 18
rjmp _uart0_rx_isr
.org 22
rjmp _uart0_tx_isr
.org 24
rjmp _ana_comp_isr
.area data(ram, con, rel)
_rass2dp::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile E:\任务\RASS\rass_soft\main.c
.dbsym e rass2dp _rass2dp c
_rxed_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\任务\RASS\rass_soft\main.c
.dbsym e rxed_flag _rxed_flag c
.area text(rom, con, rel)
.dbfile E:\任务\RASS\rass_soft\main.c
.dbfunc e main _main fV
; j -> R20,R21
.even
_main::
.dbline -1
.dbline 22
; #include "config.h"
;
; unsigned char dp2rass[5];
; unsigned int test_freq;
; unsigned char rass2dp=1;
; unsigned int seed;
; unsigned char rxed_flag=0;//接收完数据为1
; unsigned char dp2rass[5];
; unsigned char work_state;
; unsigned char work_mode;
; unsigned char work_grade;
; unsigned char Ns;//频率点的个数
; unsigned int Fh,Fl;
; unsigned char TCNT1_L;
; unsigned char TCNT1_H;
; unsigned int D15_0;//为2315控制字
; unsigned char timer1;
;
;
;
; void main(void)
; {
.dbline 27
; //unsigned int rand;
; //unsigned int first,second;
; //unsigned char x,y;
; //unsigned int num,mod1=0;
; unsigned int j=1;
ldi R20,1
ldi R21,0
.dbline 29
;
; CLI(); //stop errant interrupts until set up
cli
.dbline 30
; port_init();
rcall _port_init
.dbline 31
; timer1_init();
rcall _timer1_init
.dbline 32
; uart0_init();
rcall _uart0_init
.dbline 34
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 35
; EMCUCR = 0x00;
out 0x36,R2
.dbline 36
; GICR = 0x00;
out 0x3b,R2
.dbline 37
; TIMSK = 0x80;
ldi R24,128
out 0x39,R24
.dbline 38
; SEI(); //re-enable interrupts
sei
L2:
.dbline 42
; //all peripherals are now initialized
;
; do
; {
.dbline 43
; if(rxed_flag==1) //如果刚刚接收完dp的数据,则
lds R24,_rxed_flag
cpi R24,1
breq X3
rjmp L5
X3:
.dbline 44
; {
.dbline 45
; if(!(dp2rass[0]&0x01))//判断是命令还是数据请求
lds R2,_dp2rass
sbrc R2,0
rjmp L7
.dbline 46
; UDR=rass2dp; //为0时是dp请求rass的状态信息,
lds R2,_rass2dp
out 0xc,R2
rjmp L8
L7:
.dbline 48
; else //为1时是dp发送给rass的命令
; {
.dbline 49
; work_state=(dp2rass[0]&0x02)>>1;
lds R24,_dp2rass
andi R24,2
lsr R24
sts _work_state,R24
.dbline 50
; if(work_state==0) //如果是关闭工作命令,则
tst R24
brne L9
.dbline 51
; {
.dbline 52
; ACSR = ACSR & 0xF7; //关闭时间、比较中断
in R24,0x8
andi R24,247
out 0x8,R24
.dbline 53
; TCCR1B = 0x00;
clr R2
out 0x2e,R2
.dbline 54
; ml2035(0,1); //关闭2305,1666
ldi R18,1
ldi R19,0
clr R16
clr R17
rcall _ml2035
.dbline 55
; ds1666(128,0);
clr R18
clr R19
ldi R16,128
ldi R17,0
rcall _ds1666
.dbline 56
; }
rjmp L10
L9:
.dbline 58
; else //如果是开始工作指令的话
; {
.dbline 59
; TCCR1B = 0x05; //start Timer1,comparator
ldi R24,5
out 0x2e,R24
.dbline 60
; comparator_init();
rcall _comparator_init
.dbline 61
; data_process();
rcall _data_process
.dbline 62
; seed=TCNT1L;
in R2,0x2c
clr R3
sts _seed+1,R3
sts _seed,R2
.dbline 63
; ds1666(128,0);
clr R18
clr R19
ldi R16,128
ldi R17,0
rcall _ds1666
.dbline 64
; switch(work_grade)
lds R22,_work_grade
clr R23
cpi R22,0
cpc R22,R23
breq L14
X0:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L15
cpi R22,2
ldi R30,0
cpc R23,R30
breq L16
cpi R22,3
ldi R30,0
cpc R23,R30
breq L17
rjmp L11
X1:
.dbline 65
; {
L14:
.dbline 66
; case 0: ds1666(128,1);break;
ldi R18,1
ldi R19,0
ldi R16,128
ldi R17,0
rcall _ds1666
.dbline 66
rjmp L12
L15:
.dbline 67
; case 1: ds1666(119,1);break;
ldi R18,1
ldi R19,0
ldi R16,119
ldi R17,0
rcall _ds1666
.dbline 67
rjmp L12
L16:
.dbline 68
; case 2: ds1666(110,1);break;
ldi R18,1
ldi R19,0
ldi R16,110
ldi R17,0
rcall _ds1666
.dbline 68
rjmp L12
L17:
L18:
.dbline 70
; case 3:
; defaulf:ds1666(96,1);
ldi R18,1
ldi R19,0
ldi R16,96
ldi R17,0
rcall _ds1666
.dbline 71
; }
L11:
L12:
.dbline 72
; }
L10:
.dbline 73
; }
L8:
.dbline 74
; rxed_flag=0;
clr R2
sts _rxed_flag,R2
.dbline 75
; }
L5:
.dbline 77
;
; if(timer1==1) //计数溢出中断后改变频率
lds R24,_timer1
cpi R24,1
brne L19
.dbline 78
; {
.dbline 79
; if(work_mode==0) //random mode
lds R2,_work_mode
tst R2
brne L21
.dbline 80
; D15_0=rand(seed);
lds R16,_seed
lds R17,_seed+1
rcall _rand
sts _D15_0+1,R17
sts _D15_0,R16
rjmp L22
L21:
.dbline 82
; else
; {
.dbline 83
; D15_0=line(j++);
movw R2,R20
subi R20,255 ; offset = 1
sbci R21,255
movw R16,R2
rcall _line
sts _D15_0+1,R17
sts _D15_0,R16
.dbline 84
; if(j>Ns)
lds R2,_Ns
clr R3
cp R2,R20
cpc R3,R21
brsh L23
.dbline 85
; j=1;
ldi R20,1
ldi R21,0
L23:
.dbline 86
; }
L22:
.dbline 87
; timer1=0;
clr R2
sts _timer1,R2
.dbline 88
; }
L19:
.dbline 89
; }
L3:
.dbline 90
rjmp L2
X2:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r j 20 i
.dbend
.area bss(ram, con, rel)
.dbfile E:\任务\RASS\rass_soft\main.c
_timer1::
.blkb 1
.dbsym e timer1 _timer1 c
_D15_0::
.blkb 2
.dbsym e D15_0 _D15_0 i
_TCNT1_H::
.blkb 1
.dbsym e TCNT1_H _TCNT1_H c
_TCNT1_L::
.blkb 1
.dbsym e TCNT1_L _TCNT1_L c
_Fl::
.blkb 2
.dbsym e Fl _Fl i
_Fh::
.blkb 2
.dbsym e Fh _Fh i
_Ns::
.blkb 1
.dbsym e Ns _Ns c
_work_grade::
.blkb 1
.dbsym e work_grade _work_grade c
_work_mode::
.blkb 1
.dbsym e work_mode _work_mode c
_work_state::
.blkb 1
.dbsym e work_state _work_state c
_seed::
.blkb 2
.dbsym e seed _seed i
_test_freq::
.blkb 2
.dbsym e test_freq _test_freq i
_dp2rass::
.blkb 5
.dbsym e dp2rass _dp2rass A[5:5]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -