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

📄 main.s

📁 AVR单片机C语言程序设计实例精粹
💻 S
字号:
	.module main.c
	.area data(ram, con, rel)
_bI2C_Event::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\main.c
	.dbsym e bI2C_Event _bI2C_Event c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\main.c
	.dbfunc e sSet_I2C_Event _sSet_I2C_Event fV
;          event -> R16
	.even
_sSet_I2C_Event::
	.dbline -1
	.dbline 21
; //***************************************************************
; // File Name : LED.c
; // Author    : Steaven
; // Created   : 2008-07-26
; // Modified  : 
; // Revision  : V0.0
; //***************************************************************
; 
; #include "includes.h"
; 
; //global variables definition
; INT8U bI2C_Event = 0;
; 
; //***************************************************************
; // Function    : sSet_I2C_Event
; // Input       : event - i2c operation event 
; // Output      : none
; // Description : I2C Event Interface Function
; //***************************************************************
; void sSet_I2C_Event(INT8U event)
; {
	.dbline 22
; 	bI2C_Event = event;
	sts _bI2C_Event,R16
	.dbline -2
	.dbline 23
; }
L1:
	.dbline 0 ; func end
	ret
	.dbsym r event 16 c
	.dbend
	.dbfunc e sbGet_I2C_Event _sbGet_I2C_Event fc
;          event -> R16
	.even
_sbGet_I2C_Event::
	.dbline -1
	.dbline 32
; 
; //***************************************************************
; // Function    : sbGet_I2C_Event
; // Input       :  none  
; // Output      : i2c operation event
; // Description : I2C Event Interface Function
; //***************************************************************
; INT8U sbGet_I2C_Event(void)
; {
	.dbline 34
; 	INT8U event;
; 	event = bI2C_Event;
	lds R16,_bI2C_Event
	.dbline 35
; 	bI2C_Event = 0;
	clr R2
	sts _bI2C_Event,R2
	.dbline 36
; 	return(event);
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r event 16 c
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 40
; }
; 
; void main(void) 
; { 
	.dbline 41
; 	Hardware_Init();
	xcall _Hardware_Init
	.dbline 42
; 	Init_DS1337();
	xcall _Init_DS1337
	xjmp L5
L4:
	.dbline 45
; 	
; 	while(1)
; 	{
	.dbline 46
; 		if(sbGet_I2C_Event() != 0)
	xcall _sbGet_I2C_Event
	tst R16
	breq L7
	.dbline 47
; 		{
	.dbline 48
; 			Read_DS1337_Calendar();
	xcall _Read_DS1337_Calendar
	.dbline 49
; 		}
L7:
	.dbline 50
L5:
	.dbline 44
	xjmp L4
X0:
	.dbline -2
	.dbline 51
; 	}
; } 
L3:
	.dbline 0 ; func end
	ret
	.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\I2C总线应用设计\main.c
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\main.c
L10:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\main.c
	.dbfunc e wTimeCountr0_Interrupt _wTimeCountr0_Interrupt fV
	.dbsym s int_count L10 c
	.even
_wTimeCountr0_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 61
	.dbline 65
	in R24,0x38
	ori R24,2
	out 0x38,R24
	.dbline 66
	clr R2
	out 0x32,R2
	.dbline 69
	lds R2,L10
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts L10,R24
	mov R24,R2
	cpi R24,100
	brne L11
	.dbline 70
	.dbline 71
	clr R2
	sts L10,R2
	.dbline 72
	ldi R16,1
	xcall _sSet_I2C_Event
	.dbline 73
L11:
	.dbline -2
	.dbline 74
; 
; //***************************************************************
; // Function    : wTimeCountr0_Interrupt                                
; // Input       : none                                            
; // Output      : none                                            
; // Description : ATmega16 T/C0 ISR                               
; //***************************************************************
; #pragma interrupt_handler wTimeCountr0_Interrupt:20                    
; void wTimeCountr0_Interrupt(void)                                      
; {                                                                
; 	static INT8U int_count = 0;
; 	                                      
; 	//Clear wTimeCountr0 OCIF Flag                                     
; 	TIFR  |= 0x02;                                               
; 	TCNT0  = 0x00; 
; 	                                             
; 	//Interrupt count,send I2C event every second 
; 	if(int_count++ == 100)
; 	{
; 		int_count = 0;
; 		sSet_I2C_Event(1);
; 	}                                                
; } 
L9:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend

⌨️ 快捷键说明

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