📄 uart.lst
字号:
0247 E586 LDI R24,0x56
0248 B98C OUT 0x0C,R24
0249 9020008C LDS R2,xx0
024B 2628 EOR R2,R24
(0367) UDR=0x56;
024C 9220008C STS xx0,R2
(0368) xx0=xx0^0x56;
(0369) xx1+=0x56;
(0370) while (!(UCSRA&(1<<UDRE)));
024E 9180008B LDS R24,xx1
(0371) UDR=0;
(0372) xx0=xx0^0x00;
0250 5A8A SUBI R24,0xAA
(0373) xx1+=0x00;
(0374) while (!(UCSRA&(1<<UDRE)));
0251 9380008B STS xx1,R24
0253 9B5D SBIS 0x0B,5
0254 CFFE RJMP 0x0253
(0375) UDR=0x16;
(0376) xx0=xx0^0x16;
0255 2422 CLR R2
0256 B82C OUT 0x0C,R2
0257 9020008C LDS R2,xx0
(0377) xx1+=0x16;
0259 9220008C STS xx0,R2
(0378) while (!(UCSRA&(1<<UDRE)));
025B 9020008B LDS R2,xx1
025D 9220008B STS xx1,R2
025F 9B5D SBIS 0x0B,5
(0379) UDR=xx0;
0260 CFFE RJMP 0x025F
(0380) while (!(UCSRA&(1<<UDRE)));
(0381) }
(0382)
0261 E186 LDI R24,0x16
0262 B98C OUT 0x0C,R24
0263 9020008C LDS R2,xx0
(0383) /* 发送交流电压值 */
(0384) void voltagerepol(void)
0265 2628 EOR R2,R24
0266 9220008C STS xx0,R2
0268 9180008B LDS R24,xx1
026A 5E8A SUBI R24,0xEA
026B 9380008B STS xx1,R24
026D 9B5D SBIS 0x0B,5
026E CFFE RJMP 0x026D
026F 9020008C LDS R2,xx0
0271 B82C OUT 0x0C,R2
0272 9B5D SBIS 0x0B,5
0273 CFFE RJMP 0x0272
(0385) {
(0386) xx0=0;xx1=0;
(0387) UDR=0x55;
(0388) xx0=xx0^0x55;
(0389) xx1+=0x55;
(0390) while (!(UCSRA&(1<<UDRE)));
(0391) UDR=0xaa;
(0392) xx0=xx0^0xaa;
(0393) xx1+=0xaa;
(0394) while (!(UCSRA&(1<<UDRE)));
(0395) UDR=addressper;
(0396) xx0=xx0^addressper;
(0397) xx1+=addressper;
(0398) while (!(UCSRA&(1<<UDRE)));
(0399) UDR=0x01;
(0400) xx0=xx0^0x01;
(0401) xx1+=0x01;
(0402) while (!(UCSRA&(1<<UDRE)));
(0403) UDR=0x03;
0274 9508 RET
(0404) xx0=xx0^0x03;
(0405) xx1+=0x03;
(0406) while (!(UCSRA&(1<<UDRE)));
_voltagerepol:
0275 2422 CLR R2
0276 9220008C STS xx0,R2
(0407) for(w1=0;w1<3;w1++)
0278 9220008B STS xx1,R2
027A E585 LDI R24,0x55
027B B98C OUT 0x0C,R24
027C 2628 EOR R2,R24
027D 9220008C STS xx0,R2
(0408) {
(0409) UDR=databak[w1];
027F 9180008B LDS R24,xx1
(0410) xx0=xx0^databak[w1];
0281 5A8B SUBI R24,0xAB
0282 9380008B STS xx1,R24
0284 9B5D SBIS 0x0B,5
(0411) xx1+=databak[w1];
(0412) while (!(UCSRA&(1<<UDRE)));
(0413) }
(0414) UDR=0x16;
(0415) xx0=xx0^0x16;
(0416) xx1+=0x16;
(0417) while (!(UCSRA&(1<<UDRE)));
(0418) UDR=xx0;
0285 CFFE RJMP 0x0284
0286 EA8A LDI R24,0xAA
0287 B98C OUT 0x0C,R24
(0419) while (!(UCSRA&(1<<UDRE)));
0288 2799 CLR R25
0289 9020008C LDS R2,xx0
(0420) }
028B 2433 CLR R3
(0421)
028C 2628 EOR R2,R24
028D 2639 EOR R3,R25
(0422) /* 发送交流电流值 */
028E 9220008C STS xx0,R2
(0423) void currentrepol(void)
0290 9180008B LDS R24,xx1
(0424) {
0292 5586 SUBI R24,0x56
0293 9380008B STS xx1,R24
(0425) xx0=0;xx1=0;
0295 9B5D SBIS 0x0B,5
(0426) UDR=0x55;
0296 CFFE RJMP 0x0295
0297 E180 LDI R24,0x10
(0427) xx0=xx0^0x55;
0298 B98C OUT 0x0C,R24
0299 9020008C LDS R2,xx0
(0428) xx1+=0x55;
029B 2628 EOR R2,R24
029C 9220008C STS xx0,R2
(0429) while (!(UCSRA&(1<<UDRE)));
(0430) UDR=0xaa;
029E 9180008B LDS R24,xx1
(0431) xx0=xx0^0xaa;
02A0 5F80 SUBI R24,0xF0
02A1 9380008B STS xx1,R24
(0432) xx1+=0xaa;
(0433) while (!(UCSRA&(1<<UDRE)));
02A3 9B5D SBIS 0x0B,5
02A4 CFFE RJMP 0x02A3
(0434) UDR=addressper;
(0435) xx0=xx0^addressper;
02A5 E081 LDI R24,1
02A6 B98C OUT 0x0C,R24
02A7 9020008C LDS R2,xx0
(0436) xx1+=addressper;
(0437) while (!(UCSRA&(1<<UDRE)));
(0438) UDR=0x02;
(0439) xx0=xx0^0x02;
(0440) xx1+=0x02;
02A9 2628 EOR R2,R24
(0441) while (!(UCSRA&(1<<UDRE)));
02AA 9220008C STS xx0,R2
(0442) UDR=0x03;
02AC 9180008B LDS R24,xx1
(0443) xx0=xx0^0x03;
02AE 5F8F SUBI R24,0xFF
02AF 9380008B STS xx1,R24
(0444) xx1+=0x03;
02B1 9B5D SBIS 0x0B,5
(0445) while (!(UCSRA&(1<<UDRE)));
02B2 CFFE RJMP 0x02B1
02B3 E083 LDI R24,3
02B4 B98C OUT 0x0C,R24
(0446) for(w1=0;w1<3;w1++)
(0447) {
(0448) UDR=databak[w1];
(0449) xx0=xx0^databak[w1];
(0450) xx1+=databak[w1];
(0451) while (!(UCSRA&(1<<UDRE)));
02B5 9020008C LDS R2,xx0
02B7 2628 EOR R2,R24
02B8 9220008C STS xx0,R2
(0452) }
02BA 9180008B LDS R24,xx1
(0453) UDR=0x16;
(0454) xx0=xx0^0x16;
(0455) xx1+=0x16;
02BC 5F8D SUBI R24,0xFD
02BD 9380008B STS xx1,R24
(0456) while (!(UCSRA&(1<<UDRE)));
02BF 9B5D SBIS 0x0B,5
(0457) UDR=xx0;
(0458) while (!(UCSRA&(1<<UDRE)));
(0459) }
02C0 CFFE RJMP 0x02BF
02C1 2422 CLR R2
(0460)
02C2 92200085 STS w1,R2
(0461)
(0462)
(0463) unsigned char ReadFromCC1020Register(unsigned char addr)
02C4 C026 RJMP 0x02EB
02C5 E882 LDI R24,0x82
(0464) {
02C6 E090 LDI R25,0
02C7 91E00085 LDS R30,w1
(0465)
(0466) unsigned char itmp;
(0467) unsigned char tmp;
02C9 27FF CLR R31
(0468) // P2MDOUT = 0xE0;
02CA 0FE8 ADD R30,R24
02CB 1FF9 ADC R31,R25
(0469) DDRD = 0x30;
02CC 8020 LDD R2,Z+0
02CD B82C OUT 0x0C,R2
02CE 91E00085 LDS R30,w1
(0470) DDRB = 0X03;
02D0 27FF CLR R31
02D1 0FE8 ADD R30,R24
02D2 1FF9 ADC R31,R25
02D3 8020 LDD R2,Z+0
(0471) delay(10);
02D4 9030008C LDS R3,xx0
(0472) PSEL_0;
02D6 2432 EOR R3,R2
02D7 9230008C STS xx0,R3
(0473) itmp = (addr&0x7f) <<1 ;
02D9 91E00085 LDS R30,w1
02DB 27FF CLR R31
02DC 0FE8 ADD R30,R24
(0474) for(tmp=8;tmp>0;tmp--){
02DD 1FF9 ADC R31,R25
02DE 8020 LDD R2,Z+0
02DF 9030008B LDS R3,xx1
02E1 0C32 ADD R3,R2
(0475) Pclk_0;
02E2 9230008B STS xx1,R3
(0476) if((itmp&0x80) == 0x80) PData_1;
02E4 9B5D SBIS 0x0B,5
02E5 CFFE RJMP 0x02E4
02E6 91800085 LDS R24,w1
(0477) else PData_0;
02E8 5F8F SUBI R24,0xFF
02E9 93800085 STS w1,R24
(0478) delay(10);
(0479) Pclk_1;
(0480) delay(10);
(0481) itmp = itmp<<1;
(0482) }
(0483) itmp = 0;
02EB 91800085 LDS R24,w1
02ED 3083 CPI R24,3
02EE F2B0 BCS 0x02C5
(0484) // P2MDOUT = 0xA0;
02EF E186 LDI R24,0x16
02F0 B98C OUT 0x0C,R24
(0485)
(0486) PData_1;
(0487) DDRB = 0X02;
02F1 9020008C LDS R2,xx0
(0488) for(tmp=8;tmp>0;tmp--){
02F3 2628 EOR R2,R24
02F4 9220008C STS xx0,R2
(0489) itmp =itmp <<1;
(0490) Pclk_0;
(0491) delay(10);
02F6 9180008B LDS R24,xx1
(0492) if(PData == 1) itmp= itmp+1;
02F8 5E8A SUBI R24,0xEA
(0493) Pclk_1;
(0494) delay(10);
(0495) }
02F9 9380008B STS xx1,R24
(0496) Pclk_0;
02FB 9B5D SBIS 0x0B,5
02FC CFFE RJMP 0x02FB
(0497) PSEL_1;
(0498) // P2MDOUT = 0xA0;
(0499) DDRD = 0x30;
02FD 9020008C LDS R2,xx0
(0500) DDRB = 0X03;
02FF B82C OUT 0x0C,R2
0300 9B5D SBIS 0x0B,5
(0501) return(itmp);
(0502) }
(0503)
0301 CFFE RJMP 0x0300
0302 9508 RET
(0504)
_currentrepol:
0303 2422 CLR R2
0304 9220008C STS xx0,R2
0306 9220008B STS xx1,R2
(0505) /****************************************************************************/
(0506) /* This routine writes to a single CC1020 register */
0308 E585 LDI R24,0x55
0309 B98C OUT 0x0C,R24
030A 2628 EOR R2,R24
030B 9220008C STS xx0,R2
030D 9180008B LDS R24,xx1
030F 5A8B SUBI R24,0xAB
(0507) /****************************************************************************/
0310 9380008B STS xx1,R24
0312 9B5D SBIS 0x0B,5
0313 CFFE RJMP 0x0312
0314 EA8A LDI R24,0xAA
0315 B98C OUT 0x0C,R24
0316 2799 CLR R25
0317 9020008C LDS R2,xx0
0319 2433 CLR R3
031A 2628 EOR R2,R24
(0508) void WriteToCC1020Register(unsigned char addr, unsigned char value)
031B 2639 EOR R3,R25
031C 9220008C STS xx0,R2
031E 9180008B LDS R24,xx1
0320 5586 SUBI R24,0x56
0321 9380008B STS xx1,R24
0323 9B5D SBIS 0x0B,5
0324 CFFE RJMP 0x0323
0325 E180 LDI R24,0x10
(0509) {
0326 B98C OUT 0x0C,R24
0327 9020008C LDS R2,xx0
0329 2628 EOR R2,R24
032A 9220008C STS xx0,R2
032C 9180008B LDS R24,xx1
032E 5F80 SUBI R24,0xF0
032F 9380008B STS xx1,R24
(0510) unsigned char itmp = 0;
(0511) unsigned char tmp=0;;
0331 9B5D SBIS 0x0B,5
0332 CFFE RJMP 0x0331
(0512) // P2MDOUT = 0xE0;
0333 E082 LDI R24,2
0334 B98C OUT 0x0C,R24
0335 9020008C LDS R2,xx0
0337 2628 EOR R2,R24
(0513) DDRD = 0x30;
0338 9220008C STS xx0,R2
033A 9180008B LDS R24,xx1
033C 5F8E SUBI R24,0xFE
(0514) DDRB = 0X03;
033D 9380008B STS xx1,R24
(0515) delay(10);
033F 9B5D SBIS 0x0B,5
0340 CFFE RJMP 0x033F
0341 E083 LDI R24,3
(0516) PSEL_0;
0342 B98C OUT 0x0C,R24
0343 9020008C LDS R2,xx0
(0517) itmp = (addr&0x7f) <<1;
(0518) itmp = itmp+1;
(0519) for(tmp=8;tmp>0;tmp--){
(0520) Pclk_0;
(0521) if((itmp&0x80) == 0x80) PData_1;
(0522) else PData_0;
(0523) delay(10);
0345 2628 EOR R2,R24
0346 9220008C STS xx0,R2
0348 9180008B LDS R24,xx1
(0524) Pclk_1;
034A 5F8D SUBI R24,0xFD
034B 9380008B STS xx1,R24
(0525) delay(10);
(0526) itmp = itmp<<1;
(0527) }
034D 9B5D SBIS 0x0B,5
(0528)
034E CFFE RJMP 0x034D
034F 2422 CLR R2
(0529) itmp = value;
(0530) for(tmp=8;tmp>0;tmp--){
(0531) Pclk_0;
0350 92200085 STS w1,R2
(0532) if((itmp&0x80) == 0x80) PData_1;
0352 C026 RJMP 0x0379
0353 E882 LDI R24,0x82
(0533) else PData_0;
(0534) delay(10);
(0535) Pclk_1;
0354 E090 LDI R25,0
0355 91E00085 LDS R30,w1
(0536) delay(10);
0357 27FF CLR R31
(0537) itmp = itmp<<1;
(0538) }
(0539) Pclk_0;
0358 0FE8 ADD R30,R24
0359 1FF9 ADC R31,R25
(0540) PSEL_1;
035A 8020 LDD R2,Z+0
035B B82C OUT 0x0C,R2
(0541) // P2MDOUT = 0xA0;
(0542) DDRD = 0x30;
(0543) DDRB = 0X03;
035C 91E00085 LDS R30,w1
(0544) }
035E 27FF CLR R31
035F 0FE8 ADD R30,R24
0360 1FF9 ADC R31,R25
0361 8020 LDD R2,Z+0
(0545)
(0546) void SetupAGC(void)
0362 9030008C LDS R3,xx0
0364 2432 EOR R3,R2
0365 9230008C STS xx0,R3
0367 91E00085 LDS R30,w1
0369 27FF CLR R31
036A 0FE8 ADD R30,R24
(0547) {
036B 1FF9 ADC R31,R25
036C 8020 LDD R2,Z+0
036D 9030008B LDS R3,xx1
036F 0C32 ADD R3,R2
0370 9230008B STS xx1,R3
0372 9B5D SBIS 0x0B,5
0373 CFFE RJMP 0x0372
0374 91800085 LDS R24,w1
(0548) // int RSSI1,RSSI2;
0376 5F8F SUBI R24,0xFF
0377 93800085 STS w1,R24
0379 91800085 LDS R24,w1
037B 3083 CPI R24,3
037C F2B0 BCS 0x0353
037D E186 LDI R24,0x16
037E B98C OUT 0x0C,R24
037F 9020008C LDS R2,xx0
(0549) // unsigned char vga;
0381 2628 EOR R2,R24
0382 9220008C STS xx0,R2
0384 9180008B LDS R24,xx1
0386 5E8A SUBI R24,0xEA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -