⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 AVR单片机RS232通信接口应用设计
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area data(ram, con, rel)
_bLine_Event::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e bLine_Event _bLine_Event c
_bLineCnt::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e bLineCnt _bLineCnt c
_bLineCntTemp::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e bLineCntTemp _bLineCntTemp c
_wLineVoltSample::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLineVoltSample _wLineVoltSample I
_wLineVoltReal::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLineVoltReal _wLineVoltReal I
_wLineVoltRMS::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLineVoltRMS _wLineVoltRMS I
_wLinePeriod::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLinePeriod _wLinePeriod i
_wLinePeriodTemp::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLinePeriodTemp _wLinePeriodTemp i
_wLineCaptureTime::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLineCaptureTime _wLineCaptureTime i
_wLineCaptureTimeLast::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e wLineCaptureTimeLast _wLineCaptureTimeLast i
_dwLineVoltSum::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e dwLineVoltSum _dwLineVoltSum l
_dwLineVoltSumTemp::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbsym e dwLineVoltSumTemp _dwLineVoltSumTemp l
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 32
; //***************************************************************
; // File Name : main.c
; // Author    : Steaven
; // Created   : 2008-07-26
; // Modified  : 
; // Revision  : V0.0
; //***************************************************************
; 
; #include "includes.h"
; 
; //constant definition
; #define cLineRatio 9333
; 
; //global variables definition
; INT8U  bLine_Event       	= 0; //Line Calculation Event
; INT8U  bLineCnt          	= 0; //Line Sampling Count
; INT8U  bLineCntTemp      	= 0; //Line Sampling Count(temporary)
; INT16S wLineVoltSample   	= 0; //Line Sampling Value
; INT16S wLineVoltReal        = 0; //Line Instant Value
; INT16S wLineVoltRMS         = 0; //Line RMS Value
; INT16U wLinePeriod          = 0; //Line Period
; INT16U wLinePeriodTemp      = 0; //Line Period(temporary)
; INT16U wLineCaptureTime     = 0; //Line Capature Time
; INT16U wLineCaptureTimeLast = 0; //Line Last Capature Time
; INT32U dwLineVoltSum        = 0; //Line S-I Accumulation
; INT32U dwLineVoltSumTemp    = 0; //Line S-I Accumulation(temporary)
; 
; //local function declaration
; INT16U swRoot(INT32U dwNumber);
; 
; void main(void) 
; { 
	.dbline 33
; 	Hardware_Init();
	xcall _Hardware_Init
	.dbline 34
; 	Init_UART();
	xcall _Init_UART
	xjmp L3
L2:
	.dbline 36
; 	while(1)
; 	{
	.dbline 37
; 		if(bLine_Event == 1)
	lds R24,_bLine_Event
	cpi R24,1
	brne L5
	.dbline 38
; 		{
	.dbline 39
; 			bLine_Event = 0;
	clr R2
	sts _bLine_Event,R2
	.dbline 40
; 			if(bLineCnt != 0)
	lds R2,_bLineCnt
	tst R2
	breq L7
	.dbline 41
; 			{
	.dbline 42
; 				wLineVoltRMS = swRoot(dwLineVoltSum/bLineCnt);
	clr R3
	clr R4
	clr R5
	lds R8,_dwLineVoltSum+2
	lds R9,_dwLineVoltSum+2+1
	lds R6,_dwLineVoltSum
	lds R7,_dwLineVoltSum+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall div32u
	xcall _swRoot
	sts _wLineVoltRMS+1,R17
	sts _wLineVoltRMS,R16
	.dbline 43
; 			}
L7:
	.dbline 44
; 		}
L5:
	.dbline 45
L3:
	.dbline 35
	xjmp L2
X0:
	.dbline -2
	.dbline 46
; 	}
; } 
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 76
	jmp _TimeCountr0_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\main.c
	.dbfunc e TimeCountr0_Interrupt _TimeCountr0_Interrupt fV
;          temp2 -> R12,R13
;          temp1 -> R10,R11
	.even
_TimeCountr0_Interrupt::
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R6
	st -y,R7
	st -y,R8
	st -y,R9
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R27
	st -y,R30
	in R2,0x3f
	st -y,R2
	xcall push_gset4
	.dbline -1
	.dbline 56
; 
; //***************************************************************
; // Function    : wTimeCountr0_Interrupt                                
; // Input       : none                                            
; // Output      : none                                            
; // Description : ATmega16 T/C0 ISR                               
; //***************************************************************
; #pragma interrupt_handler TimeCountr0_Interrupt:20                    
; void TimeCountr0_Interrupt(void)                                      
; {                                                                                                 
	.dbline 60
; 	INT16U temp1,temp2;
; 	
; 	//Clear wTimeCountr0 OCIF Flag                                     
; 	TIFR  |= 0x02;                                               
	in R24,0x38
	ori R24,2
	out 0x38,R24
	.dbline 61
; 	TCNT0  = 0x00; 
	clr R2
	out 0x32,R2
	.dbline 64
; 	                                             
; 	//Read ADC Conversion
; 	temp1 = (INT16U)ADCL;
	in R10,0x4
	clr R11
	.dbline 65
; 	temp2 = (INT16U)ADCH;
	in R12,0x5
	clr R13
	.dbline 66
; 	wLineVoltSample = (temp2 << 8) | temp1;
	movw R2,R12
	mov R3,R2
	clr R2
	or R2,R10
	or R3,R11
	sts _wLineVoltSample+1,R3
	sts _wLineVoltSample,R2
	.dbline 67
; 	wLineVoltReal = (INT16S)(((INT32S)(wLineVoltSample - 512) * cLineRatio) >> 10); 
	movw R24,R2
	subi R24,0
	sbci R25,2
	movw R2,R24
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	ldi R20,117
	ldi R21,36
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	ldi R24,10
	ldi R25,0
	st -y,R24
	xcall asr32
	sts _wLineVoltReal+1,R17
	sts _wLineVoltReal,R16
	.dbline 68
; 	if(wLineVoltReal < 0)
	movw R24,R16
	cpi R16,0
	ldi R30,0
	cpc R17,R30
	brge L10
	.dbline 69
; 	{
	.dbline 70
; 		wLineVoltReal = -wLineVoltReal;
	com R24
	com R25
	subi R24,0xFF
	sbci R25,0xFF
	sts _wLineVoltReal+1,R25
	sts _wLineVoltReal,R24
	.dbline 71
; 	}
L10:
	.dbline 72
; 	dwLineVoltSumTemp += (INT32S)wLineVoltReal * (INT32S)wLineVoltReal;
	lds R2,_wLineVoltReal
	lds R3,_wLineVoltReal+1
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	lds R6,_wLineVoltReal
	lds R7,_wLineVoltReal+1
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall empy32s
	lds R4,_dwLineVoltSumTemp+2
	lds R5,_dwLineVoltSumTemp+2+1
	lds R2,_dwLineVoltSumTemp
	lds R3,_dwLineVoltSumTemp+1
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	sts _dwLineVoltSumTemp+1,R3
	sts _dwLineVoltSumTemp,R2
	sts _dwLineVoltSumTemp+2+1,R5
	sts _dwLineVoltSumTemp+2,R4
	.dbline 73
; 	bLineCntTemp++;
	lds R24,_bLineCntTemp
	subi R24,255    ; addi 1
	sts _bLineCntTemp,R24
	.dbline -2
	.dbline 84
; 	/*
; 	if(bLineCntTemp >= 40)
; 	{
; 		dwLineVoltSum = dwLineVoltSumTemp;
; 		dwLineVoltSumTemp = 0;
; 		bLineCnt = bLineCntTemp;
; 		bLineCntTemp = 0;
; 		bLine_Event = 1;
; 	}
; 	*/
; } 
L9:
	xcall pop_gset4
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R9,y+
	ld R8,y+
	ld R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r temp2 12 i
	.dbsym r temp1 10 i
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -