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

📄 timer.s

📁 AVR单片机ATMEGA128实习之—定时器中断(附带Proteus仿真例子)
💻 S
字号:
	.module timer.c
	.area vector(rom, abs)
	.org 56
	jmp _Timer_INT
	.area data(ram, con, rel)
_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\定时器中断\timer.c
	.dbsym e flag _flag c
	.area text(rom, con, rel)
	.dbfile G:\猛\avr实践\定时器中断\timer.c
	.dbfunc e main _main fV
;              i -> <dead>
;          achar -> <dead>
	.even
_main::
	.dbline -1
	.dbline 23
; #include <iom128.h>
; #include <macros.h>
; 
; 
; #define	  Red_LED_on		PORTB&~BIT(0)
; #define	  Red_LED_off		PORTB|(1<<0)
; #define	  Green_LED_on		PORTB&(~(1<<1))
; #define	  Green_LED_off		PORTB|(1<<1)
; #define	  Yellow_LED_on		PORTB&(~(1<<2))
; #define	  Yellow_LED_off	PORTB|(1<<2)
; #define	  Flag_H			PORTB|(1<<3)
; #define	  Flag_L			PORTB&~(1<<3)	
; 
; #pragma interrupt_handler Timer_INT:15   //定时器中断
; 
; void Port_initilaze(void);
; void Timer_initilaze(void);
; 
; 
; unsigned char flag = 0;
; 
; void main(void)
; {
	.dbline 27
; 	unsigned char achar;
; 	unsigned char i;
; 
; 	Port_initilaze(); 
	xcall _Port_initilaze
	.dbline 28
; 	Timer_initilaze();
	xcall _Timer_initilaze
	.dbline 32
; 	
; 	
; 	
; 	PORTB = Red_LED_on;
	cbi 0x18,0
	.dbline 33
; 	PORTB = Yellow_LED_on;
	cbi 0x18,2
	.dbline 37
; 	//PORTB = Green_LED_on;
; 	
; 	
; 	for(;;)
L2:
	.dbline 38
; 	{	
	.dbline 39
; 		if (flag == 0)
	lds R2,_flag
	tst R2
	brne L6
	.dbline 40
; 		{
	.dbline 41
; 			PORTB = Flag_H;
	sbi 0x18,3
	.dbline 42
; 			PORTB = Green_LED_off;
	sbi 0x18,1
	.dbline 43
; 		}
	xjmp L2
L6:
	.dbline 45
	.dbline 46
	cbi 0x18,3
	.dbline 47
	cbi 0x18,1
	.dbline 48
	.dbline 49
	.dbline 37
	.dbline 37
	xjmp L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbsym l achar 1 c
	.dbend
	.dbfunc e Port_initilaze _Port_initilaze fV
	.even
_Port_initilaze::
	.dbline -1
	.dbline 54
; 		else
; 		{
; 			PORTB = Flag_L;
; 			PORTB = Green_LED_on;	
; 		}
; 	}
; 
; }
; 
; void Port_initilaze(void)
; {
	.dbline 55
; 	DDRB = 0xFF;
	ldi R24,255
	out 0x17,R24
	.dbline 56
; 	PORTB = 0xFF;
	out 0x18,R24
	.dbline -2
	.dbline 57
; }
L8:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Timer_initilaze _Timer_initilaze fV
	.even
_Timer_initilaze::
	.dbline -1
	.dbline 59
; void Timer_initilaze(void)
; {
	.dbline 60
; 	TCCR1A = 0x00;		//普通方式,引脚作IO用
	clr R2
	out 0x2f,R2
	.dbline 61
; 	TCCR1B = 0x02;		//CK/1024
	ldi R24,2
	out 0x2e,R24
	.dbline 62
; 	TCCR1C = 0;
	sts 122,R2
	.dbline 63
; 	TCNT1 = 0x3d09;
	ldi R24,15625
	ldi R25,61
	sts 76+1,R25
	sts 76,R24
	.dbline 64
; 	TIMSK = 0x04;			//开放T1溢出中断
	ldi R24,4
	out 0x37,R24
	.dbline 66
; 
; 	SEI();
	sei
	.dbline -2
	.dbline 68
; 
; }
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Timer_INT _Timer_INT fV
	.even
_Timer_INT::
	st -y,R2
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 70
; void Timer_INT(void)
; {
	.dbline 71
; 	TCNT1 = 0x3d09;
	ldi R24,15625
	ldi R25,61
	sts 76+1,R25
	sts 76,R24
	.dbline 72
; 	flag = ~flag;
	lds R2,_flag
	com R2
	sts _flag,R2
	.dbline 73
; 	PORTB = Green_LED_on;
	cbi 0x18,1
	.dbline -2
	.dbline 74
; }
L10:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend

⌨️ 快捷键说明

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