📄 mian.lis
字号:
00EE 0895 ret
00F0 .dbend
00F0 .dbfunc e spi_init _spi_init fV
.even
00F0 _spi_init::
00F0 .dbline -1
00F0 .dbline 83
00F0 ; }
00F0 ;
00F0 ; //-------------------------------------------------------------
00F0 ; //SPI initialize
00F0 ; // clock rate: 2000000hz
00F0 ; void spi_init(void)
00F0 ; {
00F0 .dbline 84
00F0 ; SPCR = 0x50; //setup SPI
00F0 80E5 ldi R24,80
00F2 8DB9 out 0xd,R24
00F4 .dbline 85
00F4 ; SPSR = 0x00; //setup SPI
00F4 2224 clr R2
00F6 2EB8 out 0xe,R2
00F8 .dbline -2
00F8 L15:
00F8 .dbline 0 ; func end
00F8 0895 ret
00FA .dbend
00FA .dbfunc e init_devices _init_devices fV
.even
00FA _init_devices::
00FA .dbline -1
00FA .dbline 90
00FA ; }
00FA ; //call this routine to initialize all peripherals
00FA ; //-------------------------------------------------------------
00FA ; void init_devices(void)
00FA ; {
00FA .dbline 92
00FA ; //stop errant interrupts until set up
00FA ; CLI(); //disable all interrupts
00FA F894 cli
00FC .dbline 93
00FC ; port_init();
00FC 81DF rcall _port_init
00FE .dbline 94
00FE ; timer0_init();
00FE 8CDF rcall _timer0_init
0100 .dbline 95
0100 ; timer1_init();
0100 E0DF rcall _timer1_init
0102 .dbline 96
0102 ; spi_init();
0102 F6DF rcall _spi_init
0104 .dbline 98
0104 ;
0104 ; MCUCR = 0x00;
0104 2224 clr R2
0106 25BE out 0x35,R2
0108 .dbline 99
0108 ; GICR = 0x00;
0108 2BBE out 0x3b,R2
010A .dbline 100
010A ; TIMSK = 0x01; //timer interrupt sources
010A 81E0 ldi R24,1
010C 89BF out 0x39,R24
010E .dbline 101
010E ; SEI(); //re-enable interrupts
010E 7894 sei
0110 .dbline -2
0110 L16:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbend
0112 .dbfunc e Reset_Meter _Reset_Meter fc
.even
0112 _Reset_Meter::
0112 2397 sbiw R28,3
0114 .dbline -1
0114 .dbline 107
0114 ; //all peripherals are now initialized
0114 ; }
0114 ;
0114 ; //-------------------------------------------------------------
0114 ; u8 Reset_Meter(void)
0114 ; {
0114 .dbline 109
0114 ;
0114 ; init_devices();
0114 F2DF rcall _init_devices
0116 .dbline 110
0116 ; EEPROMReadBytes(0,(u8 *)(& Cal),12);
0116 8CE0 ldi R24,12
0118 90E0 ldi R25,0
011A 9983 std y+1,R25
011C 8883 std y+0,R24
011E 20E0 ldi R18,<_Cal
0120 30E0 ldi R19,>_Cal
0122 0027 clr R16
0124 1127 clr R17
0126 00D0 rcall _EEPROMReadBytes
0128 .dbline 111
0128 ; if(Cal.OutH==0xffff)
0128 80910900 lds R24,_Cal+4
012C 90910A00 lds R25,_Cal+4+1
0130 8F3F cpi R24,255
0132 EFEF ldi R30,255
0134 9E07 cpc R25,R30
0136 21F5 brne L18
0138 X3:
0138 .dbline 112
0138 ; {
0138 .dbline 113
0138 ; Cal.OutH=0x33C3;
0138 83EC ldi R24,13251
013A 93E3 ldi R25,51
013C 90930A00 sts _Cal+4+1,R25
0140 80930900 sts _Cal+4,R24
0144 .dbline 114
0144 ; Cal.OutM=0x2062;
0144 82E6 ldi R24,8290
0146 90E2 ldi R25,32
0148 90930800 sts _Cal+2+1,R25
014C 80930700 sts _Cal+2,R24
0150 .dbline 115
0150 ; Cal.OutL=0xA4C;
0150 8CE4 ldi R24,2636
0152 9AE0 ldi R25,10
0154 90930600 sts _Cal+1,R25
0158 80930500 sts _Cal,R24
015C .dbline 116
015C ; Cal.IB_H=0xfe;
015C 8EEF ldi R24,254
015E 80930B00 sts _Cal+6,R24
0162 .dbline 117
0162 ; Cal.IB_M=0x80;
0162 80E8 ldi R24,128
0164 80930C00 sts _Cal+7,R24
0168 .dbline 118
0168 ; Cal.IB_L=0X38;
0168 88E3 ldi R24,56
016A 80930D00 sts _Cal+8,R24
016E .dbline 119
016E ; Cal.IK_H=0x2B;
016E 8BE2 ldi R24,43
0170 80930E00 sts _Cal+9,R24
0174 .dbline 120
0174 ; Cal.IK_M=0xB5;
0174 85EB ldi R24,181
0176 80930F00 sts _Cal+10,R24
017A .dbline 121
017A ; Cal.IK_L=0X2A;
017A 8AE2 ldi R24,42
017C 80931000 sts _Cal+11,R24
0180 .dbline 122
0180 ; }
0180 L18:
0180 .dbline 123
0180 ; disbuff0=Table[1];
0180 20900100 lds R2,_Table+1
0184 20921900 sts _disbuff+7,R2
0188 .dbline 124
0188 ; disbuff1=Table[2];
0188 20900200 lds R2,_Table+2
018C 20921800 sts _disbuff+6,R2
0190 .dbline 125
0190 ; disbuff2=Table[3];
0190 20900300 lds R2,_Table+3
0194 20921700 sts _disbuff+5,R2
0198 .dbline 126
0198 ; disbuff3=Table[4];
0198 20900400 lds R2,_Table+4
019C 20921600 sts _disbuff+4,R2
01A0 .dbline 127
01A0 ; disbuff4=Table[5];
01A0 20900500 lds R2,_Table+5
01A4 20921500 sts _disbuff+3,R2
01A8 .dbline 128
01A8 ; disbuff5=Table[6];
01A8 20900600 lds R2,_Table+6
01AC 20921400 sts _disbuff+2,R2
01B0 .dbline 129
01B0 ; disbuff6=Table[7];
01B0 20900700 lds R2,_Table+7
01B4 20921300 sts _disbuff+1,R2
01B8 .dbline 130
01B8 ; disbuff7=Table[8];
01B8 20900800 lds R2,_Table+8
01BC 20921200 sts _disbuff,R2
01C0 .dbline 132
01C0 ;
01C0 ; Clr_RST();
01C0 82B3 in R24,0x12
01C2 877F andi R24,247
01C4 82BB out 0x12,R24
01C6 .dbline 133
01C6 ; Delay(4000);
01C6 00EA ldi R16,160
01C8 1FE0 ldi R17,15
01CA 20E0 ldi R18,0
01CC 30E0 ldi R19,0
01CE 7DD7 rcall _Delay
01D0 .dbline 134
01D0 ; Set_RST();
01D0 939A sbi 0x12,3
01D2 .dbline 135
01D2 ; CS5460a_Write(SYNC1,SYNC1,SYNC1,SYNC0);
01D2 8EEF ldi R24,254
01D4 8A83 std y+2,R24
01D6 8FEF ldi R24,255
01D8 8883 std y+0,R24
01DA 2FEF ldi R18,255
01DC 0FEF ldi R16,255
01DE 00D0 rcall _CS5460a_Write
01E0 .dbline 136
01E0 ; CS5460A_REG_WR(0,0x00,0x00,0x11);
01E0 81E1 ldi R24,17
01E2 8A83 std y+2,R24
01E4 2224 clr R2
01E6 2882 std y+0,R2
01E8 2227 clr R18
01EA 0027 clr R16
01EC 00D0 rcall _CS5460A_REG_WR
01EE .dbline 137
01EE ; CS5460A_REG_WR(28,0,0x00,0x04);//控制寄存器
01EE 84E0 ldi R24,4
01F0 8A83 std y+2,R24
01F2 2224 clr R2
01F4 2882 std y+0,R2
01F6 2227 clr R18
01F8 0CE1 ldi R16,28
01FA 00D0 rcall _CS5460A_REG_WR
01FC .dbline 138
01FC ; CS5460A_REG_WR(15,0xff,0xff,0xff);
01FC 8FEF ldi R24,255
01FE 8A83 std y+2,R24
0200 8883 std y+0,R24
0202 2FEF ldi R18,255
0204 0FE0 ldi R16,15
0206 00D0 rcall _CS5460A_REG_WR
0208 .dbline 139
0208 ; CS5460A_REG_WR(26,0x80,0x00,0x00);
0208 2224 clr R2
020A 2A82 std y+2,R2
020C 2882 std y+0,R2
020E 20E8 ldi R18,128
0210 0AE1 ldi R16,26
0212 00D0 rcall _CS5460A_REG_WR
0214 .dbline 140
0214 ; CS5460A_REG_WR(5,0x00,0x03,0x20);
0214 80E2 ldi R24,32
0216 8A83 std y+2,R24
0218 83E0 ldi R24,3
021A 8883 std y+0,R24
021C 2227 clr R18
021E 05E0 ldi R16,5
0220 00D0 rcall _CS5460A_REG_WR
0222 .dbline 141
0222 ; CS5460A_REG_WR(1,Cal.IB_H,Cal.IB_M,Cal.IB_L);
0222 20900D00 lds R2,_Cal+8
0226 2A82 std y+2,R2
0228 20900C00 lds R2,_Cal+7
022C 2882 std y+0,R2
022E 20910B00 lds R18,_Cal+6
0232 01E0 ldi R16,1
0234 00D0 rcall _CS5460A_REG_WR
0236 .dbline 142
0236 ; Delay(1000);
0236 08EE ldi R16,232
0238 13E0 ldi R17,3
023A 20E0 ldi R18,0
023C 30E0 ldi R19,0
023E 45D7 rcall _Delay
0240 .dbline 143
0240 ; CS5460A_REG_WR(2,Cal.IK_H,Cal.IK_M,Cal.IK_L);
0240 20901000 lds R2,_Cal+11
0244 2A82 std y+2,R2
0246 20900F00 lds R2,_Cal+10
024A 2882 std y+0,R2
024C 20910E00 lds R18,_Cal+9
0250 02E0 ldi R16,2
0252 00D0 rcall _CS5460A_REG_WR
0254 .dbline 144
0254 ; Delay(1000);
0254 08EE ldi R16,232
0256 13E0 ldi R17,3
0258 20E0 ldi R18,0
025A 30E0 ldi R19,0
025C 36D7 rcall _Delay
025E .dbline 145
025E ; CS5460a_Write_Byte(0xe8);
025E 08EE ldi R16,232
0260 00D0 rcall _CS5460a_Write_Byte
0262 .dbline 146
0262 ; CalTemp=0;
0262 2224 clr R2
0264 3324 clr R3
0266 30920400 sts _CalTemp+1,R3
026A 20920300 sts _CalTemp,R2
026E .dbline 147
026E ; Per=400;
026E 80E9 ldi R24,400
0270 91E0 ldi R25,1
0272 90930200 sts _Per+1,R25
0276 80930100 sts _Per,R24
027A .dbline 148
027A ; return(GOTO_WAIT);
027A 01E0 ldi R16,1
027C .dbline -2
027C L17:
027C .dbline 0 ; func end
027C 2396 adiw R28,3
027E 0895 ret
0280 .dbend
0280 .dbfunc e Wait _Wait fc
0280 ; temp -> y+0
.even
0280 _Wait::
0280 00D0 rcall push_xgsetF000
0282 2497 sbiw R28,4
0284 .dbline -1
0284 .dbline 152
0284 ; }
0284 ; //-------------------------------------------------------------
0284 ; u8 Wait(void)
0284 ; {
0284 .dbline 154
0284 ; unsigned long temp;
0284 ; temp= CS5460a_Read(11)>>9;
0284 0BE0 ldi R16,11
0286 00D0 rcall _CS5460a_Read
0288 89E0 ldi R24,9
028A 90E0 ldi R25,0
028C 8A93 st -y,R24
028E 00D0 rcall asr32
0290 0883 std y+0,R16
0292 1983 std y+1,R17
0294 2A83 std y+2,R18
0296 3B83 std y+3,R19
0298 .dbline 155
0298 ; if(temp>9999)
0298 4FE0 ldi R20,15
029A 57E2 ldi R21,39
029C 60E0 ldi R22,0
029E 70E0 ldi R23,0
02A0 2880 ldd R2,y+0
02A2 3980 ldd R3,y+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -