📄 ww_rass.lst
字号:
01BC E200 LDI R16,0x20
01BD E11C LDI R17,0x1C
01BE D1DC RCALL div16u
01BF 93100075 STS test_freq+1,R17
01C1 93000074 STS test_freq,R16
(0091) dert_freq=(test_freq>seed)?(test_freq-seed):(seed-test_freq);
01C3 90200072 LDS R2,seed
01C5 90300073 LDS R3,seed+1
01C7 0128 MOVW R4,R16
01C8 1620 CP R2,R16
01C9 0631 CPC R3,R17
01CA F420 BCC 0x01CF
01CB 01B2 MOVW R22,R4
01CC 1962 SUB R22,R2
01CD 0973 SBC R23,R3
01CE C00A RJMP 0x01D9
01CF 90200074 LDS R2,test_freq
01D1 90300075 LDS R3,test_freq+1
01D3 91600072 LDS R22,seed
01D5 91700073 LDS R23,seed+1
01D7 1962 SUB R22,R2
01D8 0973 SBC R23,R3
01D9 01AB MOVW R20,R22
(0092) if(dert_freq<50)
01DA 3362 CPI R22,0x32
01DB E0E0 LDI R30,0
01DC 077E CPC R23,R30
01DD F420 BCC 0x01E2
(0093) rass2dp=0;
01DE 2422 CLR R2
01DF 92200063 STS rass2dp,R2
01E1 C003 RJMP 0x01E5
(0094) else
(0095) rass2dp=1;
01E2 E081 LDI R24,1
01E3 93800063 STS rass2dp,R24
(0096) }
(0097) }
01E5 9624 ADIW R28,4
01E6 D1DE RCALL pop_gset2
01E7 9029 LD R2,Y+
01E8 BE2F OUT 0x3F,R2
01E9 91F9 LD R31,Y+
01EA 91E9 LD R30,Y+
01EB 9199 LD R25,Y+
01EC 9189 LD R24,Y+
01ED 9139 LD R19,Y+
01EE 9129 LD R18,Y+
01EF 9119 LD R17,Y+
01F0 9109 LD R16,Y+
01F1 9059 LD R5,Y+
01F2 9049 LD R4,Y+
01F3 9039 LD R3,Y+
01F4 9029 LD R2,Y+
01F5 9518 RETI
FILE: E:\任务\RASS\rass_soft\main.c
(0001) #include "config.h"
(0002)
(0003) unsigned char dp2rass[5];
(0004) unsigned int test_freq;
(0005) unsigned char rass2dp=1;
(0006) unsigned int seed;
(0007) unsigned char rxed_flag=0;//接收完数据为1
(0008) unsigned char dp2rass[5];
(0009) unsigned char work_state;
(0010) unsigned char work_mode;
(0011) unsigned char work_grade;
(0012) unsigned char Ns;//频率点的个数
(0013) unsigned int Fh,Fl;
(0014) unsigned char TCNT1_L;
(0015) unsigned char TCNT1_H;
(0016) unsigned int D15_0;//为2315控制字
(0017) unsigned char timer1;
(0018)
(0019)
(0020)
(0021) void main(void)
(0022) {
(0023) //unsigned int rand;
(0024) //unsigned int first,second;
(0025) //unsigned char x,y;
(0026) //unsigned int num,mod1=0;
(0027) unsigned int j=1;
_main:
j --> R20
01F6 E041 LDI R20,1
01F7 E050 LDI R21,0
(0028)
(0029) CLI(); //stop errant interrupts until set up
01F8 94F8 BCLR 7
(0030) port_init();
01F9 DEE1 RCALL _port_init
(0031) timer1_init();
01FA DEF2 RCALL _timer1_init
(0032) uart0_init();
01FB DF01 RCALL _uart0_init
(0033)
(0034) MCUCR = 0x00;
01FC 2422 CLR R2
01FD BE25 OUT 0x35,R2
(0035) EMCUCR = 0x00;
01FE BE26 OUT 0x36,R2
(0036) GICR = 0x00;
01FF BE2B OUT 0x3B,R2
(0037) TIMSK = 0x80;
0200 E880 LDI R24,0x80
0201 BF89 OUT 0x39,R24
(0038) SEI(); //re-enable interrupts
0202 9478 BSET 7
(0039) //all peripherals are now initialized
(0040)
(0041) do
(0042) {
(0043) if(rxed_flag==1) //如果刚刚接收完dp的数据,则
0203 91800064 LDS R24,rxed_flag
0205 3081 CPI R24,1
0206 F009 BEQ 0x0208
0207 C05C RJMP 0x0264
(0044) {
(0045) if(!(dp2rass[0]&0x01))//判断是命令还是数据请求
0208 90200076 LDS R2,dp2rass
020A FC20 SBRC R2,0
020B C004 RJMP 0x0210
(0046) UDR=rass2dp; //为0时是dp请求rass的状态信息,
020C 90200063 LDS R2,rass2dp
020E B82C OUT 0x0C,R2
020F C051 RJMP 0x0261
(0047) else //为1时是dp发送给rass的命令
(0048) {
(0049) work_state=(dp2rass[0]&0x02)>>1;
0210 91800076 LDS R24,dp2rass
0212 7082 ANDI R24,2
0213 9586 LSR R24
0214 93800071 STS work_state,R24
(0050) if(work_state==0) //如果是关闭工作命令,则
0216 2388 TST R24
0217 F481 BNE 0x0228
(0051) {
(0052) ACSR = ACSR & 0xF7; //关闭时间、比较中断
0218 B188 IN R24,0x08
0219 7F87 ANDI R24,0xF7
021A B988 OUT 0x08,R24
(0053) TCCR1B = 0x00;
021B 2422 CLR R2
021C BC2E OUT 0x2E,R2
(0054) ml2035(0,1); //关闭2305,1666
021D E021 LDI R18,1
021E E030 LDI R19,0
021F 2700 CLR R16
0220 2711 CLR R17
0221 D06A RCALL _ml2035
(0055) ds1666(128,0);
0222 2722 CLR R18
0223 2733 CLR R19
0224 E800 LDI R16,0x80
0225 E010 LDI R17,0
0226 D081 RCALL _ds1666
(0056) }
0227 C039 RJMP 0x0261
(0057) else //如果是开始工作指令的话
(0058) {
(0059) TCCR1B = 0x05; //start Timer1,comparator
0228 E085 LDI R24,5
0229 BD8E OUT 0x2E,R24
(0060) comparator_init();
022A DEDD RCALL _comparator_init
(0061) data_process();
022B D0A1 RCALL _data_process
(0062) seed=TCNT1L;
022C B42C IN R2,0x2C
022D 2433 CLR R3
022E 92300073 STS seed+1,R3
0230 92200072 STS seed,R2
(0063) ds1666(128,0);
0232 2722 CLR R18
0233 2733 CLR R19
0234 E800 LDI R16,0x80
0235 E010 LDI R17,0
0236 D071 RCALL _ds1666
(0064) switch(work_grade)
0237 9160006F LDS R22,work_grade
0239 2777 CLR R23
023A 3060 CPI R22,0
023B 0767 CPC R22,R23
023C F069 BEQ 0x024A
023D 3061 CPI R22,1
023E E0E0 LDI R30,0
023F 077E CPC R23,R30
0240 F079 BEQ 0x0250
0241 3062 CPI R22,2
0242 E0E0 LDI R30,0
0243 077E CPC R23,R30
0244 F089 BEQ 0x0256
0245 3063 CPI R22,3
0246 E0E0 LDI R30,0
0247 077E CPC R23,R30
0248 F099 BEQ 0x025C
0249 C017 RJMP 0x0261
(0065) {
(0066) case 0: ds1666(128,1);break;
024A E021 LDI R18,1
024B E030 LDI R19,0
024C E800 LDI R16,0x80
024D E010 LDI R17,0
024E D059 RCALL _ds1666
024F C011 RJMP 0x0261
(0067) case 1: ds1666(119,1);break;
0250 E021 LDI R18,1
0251 E030 LDI R19,0
0252 E707 LDI R16,0x77
0253 E010 LDI R17,0
0254 D053 RCALL _ds1666
0255 C00B RJMP 0x0261
(0068) case 2: ds1666(110,1);break;
0256 E021 LDI R18,1
0257 E030 LDI R19,0
0258 E60E LDI R16,0x6E
0259 E010 LDI R17,0
025A D04D RCALL _ds1666
025B C005 RJMP 0x0261
(0069) case 3:
(0070) defaulf:ds1666(96,1);
025C E021 LDI R18,1
025D E030 LDI R19,0
025E E600 LDI R16,0x60
025F E010 LDI R17,0
0260 D047 RCALL _ds1666
(0071) }
(0072) }
(0073) }
(0074) rxed_flag=0;
0261 2422 CLR R2
0262 92200064 STS rxed_flag,R2
(0075) }
(0076)
(0077) if(timer1==1) //计数溢出中断后改变频率
0264 91800065 LDS R24,timer1
0266 3081 CPI R24,1
0267 F511 BNE 0x028A
(0078) {
(0079) if(work_mode==0) //random mode
0268 90200070 LDS R2,work_mode
026A 2022 TST R2
026B F451 BNE 0x0276
(0080) D15_0=rand(seed);
026C 91000072 LDS R16,seed
026E 91100073 LDS R17,seed+1
0270 D0DA RCALL _rand
0271 93100067 STS D15_0+1,R17
0273 93000066 STS D15_0,R16
0275 C011 RJMP 0x0287
(0081) else
(0082) {
(0083) D15_0=line(j++);
0276 011A MOVW R2,R20
0277 5F4F SUBI R20,0xFF
0278 4F5F SBCI R21,0xFF
0279 0181 MOVW R16,R2
027A D0F0 RCALL _line
027B 93100067 STS D15_0+1,R17
027D 93000066 STS D15_0,R16
(0084) if(j>Ns)
027F 9020006E LDS R2,Ns
0281 2433 CLR R3
0282 1624 CP R2,R20
0283 0635 CPC R3,R21
0284 F410 BCC 0x0287
(0085) j=1;
0285 E041 LDI R20,1
0286 E050 LDI R21,0
(0086) }
(0087) timer1=0;
0287 2422 CLR R2
0288 92200065 STS timer1,R2
(0088) }
(0089) }
(0090) while(1);
028A CF78 RJMP 0x0203
028B 9508 RET
_ml2035:
i --> R20
mod --> R18
data --> R16
028C D142 RCALL push_gset1
FILE: E:\任务\RASS\rass_soft\sine_resister.C
(0001) #include "config.h"
(0002)
(0003) void ml2035(unsigned int data,unsigned mod)
(0004) {
(0005) unsigned char i;
(0006) //CLI();
(0007) PORTA &= ~(1<<sck);
028D 98D8 CBI 0x1B,0
(0008) PORTA &= ~(1<<lati);
028E 98DA CBI 0x1B,2
(0009) asm("NOP");
028F 0000 NOP
(0010) for (i=0;i<15;i++)
0290 2744 CLR R20
0291 C00B RJMP 0x029D
(0011) {
(0012) if (data & 1)
0292 FF00 SBRS R16,0
0293 C002 RJMP 0x0296
(0013) PORTA |= 1<<sid;
0294 9AD9 SBI 0x1B,1
0295 C001 RJMP 0x0297
(0014) else
(0015) PORTA &= ~(1<<sid);
0296 98D9 CBI 0x1B,1
(0016) PORTA |= 1<<sck;
0297 9AD8 SBI 0x1B,0
(0017) asm("NOP");
0298 0000 NOP
(0018) PORTA &= ~(1<<sck);
0299 98D8 CBI 0x1B,0
(0019) data>>=1;
029A 9516 LSR R17
029B 9507 ROR R16
029C 9543 INC R20
029D 304F CPI R20,0xF
029E F398 BCS 0x0292
(0020) }
(0021) PORTA |= 1<<sck;
029F 9AD8 SBI 0x1B,0
(0022) PORTA |= 1<<lati;
02A0 9ADA SBI 0x1B,2
(0023) PORTA &= ~(1<<sck);
02A1 98D8 CBI 0x1B,0
(0024) if(mod)
02A2 3020 CPI R18,0
02A3 0723 CPC R18,R19
02A4 F009 BEQ 0x02A6
(0025) PORTA &= ~(1<<lati);
02A5 98DA CBI 0x1B,2
02A6 D12B RCALL pop_gset1
02A7 9508 RET
_ds1666:
j --> R20
mod1 --> R20
num --> R22
02A8 D124 RCALL push_gset2
02A9 01A9 MOVW R20,R18
02AA 01B8 MOVW R22,R16
(0026) }
(0027)
(0028)
(0029)
(0030)
(0031) void ds1666(unsigned int num,unsigned int mod1)
(0032) {
(0033) unsigned int j;
(0034) CLI();
02AB 94F8 BCLR 7
(0035) PORTC &=~(1<<cs);
02AC 98AB CBI 0x15,3
(0036) if(mod1==0)
02AD 3040 CPI R20,0
02AE 0745 CPC R20,R21
02AF F411 BNE 0x02B2
(0037) PORTC &=~(1<<ud);
02B0 98AD CBI 0x15,5
02B1 C001 RJMP 0x02B3
(0038) else
(0039) PORTC |=1<<ud;
02B2 9AAD SBI 0x15,5
(0040) for (j=0;j<num;j++)
02B3 2744 CLR R20
02B4 2755 CLR R21
02B5 C008 RJMP 0x02BE
(0041) {
(0042) PORTC |=1<<inc;
02B6 9AAC SBI 0x15,4
(0043) delay_us(1);
02B7 E001 LDI R16,1
02B8 D00D RCALL _delay_us
(0044) PORTC &=~(1<<inc);
02B9 98AC CBI 0x15,4
(0045) delay_us(1);
02BA E001 LDI R16,1
02BB D00A RCALL _delay_us
02BC 5F4F SUBI R20,0xFF
02BD 4F5F SBCI R21,0xFF
02BE 1746 CP R20,R22
02BF 0757 CPC R21,R23
02C0 F3A8 BCS 0x02B6
(0046) }
(0047) PORTC |=1<<cs;
02C1 9AAB SBI 0x15,3
(0048) PORTC |=1<<inc;
02C2 9AAC SBI 0x15,4
(0049) SEI();
02C3 9478 BSET 7
02C4 D100 RCALL pop_gset2
02C5 9508 RET
FILE: E:\任务\RASS\rass_soft\data_process.c
(0001) #include "config.h"
(0002)
(0003) extern unsigned char dp2rass[5];
(0004) extern unsigned char work_mode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -