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

📄 main.s

📁 AVR单片机C语言程序设计实例精粹
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\市电电压频率测量系统\main.c
	.dbfunc e main _main fV
;          count -> R20
	.even
_main::
	.dbline -1
	.dbline 12
; //********************************************************************
; // File Name : main.c
; // Author    : Steaven
; // Created   : 2008-07-26
; // Modified  : 
; // Revision  : V0.0
; //********************************************************************
; 
; #include "includes.h"
; 
; void main(void) 
; { 
	.dbline 13
; 	INT8U count = 0;
	clr R20
	.dbline 14
; 	Hardware_Init();
	xcall _Hardware_Init
	.dbline 15
; 	Init_UART();
	xcall _Init_UART
	xjmp L3
L2:
	.dbline 18
; 	
; 	while(1)
; 	{
	.dbline 19
; 		if(sbGet_SCI_Event() != 0)
	xcall _sbGet_SCI_Event
	tst R16
	breq L5
	.dbline 20
; 		{
	.dbline 21
; 			SCI_Parsing(&stSciBuffer);
	ldi R16,<_stSciBuffer
	ldi R17,>_stSciBuffer
	xcall _SCI_Parsing
	.dbline 22
; 		}
L5:
	.dbline 23
L3:
	.dbline 17
	xjmp L2
X0:
	.dbline -2
	.dbline 24
; 	}
; } 
L1:
	.dbline 0 ; func end
	ret
	.dbsym r count 20 c
	.dbend
	.area vector(rom, abs)
	.org 76
	jmp _wTimeCountr0_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\市电电压频率测量系统\main.c
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\市电电压频率测量系统\main.c
L8:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\市电电压频率测量系统\main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\市电电压频率测量系统\main.c
	.dbfunc e wTimeCountr0_Interrupt _wTimeCountr0_Interrupt fV
	.dbsym s int_count L8 c
	.even
_wTimeCountr0_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 34
; 
; //********************************************************************
; // Function    : wTimeCountr0_Interrupt                                
; // Input       : none                                            
; // Output      : none                                            
; // Description : ATmega16 T/C0 ISR                               
; //********************************************************************
; #pragma interrupt_handler wTimeCountr0_Interrupt:20                    
; void wTimeCountr0_Interrupt(void)                                      
; {                                                                
	.dbline 38
; 	static INT8U int_count = 0;
; 	                                      
; 	//Clear wTimeCountr0 OCIF Flag                                     
; 	TIFR  |= 0x02;                                               
	in R24,0x38
	ori R24,2
	out 0x38,R24
	.dbline 39
; 	TCNT0  = 0x00;                                              
	clr R2
	out 0x32,R2
	.dbline 41
; 	//Interrupt Count
; 	if(sbGet_Buzzer_Count() != 0)
	xcall _sbGet_Buzzer_Count
	tst R16
	breq L9
	.dbline 42
; 	{
	.dbline 43
; 		int_count++;
	lds R24,L8
	subi R24,255    ; addi 1
	sts L8,R24
	.dbline 44
; 		if(int_count == 1)
	cpi R24,1
	brne L11
	.dbline 45
; 		{
	.dbline 46
; 			Buzzer_ON();
	xcall _Buzzer_ON
	.dbline 47
; 		}
	xjmp L10
L11:
	.dbline 48
; 		else if(int_count == 5)
	lds R24,L8
	cpi R24,5
	brne L13
	.dbline 49
; 		{
	.dbline 50
; 			Buzzer_OFF();	
	xcall _Buzzer_OFF
	.dbline 51
; 		}
	xjmp L10
L13:
	.dbline 52
; 		else if(int_count == 100)
	lds R24,L8
	cpi R24,100
	brne L10
	.dbline 53
; 		{
	.dbline 54
; 			int_count = 0;
	clr R2
	sts L8,R2
	.dbline 55
; 			sSet_Buzzer_Count(sbGet_Buzzer_Count() - 1);
	xcall _sbGet_Buzzer_Count
	subi R16,1
	xcall _sSet_Buzzer_Count
	.dbline 56
; 		}
	.dbline 57
; 	}
	xjmp L10
L9:
	.dbline 59
	.dbline 60
	clr R2
	sts L8,R2
	.dbline 61
L10:
	.dbline -2
	.dbline 62
; 	else
; 	{
; 		int_count = 0;
; 	}                                                
; } 
L7:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend

⌨️ 快捷键说明

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