📄 mydesign.lst
字号:
(0116) void timer0_ovf_isr(void)
(0117) {
(0118) SEI();
01C3 9478 BSET 7
(0119) TCNT0 = 0xD9; //reload counter value
01C4 ED89 LDI R24,0xD9
01C5 BF82 OUT 0x32,R24
(0120) time_count++;
01C6 91800105 LDS R24,_time_count
01C8 5F8F SUBI R24,0xFF
01C9 93800105 STS _time_count,R24
(0121) if(time_count==100)
01CB 3684 CPI R24,0x64
01CC F009 BEQ 0x01CE
01CD C0D5 RJMP 0x02A3
(0122) {
(0123) time_count=0;
01CE 2422 CLR R2
01CF 92200105 STS _time_count,R2
(0124) LCD_display(9,0,4,arv_ADC/arv_count/K1);
01D1 9040008E LDS R4,0x8E
01D3 9050008F LDS R5,0x8F
01D5 9020008C LDS R2,0x8C
01D7 9030008D LDS R3,0x8D
01D9 9080008A LDS R8,0x8A
01DB 9090008B LDS R9,0x8B
01DD 90600088 LDS R6,0x88
01DF 90700089 LDS R7,0x89
01E1 925A ST R5,-Y
01E2 924A ST R4,-Y
01E3 923A ST R3,-Y
01E4 922A ST R2,-Y
01E5 2D06 MOV R16,R6
01E6 2D17 MOV R17,R7
01E7 2D28 MOV R18,R8
01E8 2D39 MOV R19,R9
01E9 D9CD RCALL div32u
01EA 2FEC MOV R30,R28
01EB 2FFD MOV R31,R29
01EC 8702 STD Z+10,R16
01ED 8713 STD Z+11,R17
01EE 8724 STD Z+12,R18
01EF 8735 STD Z+13,R19
01F0 E10E LDI R16,0x1E
01F1 E010 LDI R17,0
01F2 DA69 RCALL lpm32
01F3 933A ST R19,-Y
01F4 932A ST R18,-Y
01F5 931A ST R17,-Y
01F6 930A ST R16,-Y
01F7 2FEC MOV R30,R28
01F8 2FFD MOV R31,R29
01F9 8426 LDD R2,Z+14
01FA 8437 LDD R3,Z+15
01FB 8840 LDD R4,Z+16
01FC 8851 LDD R5,Z+17
01FD 9456 LSR R5
01FE 9447 ROR R4
01FF 9437 ROR R3
0200 9427 ROR R2
0201 2D02 MOV R16,R2
0202 2D13 MOV R17,R3
0203 2D24 MOV R18,R4
0204 2D35 MOV R19,R5
0205 DB12 RCALL long2fp
0206 933A ST R19,-Y
0207 932A ST R18,-Y
0208 931A ST R17,-Y
0209 930A ST R16,-Y
020A DC37 RCALL mpy32fs
020B E041 LDI R20,1
020C E050 LDI R21,0
020D E060 LDI R22,0
020E E070 LDI R23,0
020F 2FEC MOV R30,R28
0210 2FFD MOV R31,R29
0211 8426 LDD R2,Z+14
0212 8437 LDD R3,Z+15
0213 8840 LDD R4,Z+16
0214 8851 LDD R5,Z+17
0215 2224 AND R2,R20
0216 2235 AND R3,R21
0217 2246 AND R4,R22
0218 2257 AND R5,R23
0219 2D02 MOV R16,R2
021A 2D13 MOV R17,R3
021B 2D24 MOV R18,R4
021C 2D35 MOV R19,R5
021D DAFA RCALL long2fp
021E 933A ST R19,-Y
021F 932A ST R18,-Y
0220 931A ST R17,-Y
0221 930A ST R16,-Y
0222 DB44 RCALL add32fs
0223 90400085 LDS R4,0x85
0225 90500086 LDS R5,0x86
0227 90200083 LDS R2,0x83
0229 90300084 LDS R3,0x84
022B 925A ST R5,-Y
022C 924A ST R4,-Y
022D 923A ST R3,-Y
022E 922A ST R2,-Y
022F DB8D RCALL div32f
0230 2FEC MOV R30,R28
0231 2FFD MOV R31,R29
0232 8706 STD Z+14,R16
0233 8717 STD Z+15,R17
0234 8B20 STD Z+16,R18
0235 8B31 STD Z+17,R19
0236 2FEC MOV R30,R28
0237 2FFD MOV R31,R29
0238 8426 LDD R2,Z+14
0239 8437 LDD R3,Z+15
023A 8840 LDD R4,Z+16
023B 8851 LDD R5,Z+17
023C 925A ST R5,-Y
023D 924A ST R4,-Y
023E 923A ST R3,-Y
023F 922A ST R2,-Y
0240 E10A LDI R16,0x1A
0241 E010 LDI R17,0
0242 DA19 RCALL lpm32
0243 933A ST R19,-Y
0244 932A ST R18,-Y
0245 931A ST R17,-Y
0246 930A ST R16,-Y
0247 DBCB RCALL cmp32f
0248 F134 BLT 0x026F
0249 2FEC MOV R30,R28
024A 2FFD MOV R31,R29
024B 8426 LDD R2,Z+14
024C 8437 LDD R3,Z+15
024D 8840 LDD R4,Z+16
024E 8851 LDD R5,Z+17
024F 925A ST R5,-Y
0250 924A ST R4,-Y
0251 923A ST R3,-Y
0252 922A ST R2,-Y
0253 E10A LDI R16,0x1A
0254 E010 LDI R17,0
0255 DA06 RCALL lpm32
0256 933A ST R19,-Y
0257 932A ST R18,-Y
0258 931A ST R17,-Y
0259 930A ST R16,-Y
025A DB13 RCALL sub32f
025B DA83 RCALL fp2long
025C 2E20 MOV R2,R16
025D 2E31 MOV R3,R17
025E 2E42 MOV R4,R18
025F 2E53 MOV R5,R19
0260 E040 LDI R20,0
0261 E050 LDI R21,0
0262 E060 LDI R22,0
0263 E870 LDI R23,0x80
0264 0E24 ADD R2,R20
0265 1E35 ADC R3,R21
0266 1E46 ADC R4,R22
0267 1E57 ADC R5,R23
0268 2FEC MOV R30,R28
0269 2FFD MOV R31,R29
026A 8226 STD Z+6,R2
026B 8237 STD Z+7,R3
026C 8640 STD Z+8,R4
026D 8651 STD Z+9,R5
026E C00D RJMP 0x027C
026F 2FEC MOV R30,R28
0270 2FFD MOV R31,R29
0271 8506 LDD R16,Z+14
0272 8517 LDD R17,Z+15
0273 8920 LDD R18,Z+16
0274 8931 LDD R19,Z+17
0275 DA69 RCALL fp2long
0276 2FEC MOV R30,R28
0277 2FFD MOV R31,R29
0278 8306 STD Z+6,R16
0279 8317 STD Z+7,R17
027A 8720 STD Z+8,R18
027B 8731 STD Z+9,R19
027C 2FEC MOV R30,R28
027D 2FFD MOV R31,R29
027E 8026 LDD R2,Z+6
027F 8037 LDD R3,Z+7
0280 8440 LDD R4,Z+8
0281 8451 LDD R5,Z+9
0282 822A STD Y+2,R2
0283 823B STD Y+3,R3
0284 824C STD Y+4,R4
0285 825D STD Y+5,R5
0286 E084 LDI R24,4
0287 8388 STD Y+0,R24
0288 2722 CLR R18
0289 E009 LDI R16,0x9
028A D5A0 RCALL _LCD_display
(0125) arv_ADC=0;
028B E040 LDI R20,0
028C E050 LDI R21,0
028D E060 LDI R22,0
028E E070 LDI R23,0
028F 93500089 STS 0x89,R21
0291 93400088 STS 0x88,R20
0293 9370008B STS 0x8B,R23
0295 9360008A STS 0x8A,R22
(0126) arv_count=0;
0297 E040 LDI R20,0
0298 E050 LDI R21,0
0299 E060 LDI R22,0
029A E070 LDI R23,0
029B 9350008D STS 0x8D,R21
029D 9340008C STS 0x8C,R20
029F 9370008F STS 0x8F,R23
02A1 9360008E STS 0x8E,R22
(0127) }
(0128) }
02A3 9662 ADIW R28,0x12
02A4 D983 RCALL pop_gset2
02A5 D9E1 RCALL pop_lset
02A6 9518 RETI
_timer1_ovf_isr:
jj --> Y+4
ii --> Y+1
iii --> Y+0
02A7 D9C8 RCALL push_lset
02A8 9728 SBIW R28,0x8
(0129) // 0.01s采集并发送控制数值
(0130) #pragma interrupt_handler timer1_ovf_isr:7
(0131) void timer1_ovf_isr(void)
(0132) {
(0133) long iii;
(0134) unsigned int ii;
(0135) float jj;
(0136)
(0137) TCNT1H=Time1>>8;
02A9 902000F7 LDS R2,__idata_end
02AB 903000F8 LDS R3,__idata_end+1
02AD 2C23 MOV R2,R3
02AE 2433 CLR R3
02AF BC2D OUT 0x2D,R2
(0138) TCNT1L=Time1&0xff;
02B0 918000F7 LDS R24,__idata_end
02B2 919000F8 LDS R25,__idata_end+1
02B4 7090 ANDI R25,0
02B5 BD8C OUT 0x2C,R24
(0139) // PID函数
(0140) PID(ADC-ADC_GD);
02B6 90200108 LDS R2,_ADC_GD
02B8 90300109 LDS R3,_ADC_GD+1
02BA 9100010A LDS R16,_ADC
02BC 9110010B LDS R17,_ADC+1
02BE 1902 SUB R16,R2
02BF 0913 SBC R17,R3
02C0 D414 RCALL _PID
(0141) DAC3=DAC>>8; // 写DAC3寄存器
02C1 90200106 LDS R2,_DAC
02C3 90300107 LDS R3,_DAC+1
02C5 2C23 MOV R2,R3
02C6 2433 CLR R3
02C7 92208002 STS 0x8002,R2
(0142) DAC2=DAC&0x0FF; // 写DAC4寄存器
02C9 91800106 LDS R24,_DAC
02CB 91900107 LDS R25,_DAC+1
02CD 7090 ANDI R25,0
02CE 93808001 STS 0x8001,R24
(0143) DACEN=0; // 开始DA转换
02D0 2422 CLR R2
02D1 9220C000 STS 0xC000,R2
(0144)
(0145) ADCCR=0x60; // 启动ADC
02D3 E680 LDI R24,0x60
02D4 93804000 STS 0x4000,R24
(0146) ADCCR=0x40;
02D6 E480 LDI R24,0x40
02D7 93804000 STS 0x4000,R24
(0147) PORTB^=0x01;
02D9 E081 LDI R24,1
02DA B228 IN R2,0x18
02DB 2628 EOR R2,R24
02DC BA28 OUT 0x18,R2
(0148) }
02DD 9628 ADIW R28,0x8
02DE D9A8 RCALL pop_lset
02DF 9518 RETI
_main:
02E0 9724 SBIW R28,4
FILE: D:\hujie\main.c
(0001) #include <eeprom.h>
(0002) #include <io8515v.h>
(0003) #include "init.h"
(0004) #include "key5.h"
(0005) #include "1602LCD.h"
(0006) #define DEFAULT_K1 1.509
(0007) #define DEFAULT_T 100
(0008) #define MIN_T 50
(0009) // globals:
(0010) unsigned int value; // 电流数值
(0011) //unsigned int *p; // 数据指针
(0012) unsigned char DAC4_value=1;
(0013) float K1=DEFAULT_K1;
(0014) unsigned int ADC; // AD转换值
(0015) unsigned int ADC_GD;
(0016) unsigned int DAC; // DA转换值
(0017) unsigned char time_count; // 计数寄存器
(0018) float POUNT;
(0019) unsigned char value_table[5]; // 数据缓冲区
(0020) unsigned char mode=1; // 模式标志
(0021) unsigned int value_temp; // 数据寄存器
(0022) unsigned char j; // 光标位置
(0023) unsigned long arv_ADC=0;
(0024) unsigned long arv_count=0;
(0025) unsigned int Time1;
(0026)
(0027) void main(void)
(0028) {
(0029) mode_choice();
02E1 D0A7 RCALL _mode_choice
(0030) init_devices(); // 硬件初始化
02E2 DDFE RCALL _init_devices
02E3 C009 RJMP 0x02ED
(0031)
(0032) while(1) // 主循环
(0033) {
(0034) key_service(2,0,4,&value ); // 键盘服务
02E4 E08C LDI R24,0xC
02E5 E091 LDI R25,1
02E6 839B STD Y+3,R25
02E7 838A STD Y+2,R24
02E8 E084 LDI R24,4
02E9 8388 STD Y+0,R24
02EA 2722 CLR R18
02EB E002 LDI R16,2
02EC D5FB RCALL _key_service
02ED CFF6 RJMP 0x02E4
(0035) }
(0036) }
02EE 9624 ADIW R28,4
02EF 9508 RET
_SaveToEEPROM:
i --> R20
add --> R22
len --> R10
off --> R12
02F0 D95C RCALL push_gset4
02F1 2EA2 MOV R10,R18
02F2 2EC0 MOV R12,R16
02F3 8568 LDD R22,Y+8
02F4 8579 LDD R23,Y+9
(0037) void SaveToEEPROM(unsigned char off,unsigned char len,unsigned add)
(0038) {
(0039) int i;
(0040) for(i=0;i<len;i++)
02F5 2744 CLR R20
02F6 2755 CLR R21
02F7 C015 RJMP 0x030D
(0041) EEPROMwrite(add++,value_table[off++]);
02F8 2C2C MOV R2,R12
02F9 2433 CLR R3
02FA 2D82 MOV R24,R2
02FB 5F8F SUBI R24,0xFF
02FC 2EC8 MOV R12,R24
02FD EF8C LDI R24,0xFC
02FE E090 LDI R25,0
02FF 2DE2 MOV R30,R2
0300 27FF CLR R31
0301 0FE8 ADD R30,R24
0302 1FF9 ADC R31,R25
0303 8120 LDD R18,Z+0
0304 2E26 MOV R2,R22
0305 2E37 MOV R3,R23
0306 5F6F SUBI R22,0xFF
0307 4F7F SBCI R23,0xFF
0308 2D02 MOV R16,R2
0309 2D13 MOV R17,R3
030A D9BA RCALL _EEPROMwrite
030B 5F4F SUBI R20,0xFF
030C 4F5F SBCI R21,0xFF
030D 2C2A MOV R2,R10
030E 2433 CLR R3
030F 1542 CP R20,R2
0310 0553 CPC R21,R3
0311 F334 BLT 0x02F8
(0042) }
0312 D919 RCALL pop_gset4
0313 9508 RET
_changK1:
0314 D91B RCALL push_gset1
0315 9724 SBIW R28,4
(0043) unsigned int changK1(void)
(0044) {
(0045) if(K1>6.5) K1=6.5;
0316 E40A LDI R16,0x4A
0317 E010 LDI R17,0
0318 D943 RCALL lpm32
0319 933A ST R19,-Y
031A 932A ST R18,-Y
031B 931A ST R17,-Y
031C 930A ST R16,-Y
031D 90400085 LDS R4,0x85
031F 90500086 LDS R5,0x86
0321 90200083 LDS R2,0x83
0323 90300084 LDS R3,0x84
0325 925A ST R5,-Y
0326 924A ST R4,-Y
0327 923A ST R3,-Y
0328 922A ST R2,-Y
0329 DAE9 RCALL cmp32f
032A F45C BGE 0x0336
032B E406 LDI R16,0x46
032C E010 LDI R17,0
032D D92E RCALL lpm32
032E 93100084 STS 0x84,R17
0330 93000083 STS 0x83,R16
0332 93300086 STS 0x86,R19
0334 93200085 STS 0x85,R18
(0046) return K1*10000;
0336 E402 LDI R16,0x42
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -