📄 main.lis
字号:
009E 20920300 sts _wLineVoltSample,R2
00A2 .dbline 67
00A2 ; wLineVoltReal = (INT16S)(((INT32S)(wLineVoltSample - 512) * cLineRatio) >> 10);
00A2 C101 movw R24,R2
00A4 8050 subi R24,0
00A6 9240 sbci R25,2
00A8 1C01 movw R2,R24
00AA 4424 clr R4
00AC 37FC sbrc R3,7
00AE 4094 com R4
00B0 5524 clr R5
00B2 47FC sbrc R4,7
00B4 5094 com R5
00B6 45E7 ldi R20,117
00B8 54E2 ldi R21,36
00BA 60E0 ldi R22,0
00BC 70E0 ldi R23,0
00BE 5A92 st -y,R5
00C0 4A92 st -y,R4
00C2 3A92 st -y,R3
00C4 2A92 st -y,R2
00C6 8A01 movw R16,R20
00C8 9B01 movw R18,R22
00CA 0E940000 xcall empy32s
00CE 8AE0 ldi R24,10
00D0 90E0 ldi R25,0
00D2 8A93 st -y,R24
00D4 0E940000 xcall asr32
00D8 10930600 sts _wLineVoltReal+1,R17
00DC 00930500 sts _wLineVoltReal,R16
00E0 .dbline 68
00E0 ; if(wLineVoltReal < 0)
00E0 C801 movw R24,R16
00E2 0030 cpi R16,0
00E4 E0E0 ldi R30,0
00E6 1E07 cpc R17,R30
00E8 44F4 brge L10
00EA .dbline 69
00EA ; {
00EA .dbline 70
00EA ; wLineVoltReal = -wLineVoltReal;
00EA 8095 com R24
00EC 9095 com R25
00EE 8F5F subi R24,0xFF
00F0 9F4F sbci R25,0xFF
00F2 90930600 sts _wLineVoltReal+1,R25
00F6 80930500 sts _wLineVoltReal,R24
00FA .dbline 71
00FA ; }
00FA L10:
00FA .dbline 72
00FA ; dwLineVoltSumTemp += (INT32S)wLineVoltReal * (INT32S)wLineVoltReal;
00FA 20900500 lds R2,_wLineVoltReal
00FE 30900600 lds R3,_wLineVoltReal+1
0102 4424 clr R4
0104 37FC sbrc R3,7
0106 4094 com R4
0108 5524 clr R5
010A 47FC sbrc R4,7
010C 5094 com R5
010E 60900500 lds R6,_wLineVoltReal
0112 70900600 lds R7,_wLineVoltReal+1
0116 8824 clr R8
0118 77FC sbrc R7,7
011A 8094 com R8
011C 9924 clr R9
011E 87FC sbrc R8,7
0120 9094 com R9
0122 5A92 st -y,R5
0124 4A92 st -y,R4
0126 3A92 st -y,R3
0128 2A92 st -y,R2
012A 8301 movw R16,R6
012C 9401 movw R18,R8
012E 0E940000 xcall empy32s
0132 40901700 lds R4,_dwLineVoltSumTemp+2
0136 50901800 lds R5,_dwLineVoltSumTemp+2+1
013A 20901500 lds R2,_dwLineVoltSumTemp
013E 30901600 lds R3,_dwLineVoltSumTemp+1
0142 200E add R2,R16
0144 311E adc R3,R17
0146 421E adc R4,R18
0148 531E adc R5,R19
014A 30921600 sts _dwLineVoltSumTemp+1,R3
014E 20921500 sts _dwLineVoltSumTemp,R2
0152 50921800 sts _dwLineVoltSumTemp+2+1,R5
0156 40921700 sts _dwLineVoltSumTemp+2,R4
015A .dbline 73
015A ; bLineCntTemp++;
015A 80910200 lds R24,_bLineCntTemp
015E 8F5F subi R24,255 ; addi 1
0160 80930200 sts _bLineCntTemp,R24
0164 .dbline -2
0164 .dbline 84
0164 ; /*
0164 ; if(bLineCntTemp >= 40)
0164 ; {
0164 ; dwLineVoltSum = dwLineVoltSumTemp;
0164 ; dwLineVoltSumTemp = 0;
0164 ; bLineCnt = bLineCntTemp;
0164 ; bLineCntTemp = 0;
0164 ; bLine_Event = 1;
0164 ; }
0164 ; */
0164 ; }
0164 L9:
0164 0E940000 xcall pop_gset4
0168 2990 ld R2,y+
016A 2FBE out 0x3f,R2
016C E991 ld R30,y+
016E B991 ld R27,y+
0170 A991 ld R26,y+
0172 9991 ld R25,y+
0174 8991 ld R24,y+
0176 3991 ld R19,y+
0178 2991 ld R18,y+
017A 1991 ld R17,y+
017C 0991 ld R16,y+
017E 9990 ld R9,y+
0180 8990 ld R8,y+
0182 7990 ld R7,y+
0184 6990 ld R6,y+
0186 5990 ld R5,y+
0188 4990 ld R4,y+
018A 3990 ld R3,y+
018C 2990 ld R2,y+
018E .dbline 0 ; func end
018E 1895 reti
0190 .dbsym r temp2 12 i
0190 .dbsym r temp1 10 i
0190 .dbend
.area vector(rom, abs)
.org 20
0014 0C94C800 jmp _Timer1Capture_Interrupt
.area text(rom, con, rel)
0190 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
0190 .dbfunc e Timer1Capture_Interrupt _Timer1Capture_Interrupt fV
0190 ; temp2 -> <dead>
0190 ; temp1 -> <dead>
.even
0190 _Timer1Capture_Interrupt::
0190 0A92 st -y,R0
0192 1A92 st -y,R1
0194 2A92 st -y,R2
0196 3A92 st -y,R3
0198 4A92 st -y,R4
019A 5A92 st -y,R5
019C 8A93 st -y,R24
019E 9A93 st -y,R25
01A0 EA93 st -y,R30
01A2 0FB6 in R0,0x3f
01A4 0A92 st -y,R0
01A6 0E940000 xcall push_gset2
01AA .dbline -1
01AA .dbline 94
01AA ;
01AA ; //***************************************************************
01AA ; // Function : Timer1Capture_Interrupt
01AA ; // Input : none
01AA ; // Output : none
01AA ; // Description : ATmega16 T/C1-Capature ISR
01AA ; //***************************************************************
01AA ; #pragma interrupt_handler Timer1Capture_Interrupt:6
01AA ; void Timer1Capture_Interrupt(void)
01AA ; {
01AA .dbline 98
01AA ; INT16U temp1,temp2;
01AA ;
01AA ; //Clear Interrupt Flag
01AA ; TIFR |= 0x20;
01AA 88B7 in R24,0x38
01AC 8062 ori R24,32
01AE 88BF out 0x38,R24
01B0 .dbline 100
01B0 ; //Calculate Line Period
01B0 ; wLineCaptureTimeLast = wLineCaptureTime;
01B0 20900D00 lds R2,_wLineCaptureTime
01B4 30900E00 lds R3,_wLineCaptureTime+1
01B8 30921000 sts _wLineCaptureTimeLast+1,R3
01BC 20920F00 sts _wLineCaptureTimeLast,R2
01C0 .dbline 101
01C0 ; wLineCaptureTime = ICR1;
01C0 26B4 in R2,0x26
01C2 37B4 in R3,0x27
01C4 30920E00 sts _wLineCaptureTime+1,R3
01C8 20920D00 sts _wLineCaptureTime,R2
01CC .dbline 102
01CC ; wLinePeriodTemp = wLineCaptureTime - wLineCaptureTimeLast;
01CC 20900F00 lds R2,_wLineCaptureTimeLast
01D0 30901000 lds R3,_wLineCaptureTimeLast+1
01D4 40900D00 lds R4,_wLineCaptureTime
01D8 50900E00 lds R5,_wLineCaptureTime+1
01DC 4218 sub R4,R2
01DE 5308 sbc R5,R3
01E0 50920C00 sts _wLinePeriodTemp+1,R5
01E4 40920B00 sts _wLinePeriodTemp,R4
01E8 .dbline 103
01E8 ; if((wLinePeriodTemp >= 14285) && (wLinePeriodTemp <= 25000))
01E8 C201 movw R24,R4
01EA 8D3C cpi R24,205
01EC E7E3 ldi R30,55
01EE 9E07 cpc R25,R30
01F0 50F0 brlo L13
01F2 88EA ldi R24,25000
01F4 91E6 ldi R25,97
01F6 1201 movw R2,R4
01F8 8415 cp R24,R4
01FA 9505 cpc R25,R5
01FC 20F0 brlo L13
01FE .dbline 104
01FE ; {
01FE .dbline 105
01FE ; wLinePeriod = wLinePeriodTemp;
01FE 30920A00 sts _wLinePeriod+1,R3
0202 20920900 sts _wLinePeriod,R2
0206 .dbline 106
0206 ; }
0206 L13:
0206 .dbline 108
0206 ; //Acquire Line Volt Accumulation
0206 ; dwLineVoltSum = dwLineVoltSumTemp;
0206 40901700 lds R4,_dwLineVoltSumTemp+2
020A 50901800 lds R5,_dwLineVoltSumTemp+2+1
020E 20901500 lds R2,_dwLineVoltSumTemp
0212 30901600 lds R3,_dwLineVoltSumTemp+1
0216 30921200 sts _dwLineVoltSum+1,R3
021A 20921100 sts _dwLineVoltSum,R2
021E 50921400 sts _dwLineVoltSum+2+1,R5
0222 40921300 sts _dwLineVoltSum+2,R4
0226 .dbline 109
0226 ; dwLineVoltSumTemp = 0;
0226 40E0 ldi R20,0
0228 50E0 ldi R21,0
022A 60E0 ldi R22,0
022C 70E0 ldi R23,0
022E 50931600 sts _dwLineVoltSumTemp+1,R21
0232 40931500 sts _dwLineVoltSumTemp,R20
0236 70931800 sts _dwLineVoltSumTemp+2+1,R23
023A 60931700 sts _dwLineVoltSumTemp+2,R22
023E .dbline 110
023E ; bLineCnt = bLineCntTemp;
023E 20900200 lds R2,_bLineCntTemp
0242 20920100 sts _bLineCnt,R2
0246 .dbline 111
0246 ; bLineCntTemp = 0;
0246 2224 clr R2
0248 20920200 sts _bLineCntTemp,R2
024C .dbline 112
024C ; bLine_Event = 1;
024C 81E0 ldi R24,1
024E 80930000 sts _bLine_Event,R24
0252 .dbline -2
0252 .dbline 113
0252 ; }
0252 L12:
0252 0E940000 xcall pop_gset2
0256 0990 ld R0,y+
0258 0FBE out 0x3f,R0
025A E991 ld R30,y+
025C 9991 ld R25,y+
025E 8991 ld R24,y+
0260 5990 ld R5,y+
0262 4990 ld R4,y+
0264 3990 ld R3,y+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -