📄 handle.lst
字号:
_spi_init:
0010E E580 LDI R24,0x50
0010F B98D OUT 0x0D,R24
(0085) SPSR = 0x00; //setup SPI
00110 2422 CLR R2
00111 B82E OUT 0x0E,R2
00112 9508 RET
(0086) }
(0087) //call this routine to initialize all peripherals
(0088) //-------------------------------------------------------------
(0089) void init_devices(void)
(0090) {
(0091) //stop errant interrupts until set up
(0092) CLI(); //disable all interrupts
_init_devices:
00113 94F8 BCLR 7
(0093) port_init();
00114 DF81 RCALL _port_init
(0094) timer0_init();
00115 DF8C RCALL _timer0_init
(0095) timer1_init();
00116 DFE0 RCALL _timer1_init
(0096) spi_init();
00117 DFF6 RCALL _spi_init
(0097)
(0098) MCUCR = 0x00;
00118 2422 CLR R2
00119 BE25 OUT 0x35,R2
(0099) GICR = 0x00;
0011A BE2B OUT 0x3B,R2
(0100) TIMSK = 0x01; //timer interrupt sources
0011B E081 LDI R24,1
0011C BF89 OUT 0x39,R24
(0101) SEI(); //re-enable interrupts
0011D 9478 BSET 7
0011E 9508 RET
_Reset_Meter:
0011F 9723 SBIW R28,3
(0102) //all peripherals are now initialized
(0103) }
(0104)
(0105) //-------------------------------------------------------------
(0106) u8 Reset_Meter(void)
(0107) {
(0108)
(0109) init_devices();
00120 DFF2 RCALL _init_devices
(0110) EEPROMReadBytes(0,(u8 *)(& Cal),12);
00121 E08C LDI R24,0xC
00122 E090 LDI R25,0
00123 8399 STD Y+1,R25
00124 8388 ST Y,R24
00125 E72D LDI R18,0x7D
00126 E030 LDI R19,0
00127 2700 CLR R16
00128 2711 CLR R17
00129 D957 RCALL _EEPROMReadBytes
(0111) if(Cal.OutH==0xffff)
0012A 9180 0081 LDS R24,Cal+4
0012C 9190 0082 LDS R25,Cal+5
0012E 3F8F CPI R24,0xFF
0012F EFEF LDI R30,0xFF
00130 079E CPC R25,R30
00131 F521 BNE 0x0156
(0112) {
(0113) Cal.OutH=0x33C3;
00132 EC83 LDI R24,0xC3
00133 E393 LDI R25,0x33
00134 9390 0082 STS Cal+5,R25
00136 9380 0081 STS Cal+4,R24
(0114) Cal.OutM=0x2062;
00138 E682 LDI R24,0x62
00139 E290 LDI R25,0x20
0013A 9390 0080 STS Cal+3,R25
0013C 9380 007F STS Cal+2,R24
(0115) Cal.OutL=0xA4C;
0013E E48C LDI R24,0x4C
0013F E09A LDI R25,0xA
00140 9390 007E STS Cal+1,R25
00142 9380 007D STS Cal,R24
(0116) Cal.IB_H=0xfe;
00144 EF8E LDI R24,0xFE
00145 9380 0083 STS Cal+6,R24
(0117) Cal.IB_M=0x80;
00147 E880 LDI R24,0x80
00148 9380 0084 STS Cal+7,R24
(0118) Cal.IB_L=0X38;
0014A E388 LDI R24,0x38
0014B 9380 0085 STS Cal+8,R24
(0119) Cal.IK_H=0x2B;
0014D E28B LDI R24,0x2B
0014E 9380 0086 STS Cal+9,R24
(0120) Cal.IK_M=0xB5;
00150 EB85 LDI R24,0xB5
00151 9380 0087 STS Cal+10,R24
(0121) Cal.IK_L=0X2A;
00153 E28A LDI R24,0x2A
00154 9380 0088 STS Cal+11,R24
(0122) }
(0123) disbuff0=Table[1];
00156 9020 0061 LDS R2,Table+1
00158 9220 0091 STS disbuff+7,R2
(0124) disbuff1=Table[2];
0015A 9020 0062 LDS R2,Table+2
0015C 9220 0090 STS disbuff+6,R2
(0125) disbuff2=Table[3];
0015E 9020 0063 LDS R2,Table+3
00160 9220 008F STS disbuff+5,R2
(0126) disbuff3=Table[4];
00162 9020 0064 LDS R2,Table+4
00164 9220 008E STS disbuff+4,R2
(0127) disbuff4=Table[5];
00166 9020 0065 LDS R2,Table+5
00168 9220 008D STS disbuff+3,R2
(0128) disbuff5=Table[6];
0016A 9020 0066 LDS R2,Table+6
0016C 9220 008C STS disbuff+2,R2
(0129) disbuff6=Table[7];
0016E 9020 0067 LDS R2,Table+7
00170 9220 008B STS disbuff+1,R2
(0130) disbuff7=Table[8];
00172 9020 0068 LDS R2,Table+8
00174 9220 008A STS disbuff,R2
(0131)
(0132) Clr_RST();
00176 B382 IN R24,0x12
00177 7F87 ANDI R24,0xF7
00178 BB82 OUT 0x12,R24
(0133) Delay(4000);
00179 EA00 LDI R16,0xA0
0017A E01F LDI R17,0xF
0017B E020 LDI R18,0
0017C E030 LDI R19,0
0017D D77D RCALL _Delay
(0134) Set_RST();
0017E 9A93 SBI 0x12,3
(0135) CS5460a_Write(SYNC1,SYNC1,SYNC1,SYNC0);
0017F EF8E LDI R24,0xFE
00180 838A STD Y+2,R24
00181 EF8F LDI R24,0xFF
00182 8388 ST Y,R24
00183 EF2F LDI R18,0xFF
00184 EF0F LDI R16,0xFF
00185 DED2 RCALL _CS5460a_Write
(0136) CS5460A_REG_WR(0,0x00,0x00,0x11);
00186 E181 LDI R24,0x11
00187 838A STD Y+2,R24
00188 2422 CLR R2
00189 8228 ST Y,R2
0018A 2722 CLR R18
0018B 2700 CLR R16
0018C DED9 RCALL _CS5460A_REG_WR
(0137) CS5460A_REG_WR(28,0,0x00,0x04);//控制寄存器
0018D E084 LDI R24,4
0018E 838A STD Y+2,R24
0018F 2422 CLR R2
00190 8228 ST Y,R2
00191 2722 CLR R18
00192 E10C LDI R16,0x1C
00193 DED2 RCALL _CS5460A_REG_WR
(0138) CS5460A_REG_WR(15,0xff,0xff,0xff);
00194 EF8F LDI R24,0xFF
00195 838A STD Y+2,R24
00196 8388 ST Y,R24
00197 EF2F LDI R18,0xFF
00198 E00F LDI R16,0xF
00199 DECC RCALL _CS5460A_REG_WR
(0139) CS5460A_REG_WR(26,0x80,0x00,0x00);
0019A 2422 CLR R2
0019B 822A STD Y+2,R2
0019C 8228 ST Y,R2
0019D E820 LDI R18,0x80
0019E E10A LDI R16,0x1A
0019F DEC6 RCALL _CS5460A_REG_WR
(0140) CS5460A_REG_WR(5,0x00,0x03,0x20);
001A0 E280 LDI R24,0x20
001A1 838A STD Y+2,R24
001A2 E083 LDI R24,3
001A3 8388 ST Y,R24
001A4 2722 CLR R18
001A5 E005 LDI R16,5
001A6 DEBF RCALL _CS5460A_REG_WR
(0141) CS5460A_REG_WR(1,Cal.IB_H,Cal.IB_M,Cal.IB_L);
001A7 9020 0085 LDS R2,Cal+8
001A9 822A STD Y+2,R2
001AA 9020 0084 LDS R2,Cal+7
001AC 8228 ST Y,R2
001AD 9120 0083 LDS R18,Cal+6
001AF E001 LDI R16,1
001B0 DEB5 RCALL _CS5460A_REG_WR
(0142) Delay(1000);
001B1 EE08 LDI R16,0xE8
001B2 E013 LDI R17,3
001B3 E020 LDI R18,0
001B4 E030 LDI R19,0
001B5 D745 RCALL _Delay
(0143) CS5460A_REG_WR(2,Cal.IK_H,Cal.IK_M,Cal.IK_L);
001B6 9020 0088 LDS R2,Cal+11
001B8 822A STD Y+2,R2
001B9 9020 0087 LDS R2,Cal+10
001BB 8228 ST Y,R2
001BC 9120 0086 LDS R18,Cal+9
001BE E002 LDI R16,2
001BF DEA6 RCALL _CS5460A_REG_WR
(0144) Delay(1000);
001C0 EE08 LDI R16,0xE8
001C1 E013 LDI R17,3
001C2 E020 LDI R18,0
001C3 E030 LDI R19,0
001C4 D736 RCALL _Delay
(0145) CS5460a_Write_Byte(0xe8);
001C5 EE08 LDI R16,0xE8
001C6 DE87 RCALL _CS5460a_Write_Byte
(0146) CalTemp=0;
001C7 2422 CLR R2
001C8 2433 CLR R3
001C9 9230 007C STS CalTemp+1,R3
001CB 9220 007B STS CalTemp,R2
(0147) Per=400;
001CD E980 LDI R24,0x90
001CE E091 LDI R25,1
001CF 9390 007A STS Per+1,R25
001D1 9380 0079 STS Per,R24
(0148) return(GOTO_WAIT);
001D3 E001 LDI R16,1
001D4 9623 ADIW R28,3
001D5 9508 RET
_Wait:
temp --> Y,+0
001D6 D823 RCALL push_xgsetF000
001D7 9724 SBIW R28,4
(0149) }
(0150) //-------------------------------------------------------------
(0151) u8 Wait(void)
(0152) {
(0153) unsigned long temp;
(0154) temp= CS5460a_Read(11)>>9;
001D8 E00B LDI R16,0xB
001D9 DE9F RCALL _CS5460a_Read
001DA E089 LDI R24,0x9
001DB E090 LDI R25,0
001DC 938A ST -Y,R24
001DD D748 RCALL asr32
001DE 8308 ST Y,R16
001DF 8319 STD Y+1,R17
001E0 832A STD Y+2,R18
001E1 833B STD Y+3,R19
(0155) if(temp>9999)
001E2 E04F LDI R20,0xF
001E3 E257 LDI R21,0x27
001E4 E060 LDI R22,0
001E5 E070 LDI R23,0
001E6 8028 LD R2,Y
001E7 8039 LDD R3,Y+1
001E8 804A LDD R4,Y+2
001E9 805B LDD R5,Y+3
001EA 1542 CP R20,R2
001EB 0553 CPC R21,R3
001EC 0564 CPC R22,R4
001ED 0575 CPC R23,R5
001EE F008 BCS 0x01F0
001EF C077 RJMP 0x0267
(0156) {
(0157) temp/=10;
001F0 E04A LDI R20,0xA
001F1 E050 LDI R21,0
001F2 E060 LDI R22,0
001F3 E070 LDI R23,0
001F4 0181 MOVW R16,R2
001F5 0192 MOVW R18,R4
001F6 937A ST -Y,R23
001F7 936A ST -Y,R22
001F8 935A ST -Y,R21
001F9 934A ST -Y,R20
001FA D753 RCALL div32u
001FB 8308 ST Y,R16
001FC 8319 STD Y+1,R17
001FD 832A STD Y+2,R18
001FE 833B STD Y+3,R19
(0158) disbuff4=Table[temp/1000];
001FF EE48 LDI R20,0xE8
00200 E053 LDI R21,3
00201 E060 LDI R22,0
00202 E070 LDI R23,0
00203 8108 LD R16,Y
00204 8119 LDD R17,Y+1
00205 812A LDD R18,Y+2
00206 813B LDD R19,Y+3
00207 937A ST -Y,R23
00208 936A ST -Y,R22
00209 935A ST -Y,R21
0020A 934A ST -Y,R20
0020B D742 RCALL div32u
0020C 01F8 MOVW R30,R16
0020D E680 LDI R24,0x60
0020E E090 LDI R25,0
0020F 0FE8 ADD R30,R24
00210 1FF9 ADC R31,R25
00211 8020 LD R2,Z
00212 9220 008D STS disbuff+3,R2
(0159) disbuff5=Table[temp/100%10]&0x7f;
00214 E644 LDI R20,0x64
00215 E050 LDI R21,0
00216 E060 LDI R22,0
00217 E070 LDI R23,0
00218 8108 LD R16,Y
00219 8119 LDD R17,Y+1
0021A 812A LDD R18,Y+2
0021B 813B LDD R19,Y+3
0021C 937A ST -Y,R23
0021D 936A ST -Y,R22
0021E 935A ST -Y,R21
0021F 934A ST -Y,R20
00220 D72D RCALL div32u
00221 E04A LDI R20,0xA
00222 E050 LDI R21,0
00223 E060 LDI R22,0
00224 E070 LDI R23,0
00225 937A ST -Y,R23
00226 936A ST -Y,R22
00227 935A ST -Y,R21
00228 934A ST -Y,R20
00229 D726 RCALL mod32u
0022A 01F8 MOVW R30,R16
0022B E680 LDI R24,0x60
0022C E090 LDI R25,0
0022D 0FE8 ADD R30,R24
0022E 1FF9 ADC R31,R25
0022F 8180 LD R24,Z
00230 778F ANDI R24,0x7F
00231 9380 008C STS disbuff+2,R24
(0160) disbuff6=Table[temp/10%10];
00233 E04A LDI R20,0xA
00234 E050 LDI R21,0
00235 E060 LDI R22,0
00236 E070 LDI R23,0
00237 8108 LD R16,Y
00238 8119 LDD R17,Y+1
00239 812A LDD R18,Y+2
0023A 813B LDD R19,Y+3
0023B 937A ST -Y,R23
0023C 936A ST -Y,R22
0023D 935A ST -Y,R21
0023E 934A ST -Y,R20
0023F D70E RCALL div32u
00240 E04A LDI R20,0xA
00241 E050 LDI R21,0
00242 E060 LDI R22,0
00243 E070 LDI R23,0
00244 937A ST -Y,R23
00245 936A ST -Y,R22
00246 935A ST -Y,R21
00247 934A ST -Y,R20
00248 D707 RCALL mod32u
00249 01F8 MOVW R30,R16
0024A E680 LDI R24,0x60
0024B E090 LDI R25,0
0024C 0FE8 ADD R30,R24
0024D 1FF9 ADC R31,R25
0024E 8020 LD R2,Z
0024F 9220 008B STS disbuff+1,R2
(0161) disbuff7=Table[temp%10];
00251 E04A LDI R20,0xA
00252 E050 LDI R21,0
00253 E060 LDI R22,0
00254 E070 LDI R23,0
00255 8108 LD R16,Y
00256 8119 LDD R17,Y+1
00257 812A LDD R18,Y+2
00258 813B LDD R19,Y+3
00259 937A ST -Y,R23
0025A 936A ST -Y,R22
0025B 935A ST -Y,R21
0025C 934A ST -Y,R20
0025D D6F2 RCALL mod32u
0025E 01F8 MOVW R30,R16
0025F E680 LDI R24,0x60
00260 E090 LDI R25,0
00261 0FE8 ADD R30,R24
00262 1FF9 ADC R31,R25
00263 8020 LD R2,Z
00264 9220 008A STS disbuff,R2
(0162) }
00266 C067 RJMP 0x02CE
(0163) else
(0164) {
(0165) disbuff4=Table[temp/1000]&0x7f;
00267 EE48 LDI R20,0xE8
00268 E053 LDI R21,3
00269 E060 LDI R22,0
0026A E070 LDI R23,0
0026B 8108 LD R16,Y
0026C 8119 LDD R17,Y+1
0026D 812A LDD R18,Y+2
0026E 813B LDD R19,Y+3
0026F 937A ST -Y,R23
00270 936A ST -Y,R22
00271 935A ST -Y,R21
00272 934A ST -Y,R20
00273 D6DA RCALL div32u
00274 01F8 MOVW R30,R16
00275 E680 LDI R24,0x60
00276 E090 LDI R25,0
00277 0FE8 ADD R30,R24
00278 1FF9 ADC R31,R25
00279 8180 LD R24,Z
0027A 778F ANDI R24,0x7F
0027B 9380 008D STS disbuff+3,R24
(0166) disbuff5=Table[temp/100%10];
0027D E644 LDI R20,0x64
0027E E050 LDI R21,0
0027F E060 LDI R22,0
00280 E070 LDI R23,0
00281 8108 LD R16,Y
00282 8119 LDD R17,Y+1
00283 812A LDD R18,Y+2
00284 813B LDD R19,Y+3
00285 937A ST -Y,R23
00286 936A ST -Y,R22
00287 935A ST -Y,R21
00288 934A ST -Y,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -