📄 m128_alky_touch_con1.lst
字号:
6385 9009 LD R0,Y+
6386 9518 RETI
(0669) }
(0670)
(0671) //******************************************
(0672) //******************************************
(0673) //TIMER3 initialize - prescale:1024
(0674) // WGM: 14) PWM fast, TOP=ICRn
(0675) // desired value: 10Sec
(0676) // actual value: 10.000Sec (0.0%)
(0677) void timer3_init(void)
(0678) {
(0679) TCCR3B = 0x00; //stop
_timer3_init:
6387 2422 CLR R2
6388 9220 008A STS 0x008A,R2
(0680) TCNT3H = 0x67; //setup
638A E687 LDI R24,0x67
638B 9380 0089 STS 0x0089,R24
(0681) TCNT3L = 0x6B;
638D E68B LDI R24,0x6B
638E 9380 0088 STS 0x0088,R24
(0682) OCR3AH = 0x98;
6390 E988 LDI R24,0x98
6391 9380 0087 STS 0x0087,R24
(0683) OCR3AL = 0x95;
6393 E985 LDI R24,0x95
6394 9380 0086 STS 0x0086,R24
(0684) OCR3BH = 0x98;
6396 E988 LDI R24,0x98
6397 9380 0085 STS 0x0085,R24
(0685) OCR3BL = 0x95;
6399 E985 LDI R24,0x95
639A 9380 0084 STS 0x0084,R24
(0686) OCR3CH = 0x98;
639C E988 LDI R24,0x98
639D 9380 0083 STS 0x0083,R24
(0687) OCR3CL = 0x95;
639F E985 LDI R24,0x95
63A0 9380 0082 STS 0x0082,R24
(0688) ICR3H = 0x98;
63A2 E988 LDI R24,0x98
63A3 9380 0081 STS 0x0081,R24
(0689) ICR3L = 0x95;
63A5 E985 LDI R24,0x95
63A6 9380 0080 STS 0x0080,R24
63A8 9508 RET
_timer3_ovf_isr:
TEMP --> R10
rOut --> R20
63A9 920A ST R0,-Y
63AA 921A ST R1,-Y
63AB 922A ST R2,-Y
63AC 923A ST R3,-Y
63AD 924A ST R4,-Y
63AE 925A ST R5,-Y
63AF 926A ST R6,-Y
63B0 927A ST R7,-Y
63B1 928A ST R8,-Y
63B2 929A ST R9,-Y
63B3 92AA ST R10,-Y
63B4 92BA ST R11,-Y
63B5 930A ST R16,-Y
63B6 931A ST R17,-Y
63B7 932A ST R18,-Y
63B8 933A ST R19,-Y
63B9 934A ST R20,-Y
63BA 935A ST R21,-Y
63BB 938A ST R24,-Y
63BC 939A ST R25,-Y
63BD 93AA ST R26,-Y
63BE 93BA ST R27,-Y
63BF 93EA ST R30,-Y
63C0 93FA ST R31,-Y
63C1 B60F IN R0,0x3F
63C2 920A ST R0,-Y
63C3 940E 9C05 CALL push_xgset300C
(0690) //TCCR3A = 0x32;
(0691) //TCCR3A = 0x02;
(0692) //TCCR3B = 0x1D; //start Timer
(0693) }
(0694)
(0695) //******************************************
(0696) //#pragma interrupt_handler timer3_ovf_isr:iv_TIM3_OVF
(0697) //void timer3_ovf_isr(void)
(0698) //{
(0699) //}
(0700) //******************************************
(0701) #pragma interrupt_handler timer3_ovf_isr:iv_TIM3_OVF
(0702) void timer3_ovf_isr(void)
(0703) {
(0704) //TIMER3 has overflowed
(0705) //TCNT3H = 0x67; //reload counter high value
(0706) //TCNT3L = 0x6B; //reload counter low value
(0707)
(0708) int rOut;
(0709) uint TEMP;
(0710)
(0711) TEMP=(unsigned int)ZhuQi_WenDu_Value;
63C5 9120 0133 LDS R18,ZhuQi_WenDu_Value+2
63C7 9130 0134 LDS R19,ZhuQi_WenDu_Value+3
63C9 9100 0131 LDS R16,ZhuQi_WenDu_Value
63CB 9110 0132 LDS R17,ZhuQi_WenDu_Value+1
63CD 940E 9D02 CALL fpint
63CF 0158 MOVW R10,R16
(0712) rOut=PIDCalc_WD(&WD_PID,TEMP);
63D0 0195 MOVW R18,R10
63D1 E801 LDI R16,0x81
63D2 E011 LDI R17,1
63D3 DEAA RCALL _PIDCalc_WD
63D4 01A8 MOVW R20,R16
(0713) if(rOut<0) rOut=0;
63D5 3000 CPI R16,0
63D6 E0E0 LDI R30,0
63D7 071E CPC R17,R30
63D8 F414 BGE 0x63DB
63D9 2744 CLR R20
63DA 2755 CLR R21
(0714) if(rOut>ICR3_TEMP) rOut=ICR3_TEMP;
63DB 9020 010B LDS R2,ICR3_TEMP
63DD 9030 010C LDS R3,ICR3_TEMP+1
63DF 1624 CP R2,R20
63E0 0635 CPC R3,R21
63E1 F408 BCC 0x63E3
63E2 01A1 MOVW R20,R2
(0715) TEMP=ICR3_TEMP-rOut;
63E3 90A0 010B LDS R10,ICR3_TEMP
63E5 90B0 010C LDS R11,ICR3_TEMP+1
63E7 1AA4 SUB R10,R20
63E8 0AB5 SBC R11,R21
(0716) CLI();
63E9 94F8 BCLR 7
(0717) OCR3B = TEMP;
63EA 92B0 0085 STS 0x0085,R11
63EC 92A0 0084 STS 0x0084,R10
(0718) ICR3 = ICR3_TEMP;
63EE 9020 010B LDS R2,ICR3_TEMP
63F0 9030 010C LDS R3,ICR3_TEMP+1
63F2 9230 0081 STS 0x0081,R3
63F4 9220 0080 STS 0x0080,R2
(0719) // OCR3BH = TEMP/256;
(0720) // OCR3BL = TEMP%256;
(0721) SEI();
63F6 9478 BSET 7
63F7 940E 9C0A CALL pop_xgset300C
63F9 9009 LD R0,Y+
63FA BE0F OUT 0x3F,R0
63FB 91F9 LD R31,Y+
63FC 91E9 LD R30,Y+
63FD 91B9 LD R27,Y+
63FE 91A9 LD R26,Y+
63FF 9199 LD R25,Y+
6400 9189 LD R24,Y+
6401 9159 LD R21,Y+
6402 9149 LD R20,Y+
6403 9139 LD R19,Y+
6404 9129 LD R18,Y+
6405 9119 LD R17,Y+
6406 9109 LD R16,Y+
6407 90B9 LD R11,Y+
6408 90A9 LD R10,Y+
6409 9099 LD R9,Y+
640A 9089 LD R8,Y+
640B 9079 LD R7,Y+
640C 9069 LD R6,Y+
640D 9059 LD R5,Y+
640E 9049 LD R4,Y+
640F 9039 LD R3,Y+
6410 9029 LD R2,Y+
6411 9019 LD R1,Y+
6412 9009 LD R0,Y+
6413 9518 RETI
(0722) }
(0723)
(0724) //******************************************
(0725) //TIMER2 initialize - prescale:1024
(0726) // WGM: Normal
(0727) // desired value: 50mSec
(0728) // actual value: 49.920mSec (0.2%)
(0729) void timer2_init(void)
(0730) {
(0731) TCCR2 = 0x00; //stop
_timer2_init:
6414 2422 CLR R2
6415 BC25 OUT 0x25,R2
(0732) TCNT2 = 0x3D; //setup
6416 E38D LDI R24,0x3D
6417 BD84 OUT 0x24,R24
(0733) OCR2 = 0xC3;
6418 EC83 LDI R24,0xC3
6419 BD83 OUT 0x23,R24
641A 9508 RET
_timer2_ovf_isr:
TEMP_CH --> Y,+1
addr_t --> Y,+1
addr --> Y,+1
Temp1 --> Y,+1
Temp --> Y,+1
j --> Y,+1
i --> Y,+1
k --> R20
641B 920A ST R0,-Y
641C 921A ST R1,-Y
641D 922A ST R2,-Y
641E 923A ST R3,-Y
641F 924A ST R4,-Y
6420 925A ST R5,-Y
6421 926A ST R6,-Y
6422 927A ST R7,-Y
6423 928A ST R8,-Y
6424 929A ST R9,-Y
6425 92AA ST R10,-Y
6426 92BA ST R11,-Y
6427 930A ST R16,-Y
6428 931A ST R17,-Y
6429 932A ST R18,-Y
642A 933A ST R19,-Y
642B 934A ST R20,-Y
642C 936A ST R22,-Y
642D 937A ST R23,-Y
642E 938A ST R24,-Y
642F 939A ST R25,-Y
6430 93AA ST R26,-Y
6431 93BA ST R27,-Y
6432 93EA ST R30,-Y
6433 93FA ST R31,-Y
6434 B60F IN R0,0x3F
6435 920A ST R0,-Y
6436 940E 9C19 CALL push_xgsetF00C
(0734) //TCCR2 = 0x05; //start
(0735) }
(0736)
(0737) //******************************************
(0738) #pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
(0739) void timer2_ovf_isr(void)
(0740) {
(0741) unsigned char i;
(0742) unsigned char j,k,Temp,Temp1;
(0743) unsigned int addr;
(0744) unsigned char addr_t;
(0745) unsigned char TEMP_CH;
(0746)
(0747) TCNT2 = 0x3D; //reload counter value
6438 E38D LDI R24,0x3D
6439 BD84 OUT 0x24,R24
(0748) TIMSK = 0x05;
643A E085 LDI R24,5
643B BF87 OUT 0x37,R24
(0749) SEI();
643C 9478 BSET 7
(0750) /*
(0751) ReadTime();
(0752) if(!(Last_Second==Second))
(0753) {
(0754) Display_Time(0);
(0755) Last_Second=Second;
(0756) }
(0757) */
(0758) if(ZhuQi_WenDu_Value>50)
643D E381 LDI R24,0x31
643E E091 LDI R25,1
643F EB0E LDI R16,0xBE
6440 EC13 LDI R17,0xC3
6441 940E 9C75 CALL lpm32
6443 939A ST R25,-Y
6444 938A ST R24,-Y
6445 940E 9E48 CALL fpcmp1
6447 F43C BGE 0x644F
(0759) {
(0760) TCCR3A = 0x02;
6448 E082 LDI R24,2
6449 9380 008B STS 0x008B,R24
(0761) TCCR3B = 0x1D; //start Timer3
644B E18D LDI R24,0x1D
644C 9380 008A STS 0x008A,R24
(0762) PORTE&=~(1<<4);
644E 981C CBI 0x03,4
(0763) }
(0764)
(0765) if((Set_WenDu_Value+1) < ((unsigned char)ZhuQi_WenDu_Value));
644F 9120 0133 LDS R18,ZhuQi_WenDu_Value+2
6451 9130 0134 LDS R19,ZhuQi_WenDu_Value+3
6453 9100 0131 LDS R16,ZhuQi_WenDu_Value
6455 9110 0132 LDS R17,ZhuQi_WenDu_Value+1
6457 940E 9D02 CALL fpint
6459 9180 013C LDS R24,Set_WenDu_Value
645B 5F8F SUBI R24,0xFF
645C 1780 CP R24,R16
645D F400 BCC 0x645E
(0766) WD_PID.SumError =0;
645E 2422 CLR R2
645F 2433 CLR R3
6460 9230 018B STS 0x018B,R3
6462 9220 018A STS 0x018A,R2
(0767)
(0768) //ADC_data_T=ADC_data_T+ads1100_read(ads1100_readaddr);
(0769) ADC_data_T=ADC_data_T + SYS_ADC(DQ_LD_ADC);
6464 E006 LDI R16,6
6465 940E 7066 CALL _SYS_ADC
6467 0118 MOVW R2,R16
6468 2444 CLR R4
6469 2455 CLR R5
646A 9080 0113 LDS R8,ADC_data_T+2
646C 9090 0114 LDS R9,ADC_data_T+3
646E 9060 0111 LDS R6,ADC_data_T
6470 9070 0112 LDS R7,ADC_data_T+1
6472 0C62 ADD R6,R2
6473 1C73 ADC R7,R3
6474 1C84 ADC R8,R4
6475 1C95 ADC R9,R5
6476 9270 0112 STS ADC_data_T+1,R7
6478 9260 0111 STS ADC_data_T,R6
647A 9290 0114 STS ADC_data_T+3,R9
647C 9280 0113 STS ADC_data_T+2,R8
(0770)
(0771) DQ_WenDu_TOT = DQ_WenDu_TOT + SYS_ADC(DQ_WenDu_ADC);
647E 2700 CLR R16
647F 940E 7066 CALL _SYS_ADC
6481 9020 0119 LDS R2,DQ_WenDu_TOT
6483 9030 011A LDS R3,DQ_WenDu_TOT+1
6485 0E20 ADD R2,R16
6486 1E31 ADC R3,R17
6487 9230 011A STS DQ_WenDu_TOT+1,R3
6489 9220 0119 STS DQ_WenDu_TOT,R2
(0772) ZhuQi_WenDu_TOT = ZhuQi_WenDu_TOT + SYS_ADC(ZhuQi_WenDu_ADC);
648B E004 LDI R16,4
648C 940E 7066 CALL _SYS_ADC
648E 9020 0117 LDS R2,ZhuQi_WenDu_TOT
6490 9030 0118 LDS R3,ZhuQi_WenDu_TOT+1
6492 0E20 ADD R2,R16
6493 1E31 ADC R3,R17
6494 9230 0118 STS ZhuQi_WenDu_TOT+1,R3
6496 9220 0117 STS ZhuQi_WenDu_TOT,R2
(0773) DQ_ShiDu_TOT = DQ_ShiDu_TOT + SYS_ADC(DQ_ShiDu_ADC);
6498 E001 LDI R16,1
6499 940E 7066 CALL _SYS_ADC
649B 9020 0115 LDS R2,DQ_ShiDu_TOT
649D 9030 0116 LDS R3,DQ_ShiDu_TOT+1
649F 0E20 ADD R2,R16
64A0 1E31 ADC R3,R17
64A1 9230 0116 STS DQ_ShiDu_TOT+1,R3
64A3 9220 0115 STS DQ_ShiDu_TOT,R2
(0774)
(0775) // k=keboard();
(0776) k=keyboard();
64A5 940E 8FE4 CALL _keyboard
64A7 2EA0 MOV R10,R16
64A8 2D4A MOV R20,R10
(0777) if(!(Last_Key==k))
64A9 9020 0169 LDS R2,Last_Key
64AB 1620 CP R2,R16
64AC F411 BNE 0x64AF
64AD 940C 7026 JMP 0x7026
(0778) {
(0779) Last_Key=k;
64AF 9340 0169 STS Last_Key,R20
(0780)
(0781)
(0782) if(YN_TOUCH_KEY_DISP_F)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -