📄 emd.lst
字号:
(0401) }
(0402) dipdata[0]=0; //退出设定时全部清空,不显示
042B 2422 CLR R2
042C 9220011E STS dipdata,R2
(0403) dipdata[1]=0;
042E 9220011F STS dipdata+1,R2
(0404) dipdata[2]=0;
0430 92200120 STS dipdata+2,R2
(0405) dipdata[3]=0;
0432 92200121 STS dipdata+3,R2
(0406) dipdata[4]=0;
0434 92200122 STS 0x122,R2
(0407) dipdata[5]=0;
0436 92200123 STS 0x123,R2
(0408) dipdata[5]|=0x80; //电源LED
0438 2D82 MOV R24,R2
0439 6880 ORI R24,0x80
043A 93800123 STS 0x123,R24
(0409) D1FC=0;
043C 92200130 STS D1FC,R2
(0410) D3FC=0;
043E 9220012E STS D3FC,R2
(0411) D4FC=0;
0440 9220012D STS D4FC,R2
(0412) D5FC=0;
0442 9220012C STS D5FC,R2
(0413) datas[0]=datas[1]=0;
0444 92200114 STS datas+1,R2
0446 92200113 STS datas,R2
0448 D628 RCALL pop_gset4
0449 9508 RET
(0414) }
(0415)
(0416) void main(void)
(0417) {//m
(0418) unit tr,ar;
(0419) //EEPROM_read(0xff); //校正振荡频率
(0420) //OSCCAL=EEDR;
(0421) delay(60);
_main:
ar --> R22
tr --> R10
044A E30C LDI R16,0x3C
044B E010 LDI R17,0
044C D2C0 RCALL _delay
(0422) init_devices();
044D D317 RCALL _init_devices
(0423) init_tm1620();
044E DC21 RCALL _init_tm1620
(0424) dipdata[5]|=0x80; //电源LED
044F 91800123 LDS R24,0x123
0451 6880 ORI R24,0x80
0452 93800123 STS 0x123,R24
(0425) delay(600);
0454 E508 LDI R16,0x58
0455 E012 LDI R17,2
0456 D2B6 RCALL _delay
(0426) RF_OFF; //开RF使能
0457 9842 CBI 0x08,2
(0427) data[0]=0;
0458 2422 CLR R2
0459 9220011B STS data,R2
(0428) data[1]=0;
045B 9220011C STS data+1,R2
(0429) data[2]=0;
045D 9220011D STS data+2,R2
(0430) BITCOUNTER=CODELANGTH;
045F E3E5 LDI R30,0x35
0460 E0F0 LDI R31,0
0461 91E4 LPM R30,0(Z)
0462 93E0010F STS BITCOUNTER,R30
(0431) DECODER_FLAG_L;
0464 91800102 LDS R24,flag
0466 7F8B ANDI R24,0xFB
0467 93800102 STS flag,R24
(0432) LO_COUNT_SAVE=0;
0469 92200126 STS LO_COUNT_SAVE,R2
(0433) HI_COUNT_SAVE=0;
046B 92200124 STS HI_COUNT_SAVE,R2
(0434) DECODER_EN_H;//开RF接收数据
046D 6082 ORI R24,2
046E 93800102 STS flag,R24
(0435) sec=60;
0470 E38C LDI R24,0x3C
0471 93800104 STS sec,R24
(0436) flagh &=~0x01;
0473 91800103 LDS R24,flagh
0475 7F8E ANDI R24,0xFE
0476 93800103 STS flagh,R24
0478 C280 RJMP 0x06F9
(0437) while(1) //
(0438) {//1
(0439) WDR();
0479 95A8 WDR
(0440) if((flag&0x04)!=0)
047A 90200102 LDS R2,flag
047C FE22 SBRS R2,2
047D C11E RJMP 0x059C
(0441) {
(0442) ar=code_comp(); //对照地址
047E DC88 RCALL _code_comp
047F 2F60 MOV R22,R16
0480 2777 CLR R23
(0443) if(ar<100)
0481 3664 CPI R22,0x64
0482 E0E0 LDI R30,0
0483 077E CPC R23,R30
0484 F008 BCS 0x0486
0485 C10E RJMP 0x0594
(0444) {
(0445) if(!(data[2]&0x40))
0486 9020011D LDS R2,data+2
0488 FC26 SBRC R2,6
0489 C095 RJMP 0x051F
(0446) {
(0447) if((datas[0]!=data[0])||(datas[1]!=data[1]))
048A 9020011B LDS R2,data
048C 90300113 LDS R3,datas
048E 1432 CP R3,R2
048F F439 BNE 0x0497
0490 9020011C LDS R2,data+1
0492 90300114 LDS R3,datas+1
0494 1432 CP R3,R2
0495 F409 BNE 0x0497
0496 C0F8 RJMP 0x058F
(0448) {
(0449) j=(ar*4)+2;
0497 E004 LDI R16,4
0498 E010 LDI R17,0
0499 019B MOVW R18,R22
049A D5C2 RCALL empy16s
049B 01C8 MOVW R24,R16
049C 9602 ADIW R24,2
049D 93800135 STS j,R24
(0450) ar=EEPROM_read(j);
049F 2F08 MOV R16,R24
04A0 D285 RCALL _EEPROM_read
04A1 2F60 MOV R22,R16
04A2 2777 CLR R23
(0451) j++;
04A3 91800135 LDS R24,j
04A5 5F8F SUBI R24,0xFF
04A6 93800135 STS j,R24
(0452) tr=EEPROM_read(j);
04A8 2F08 MOV R16,R24
04A9 D27C RCALL _EEPROM_read
04AA 2EA0 MOV R10,R16
04AB 24BB CLR R11
(0453) datas[6]=datas[4]; //移动存贮号码
04AC 90200117 LDS R2,0x117
04AE 92200119 STS 0x119,R2
(0454) datas[7]=datas[5];
04B0 90200118 LDS R2,0x118
04B2 9220011A STS 0x11A,R2
(0455)
(0456) datas[4]=datas[2];
04B4 90200115 LDS R2,datas+2
04B6 92200117 STS 0x117,R2
(0457) datas[5]=datas[3];
04B8 90200116 LDS R2,datas+3
04BA 92200118 STS 0x118,R2
(0458)
(0459) datas[2]=datas[0];
04BC 90200113 LDS R2,datas
04BE 92200115 STS datas+2,R2
(0460) datas[3]=datas[1];
04C0 90200114 LDS R2,datas+1
04C2 92200116 STS datas+3,R2
(0461)
(0462) datas[0]=data[0];
04C4 9020011B LDS R2,data
04C6 92200113 STS datas,R2
(0463) datas[1]=data[1];
04C8 9020011C LDS R2,data+1
04CA 92200114 STS datas+1,R2
(0464)
(0465) dipdata[0]=dipdata[3];
04CC 90200121 LDS R2,dipdata+3
04CE 9220011E STS dipdata,R2
(0466) dipdata[1]=dipdata[4];
04D0 90200122 LDS R2,0x122
04D2 9220011F STS dipdata+1,R2
(0467) dipdata[2]=dipdata[5];
04D4 90200123 LDS R2,0x123
04D6 92200120 STS dipdata+2,R2
(0468) dipdata[2]&=~0x80;
04D8 2D82 MOV R24,R2
04D9 778F ANDI R24,0x7F
04DA 93800120 STS dipdata+2,R24
(0469)
(0470) dipdata[3]=diptable[ar];
04DC E386 LDI R24,0x36
04DD E090 LDI R25,0
04DE 01FB MOVW R30,R22
04DF 0FE8 ADD R30,R24
04E0 1FF9 ADC R31,R25
04E1 91E4 LPM R30,0(Z)
04E2 93E00121 STS dipdata+3,R30
(0471) ar=(tr&0xf0)>>4;
04E4 01B5 MOVW R22,R10
04E5 7F60 ANDI R22,0xF0
04E6 7070 ANDI R23,0
04E7 9576 LSR R23
04E8 9567 ROR R22
04E9 9576 LSR R23
04EA 9567 ROR R22
04EB 9576 LSR R23
04EC 9567 ROR R22
04ED 9576 LSR R23
04EE 9567 ROR R22
(0472) dipdata[4]=diptable[ar];
04EF 01FB MOVW R30,R22
04F0 0FE8 ADD R30,R24
04F1 1FF9 ADC R31,R25
04F2 91E4 LPM R30,0(Z)
04F3 93E00122 STS 0x122,R30
(0473) ar=(tr&0x0f);
04F5 01B5 MOVW R22,R10
04F6 706F ANDI R22,0xF
04F7 7070 ANDI R23,0
(0474) dipdata[5]=diptable[ar];
04F8 01FB MOVW R30,R22
04F9 0FE8 ADD R30,R24
04FA 1FF9 ADC R31,R25
04FB 91E4 LPM R30,0(Z)
04FC 93E00123 STS 0x123,R30
(0475) dipdata[5]|=0x80; //电源LED
04FE 2F8E MOV R24,R30
04FF 6880 ORI R24,0x80
0500 93800123 STS 0x123,R24
(0476) if((data[2]&0x80))
0502 9020011D LDS R2,data+2
0504 FE27 SBRS R2,7
0505 C005 RJMP 0x050B
(0477) {
(0478) dipdata[3]|=0x80; //发射电源低LED
0506 91800121 LDS R24,dipdata+3
0508 6880 ORI R24,0x80
0509 93800121 STS dipdata+3,R24
(0479) }
(0480) sec=6; //显示6秒后刷新
050B E086 LDI R24,6
050C 93800104 STS sec,R24
(0481) flagh &=~0x01;
050E 91800103 LDS R24,flagh
0510 7F8E ANDI R24,0xFE
0511 93800103 STS flagh,R24
(0482) dipcount=3;
0513 E083 LDI R24,3
0514 9380010C STS dipcount,R24
(0483) SPFC=5;
0516 E085 LDI R24,5
0517 93800108 STS SPFC,R24
(0484) minu30=0;
0519 2422 CLR R2
051A 9220010E STS minu30,R2
(0485) minu15=0; //有按过按钮倒计时重新计时
051C 9220010D STS minu15,R2
(0486) }
(0487) }
051E C070 RJMP 0x058F
(0488) else //按了清除键
(0489) {
(0490) if((datas[0]==data[0])&&(datas[1]==data[1]))
051F 9020011B LDS R2,data
0521 90300113 LDS R3,datas
0523 1432 CP R3,R2
0524 F489 BNE 0x0536
0525 9020011C LDS R2,data+1
0527 90300114 LDS R3,datas+1
0529 1432 CP R3,R2
052A F459 BNE 0x0536
(0491) {
(0492) datas[0]=datas[1]=0;
052B 2422 CLR R2
052C 92200114 STS datas+1,R2
052E 92200113 STS datas,R2
(0493) dipdata[3]=dipdata[4]=dipdata[5]=0;
0530 92200123 STS 0x123,R2
0532 92200122 STS 0x122,R2
0534 92200121 STS dipdata+3,R2
(0494) }
(0495) if((datas[2]==data[0])&&(datas[3]==data[1]))
0536 9020011B LDS R2,data
0538 90300115 LDS R3,datas+2
053A 1432 CP R3,R2
053B F459 BNE 0x0547
053C 9020011C LDS R2,data+1
053E 90300116 LDS R3,datas+3
0540 1432 CP R3,R2
0541 F429 BNE 0x0547
(0496) {
(0497) datas[2]=datas[3]=0;
0542 2422 CLR R2
0543 92200116 STS datas+3,R2
0545 92200115 STS datas+2,R2
(0498) }
(0499) if((datas[4]==data[0])&&(datas[5]==data[1]))
0547 9020011B LDS R2,data
0549 90300117 LDS R3,0x117
054B 1432 CP R3,R2
054C F459 BNE 0x0558
054D 9020011C LDS R2,data+1
054F 90300118 LDS R3,0x118
0551 1432 CP R3,R2
0552 F429 BNE 0x0558
(0500) {
(0501) datas[4]=datas[5]=0;
0553 2422 CLR R2
0554 92200118 STS 0x118,R2
0556 92200117 STS 0x117,R2
(0502) }
(0503) if((datas[6]==data[0])&&(datas[7]==data[1]))
0558 9020011B LDS R2,data
055A 90300119 LDS R3,0x119
055C 1432 CP R3,R2
055D F459 BNE 0x0569
055E 9020011C LDS R2,data+1
0560 9030011A LDS R3,0x11A
0562 1432 CP R3,R2
0563 F429 BNE 0x0569
(0504) {
(0505) datas[6]=datas[7]=0;
0564 2422 CLR R2
0565 9220011A STS 0x11A,R2
0567 92200119 STS 0x119,R2
(0506) }
(0507) if((datas[6]==0)&&(datas[5]==0)&&(datas[4]==0)&&(datas[3]==0)&&(datas[2]==0)&&(datas[1]==0)&&(datas[0]==0))
0569 90200119 LDS R2,0x119
056B 2022 TST R2
056C F4F9 BNE 0x058C
056D 90200118 LDS R2,0x118
056F 2022 TST R2
0570 F4D9 BNE 0x058C
0571 90200117 LDS R2,0x117
0573 2022 TST R2
0574 F4B9 BNE 0x058C
0575 90200116 LDS R2,datas+3
0577 2022 TST R2
0578 F499 BNE 0x058C
0579 90200115 LDS R2,datas+2
057B 2022 TST R2
057C F479 BNE 0x058C
057D 90200114 LDS R2,datas+1
057F 2022 TST R2
0580 F459 BNE 0x058C
0581 90200113 LDS R2,datas
0583 2022 TST R2
0584 F439 BNE 0x058C
(0508) {
(0509) dipdata[0]=dipdata[1]=dipdata[2]=0;
0585 2422 CLR R2
0586 92200120 STS dipdata+2,R2
0588 9220011F STS dipdata+1,R2
058A 9220011E STS dipdata,R2
(0510) }
(0511) SPFC=1;
058C E081 LDI R24,1
058D 93800108 STS SPFC,R24
(0512) }
(0513) dipdata[5]|=0x80; //电源LED
058F 91800123 LDS R24,0x123
0591 6880 ORI R24,0x80
0592 93800123 STS 0x123,R24
(0514) }
(0515) DECODER_FLAG_L;
0594 91800102 LDS R24,flag
0596 7F8B ANDI R24,0xFB
0597 93800102 STS flag,R24
(0516) DECODER_EN_H;//开RF接收数据
0599 6082 ORI R24,2
059A 93800102 STS flag,R24
(0517) }
(0518) tr=key_1();
059C D42F RCALL _key_1
059D 2EA0 MOV R10,R16
059E 24BB CLR R11
(0519) if(tr==2)
059F 01C5 MOVW R24,R10
05A0 3082 CPI R24,2
05A1 E0E0 LDI R30,0
05A2 079E CPC R25,R30
05A3 F409 BNE 0x05A5
(0520) {
(0521) set_led();
05A4 DBE7 RCALL _set_led
(0522) }
(0523) //被挤出的三个号码在上一层数码管显示 三秒一次更新
(0524) if(flagh&0x02)
05A5 90200103 LDS R2,flagh
05A7 FE21 SBRS R2,1
05A8 C150 RJMP 0x06F9
(0525) {
(0526) sec0=3;
05A9 E083 LDI R24,3
05AA 93800105 STS sec0,R24
(0527) flagh &=~0x02;
05AC 2D82 MOV R24,R2
05AD 7F8D ANDI R24,0xFD
05AE 93800103 STS flagh,R24
(0528) switch(dipcount) //显示计数器
05B0 9140010C LDS R20,dipcount
05B2 2755 CLR R21
05B3 3041 CPI R20,1
05B4 E0E0 LDI R30,0
05B5 075E CPC R21,R30
05B6 F059 BEQ 0x05C2
05B7 3042 CPI R20,2
05B8 E0E0 LDI R30,0
05B9 075E CPC R21,R30
05BA F409 BNE 0x05BC
05BB C06E RJMP 0x062A
05BC 3043 CPI R20,3
05BD E0E0 LDI R30,0
05BE 075E CPC R21,R30
05BF F409 BNE 0x05C1
05C0 C0D1 RJMP 0x0692
05C1 C137 RJMP 0x06F9
(0529) {
(0530) case 1: if((datas[6]!=0)||(datas[7]!=0)) //没有数据不替换显示
05C2 90200119 LDS R2,0x119
05C4 2022 TST R2
05C5 F429 BNE 0x05CB
05C6 9020011A LDS R2,0x11A
05C8 2022 TST R2
05C9 F409 BNE 0x05CB
05CA C056 RJMP 0x0621
(0531) {
(0532) data[0]=datas[6];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -