📄 emd.lst
字号:
05CB 90200119 LDS R2,0x119
05CD 9220011B STS data,R2
(0533) data[1]=datas[7];
05CF 9020011A LDS R2,0x11A
05D1 9220011C STS data+1,R2
(0534) ar=code_comp(); //对照地址
05D3 DB33 RCALL _code_comp
05D4 2F60 MOV R22,R16
05D5 2777 CLR R23
(0535) if(ar<100)
05D6 3664 CPI R22,0x64
05D7 E0E0 LDI R30,0
05D8 077E CPC R23,R30
05D9 F008 BCS 0x05DB
05DA C04B RJMP 0x0626
(0536) {
(0537) j=(ar*4)+2;
05DB E004 LDI R16,4
05DC E010 LDI R17,0
05DD 019B MOVW R18,R22
05DE D47E RCALL empy16s
05DF 01C8 MOVW R24,R16
05E0 9602 ADIW R24,2
05E1 93800135 STS j,R24
(0538) ar=EEPROM_read(j);
05E3 2F08 MOV R16,R24
05E4 D141 RCALL _EEPROM_read
05E5 2F60 MOV R22,R16
05E6 2777 CLR R23
(0539) j++;
05E7 91800135 LDS R24,j
05E9 5F8F SUBI R24,0xFF
05EA 93800135 STS j,R24
(0540) tr=EEPROM_read(j);
05EC 2F08 MOV R16,R24
05ED D138 RCALL _EEPROM_read
05EE 2EA0 MOV R10,R16
05EF 24BB CLR R11
(0541) dipdata[0]=diptable[ar];
05F0 E386 LDI R24,0x36
05F1 E090 LDI R25,0
05F2 01FB MOVW R30,R22
05F3 0FE8 ADD R30,R24
05F4 1FF9 ADC R31,R25
05F5 91E4 LPM R30,0(Z)
05F6 93E0011E STS dipdata,R30
(0542) ar=(tr&0xf0)>>4;
05F8 01B5 MOVW R22,R10
05F9 7F60 ANDI R22,0xF0
05FA 7070 ANDI R23,0
05FB 9576 LSR R23
05FC 9567 ROR R22
05FD 9576 LSR R23
05FE 9567 ROR R22
05FF 9576 LSR R23
0600 9567 ROR R22
0601 9576 LSR R23
0602 9567 ROR R22
(0543) dipdata[1]=diptable[ar];
0603 01FB MOVW R30,R22
0604 0FE8 ADD R30,R24
0605 1FF9 ADC R31,R25
0606 91E4 LPM R30,0(Z)
0607 93E0011F STS dipdata+1,R30
(0544) ar=(tr&0x0f);
0609 01B5 MOVW R22,R10
060A 706F ANDI R22,0xF
060B 7070 ANDI R23,0
(0545) dipdata[2]=diptable[ar];
060C 01FB MOVW R30,R22
060D 0FE8 ADD R30,R24
060E 1FF9 ADC R31,R25
060F 91E4 LPM R30,0(Z)
0610 93E00120 STS dipdata+2,R30
(0546) dipdata[0]|=0x80;
0612 9180011E LDS R24,dipdata
0614 6880 ORI R24,0x80
0615 9380011E STS dipdata,R24
(0547) dipdata[1]&=~0x80;
0617 9180011F LDS R24,dipdata+1
0619 778F ANDI R24,0x7F
061A 9380011F STS dipdata+1,R24
(0548) dipdata[2]&=~0x80;
061C 2F8E MOV R24,R30
061D 778F ANDI R24,0x7F
061E 93800120 STS dipdata+2,R24
(0549) }
(0550) }
0620 C005 RJMP 0x0626
(0551) else flagh |=BIT(1);
0621 91800103 LDS R24,flagh
0623 6082 ORI R24,2
0624 93800103 STS flagh,R24
(0552) dipcount=2;
0626 E082 LDI R24,2
0627 9380010C STS dipcount,R24
(0553) break;
0629 C0CF RJMP 0x06F9
(0554) case 2: if((datas[4]!=0)||(datas[5]!=0)) //没有数据不替换显示
062A 90200117 LDS R2,0x117
062C 2022 TST R2
062D F429 BNE 0x0633
062E 90200118 LDS R2,0x118
0630 2022 TST R2
0631 F409 BNE 0x0633
0632 C056 RJMP 0x0689
(0555) {
(0556) data[0]=datas[4];
0633 90200117 LDS R2,0x117
0635 9220011B STS data,R2
(0557) data[1]=datas[5];
0637 90200118 LDS R2,0x118
0639 9220011C STS data+1,R2
(0558) ar=code_comp(); //对照地址
063B DACB RCALL _code_comp
063C 2F60 MOV R22,R16
063D 2777 CLR R23
(0559) if(ar<100)
063E 3664 CPI R22,0x64
063F E0E0 LDI R30,0
0640 077E CPC R23,R30
0641 F008 BCS 0x0643
0642 C04B RJMP 0x068E
(0560) {
(0561) j=(ar*4)+2;
0643 E004 LDI R16,4
0644 E010 LDI R17,0
0645 019B MOVW R18,R22
0646 D416 RCALL empy16s
0647 01C8 MOVW R24,R16
0648 9602 ADIW R24,2
0649 93800135 STS j,R24
(0562) ar=EEPROM_read(j);
064B 2F08 MOV R16,R24
064C D0D9 RCALL _EEPROM_read
064D 2F60 MOV R22,R16
064E 2777 CLR R23
(0563) j++;
064F 91800135 LDS R24,j
0651 5F8F SUBI R24,0xFF
0652 93800135 STS j,R24
(0564) tr=EEPROM_read(j);
0654 2F08 MOV R16,R24
0655 D0D0 RCALL _EEPROM_read
0656 2EA0 MOV R10,R16
0657 24BB CLR R11
(0565) dipdata[0]=diptable[ar];
0658 E386 LDI R24,0x36
0659 E090 LDI R25,0
065A 01FB MOVW R30,R22
065B 0FE8 ADD R30,R24
065C 1FF9 ADC R31,R25
065D 91E4 LPM R30,0(Z)
065E 93E0011E STS dipdata,R30
(0566) ar=(tr&0xf0)>>4;
0660 01B5 MOVW R22,R10
0661 7F60 ANDI R22,0xF0
0662 7070 ANDI R23,0
0663 9576 LSR R23
0664 9567 ROR R22
0665 9576 LSR R23
0666 9567 ROR R22
0667 9576 LSR R23
0668 9567 ROR R22
0669 9576 LSR R23
066A 9567 ROR R22
(0567) dipdata[1]=diptable[ar];
066B 01FB MOVW R30,R22
066C 0FE8 ADD R30,R24
066D 1FF9 ADC R31,R25
066E 91E4 LPM R30,0(Z)
066F 93E0011F STS dipdata+1,R30
(0568) ar=(tr&0x0f);
0671 01B5 MOVW R22,R10
0672 706F ANDI R22,0xF
0673 7070 ANDI R23,0
(0569) dipdata[2]=diptable[ar];
0674 01FB MOVW R30,R22
0675 0FE8 ADD R30,R24
0676 1FF9 ADC R31,R25
0677 91E4 LPM R30,0(Z)
0678 93E00120 STS dipdata+2,R30
(0570) dipdata[1]|=0x80;
067A 9180011F LDS R24,dipdata+1
067C 6880 ORI R24,0x80
067D 9380011F STS dipdata+1,R24
(0571) dipdata[2]&=~0x80;
067F 2F8E MOV R24,R30
0680 778F ANDI R24,0x7F
0681 93800120 STS dipdata+2,R24
(0572) dipdata[0]&=~0x80;
0683 9180011E LDS R24,dipdata
0685 778F ANDI R24,0x7F
0686 9380011E STS dipdata,R24
(0573) }
(0574) }
0688 C005 RJMP 0x068E
(0575) else flagh |=BIT(1);
0689 91800103 LDS R24,flagh
068B 6082 ORI R24,2
068C 93800103 STS flagh,R24
(0576) dipcount=3;
068E E083 LDI R24,3
068F 9380010C STS dipcount,R24
(0577) break;
0691 C067 RJMP 0x06F9
(0578) case 3: if((datas[2]!=0)||(datas[3]!=0)) //没有数据不替换显示
0692 90200115 LDS R2,datas+2
0694 2022 TST R2
0695 F429 BNE 0x069B
0696 90200116 LDS R2,datas+3
0698 2022 TST R2
0699 F409 BNE 0x069B
069A C056 RJMP 0x06F1
(0579) {
(0580) data[0]=datas[2];
069B 90200115 LDS R2,datas+2
069D 9220011B STS data,R2
(0581) data[1]=datas[3];
069F 90200116 LDS R2,datas+3
06A1 9220011C STS data+1,R2
(0582) ar=code_comp(); //对照地址
06A3 DA63 RCALL _code_comp
06A4 2F60 MOV R22,R16
06A5 2777 CLR R23
(0583) if(ar<100)
06A6 3664 CPI R22,0x64
06A7 E0E0 LDI R30,0
06A8 077E CPC R23,R30
06A9 F008 BCS 0x06AB
06AA C04B RJMP 0x06F6
(0584) {
(0585) j=(ar*4)+2;
06AB E004 LDI R16,4
06AC E010 LDI R17,0
06AD 019B MOVW R18,R22
06AE D3AE RCALL empy16s
06AF 01C8 MOVW R24,R16
06B0 9602 ADIW R24,2
06B1 93800135 STS j,R24
(0586) ar=EEPROM_read(j);
06B3 2F08 MOV R16,R24
06B4 D071 RCALL _EEPROM_read
06B5 2F60 MOV R22,R16
06B6 2777 CLR R23
(0587) j++;
06B7 91800135 LDS R24,j
06B9 5F8F SUBI R24,0xFF
06BA 93800135 STS j,R24
(0588) tr=EEPROM_read(j);
06BC 2F08 MOV R16,R24
06BD D068 RCALL _EEPROM_read
06BE 2EA0 MOV R10,R16
06BF 24BB CLR R11
(0589) dipdata[0]=diptable[ar];
06C0 E386 LDI R24,0x36
06C1 E090 LDI R25,0
06C2 01FB MOVW R30,R22
06C3 0FE8 ADD R30,R24
06C4 1FF9 ADC R31,R25
06C5 91E4 LPM R30,0(Z)
06C6 93E0011E STS dipdata,R30
(0590) ar=(tr&0xf0)>>4;
06C8 01B5 MOVW R22,R10
06C9 7F60 ANDI R22,0xF0
06CA 7070 ANDI R23,0
06CB 9576 LSR R23
06CC 9567 ROR R22
06CD 9576 LSR R23
06CE 9567 ROR R22
06CF 9576 LSR R23
06D0 9567 ROR R22
06D1 9576 LSR R23
06D2 9567 ROR R22
(0591) dipdata[1]=diptable[ar];
06D3 01FB MOVW R30,R22
06D4 0FE8 ADD R30,R24
06D5 1FF9 ADC R31,R25
06D6 91E4 LPM R30,0(Z)
06D7 93E0011F STS dipdata+1,R30
(0592) ar=(tr&0x0f);
06D9 01B5 MOVW R22,R10
06DA 706F ANDI R22,0xF
06DB 7070 ANDI R23,0
(0593) dipdata[2]=diptable[ar];
06DC 01FB MOVW R30,R22
06DD 0FE8 ADD R30,R24
06DE 1FF9 ADC R31,R25
06DF 91E4 LPM R30,0(Z)
06E0 93E00120 STS dipdata+2,R30
(0594) dipdata[2]|=0x80;
06E2 2F8E MOV R24,R30
06E3 6880 ORI R24,0x80
06E4 93800120 STS dipdata+2,R24
(0595) dipdata[1]&=~0x80;
06E6 9180011F LDS R24,dipdata+1
06E8 778F ANDI R24,0x7F
06E9 9380011F STS dipdata+1,R24
(0596) dipdata[0]&=~0x80;
06EB 9180011E LDS R24,dipdata
06ED 778F ANDI R24,0x7F
06EE 9380011E STS dipdata,R24
(0597) }
(0598) }
06F0 C005 RJMP 0x06F6
(0599) else flagh |=BIT(1);
06F1 91800103 LDS R24,flagh
06F3 6082 ORI R24,2
06F4 93800103 STS flagh,R24
(0600) dipcount=1;
06F6 E081 LDI R24,1
06F7 9380010C STS dipcount,R24
06F9 CD7F RJMP 0x0479
06FA 9508 RET
FILE: E:\abol\file\EMD\programme\delay.c
(0001)
(0002) /********************************************************/
(0003) /* ABOL */
(0004) /* 868MHZ数码管显示接收器 */
(0005) /* 作者:于朝晖 2008-5-24 9:30:00 */
(0006) /* 目标MCU:MEGA16 晶振:INT RC 8MHZ */
(0007) /* 文件名称:main.c 主函数 */
(0008) /* 编译:ICC-AVR application builder */
(0009) /* 当前版本: 1.0 */
(0010) /* 修改日期: 2008.5.24 */
(0011) /********************************************************/
(0012)
(0013)
(0014) #include <iom88v.h>
(0015) #include <macros.h>
(0016) #include "delay.h"
(0017) #define xtal 8
(0018)
(0019) /* 微秒级延时程序 */
(0020) void del(int time)
(0021) {
(0022) do
(0023) {
(0024) time--;
_del:
time --> R16
06FB 5001 SUBI R16,1
06FC 4010 SBCI R17,0
(0025) }
(0026) while (time>1);
06FD E081 LDI R24,1
06FE E090 LDI R25,0
06FF 1780 CP R24,R16
0700 0791 CPC R25,R17
0701 F3CC BLT 0x06FB
0702 9508 RET
(0027) }
(0028)
(0029) /* 毫秒级延时程序 */
(0030) void delay_1ms(void)
(0031) { unsigned int i1;
(0032) for(i1=1;i1<(unsigned int)(xtal*143-2);i1++)
_delay_1ms:
i1 --> R16
0703 E001 LDI R16,1
0704 E010 LDI R17,0
0705 C002 RJMP 0x0708
0706 5F0F SUBI R16,0xFF
0707 4F1F SBCI R17,0xFF
0708 3706 CPI R16,0x76
0709 E0E4 LDI R30,4
070A 071E CPC R17,R30
070B F3D0 BCS 0x0706
070C 9508 RET
_delay:
i2 --> R20
n --> R22
070D D36B RCALL push_gset2
070E 01B8 MOVW R22,R16
(0033) ;
(0034) }
(0035)
(0036) void delay(unsigned int n)
(0037) {
(0038) unsigned int i2=0;
070F 2744 CLR R20
0710 2755 CLR R21
0711 C004 RJMP 0x0716
(0039) while(i2<n)
(0040) {delay_1ms();
0712 DFF0 RCALL _delay_1ms
(0041) i2++; WDR();
0713 5F4F SUBI R20,0xFF
0714 4F5F SBCI R21,0xFF
0715 95A8 WDR
0716 1746 CP R20,R22
0717 0757 CPC R21,R23
0718 F3C8 BCS 0x0712
0719 D353 RCALL pop_gset2
071A 9508 RET
FILE: E:\abol\file\EMD\programme\eeprom.c
(0001)
(0002) /********************************************************/
(0003) /* ABOL */
(0004) /* 868MHZ数码管显示接收器 */
(0005) /* 作者:于朝晖 2008-5-24 9:30:00 */
(0006) /* 目标MCU:MEGA16 晶振:INT RC 8MHZ */
(0007) /* 文件名称:main.c 主函数 */
(0008) /* 编译:ICC-AVR application builder */
(0009) /* 当前版本: 1.0 */
(0010) /* 修改日期: 2008.5.24 */
(0011) /********************************************************/
(0012)
(0013)
(0014) #include <iom88v.h>
(0015) #include <macros.h>
(0016) #include "eeprom.h"
(0017)
(0018)
(0019)
(0020) /* EEPROM 写入 */
(0021) void EEPROM_write(unsigned char uiaddress,unsigned char ucdata)
(0022) {
(0023) WDR();
_EEPROM_write:
ucdata --> R18
uiaddress --> R16
071B 95A8 WDR
(0024) while(EECR&(1<<EEWE)); /*等待上一次写操作结束*/
071C 99F9 SBIC 0x1F,1
071D CFFE RJMP 0x071C
(0025) EEAR=uiaddress; /*设置地址寄存
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -