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

📄 external_int.s

📁 AVR单片机ATMEGA128实习之—外部中断(附带Proteus仿真例子)
💻 S
字号:
	.module External_int.c
	.area data(ram, con, rel)
_INT0_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.dbsym e INT0_flag _INT0_flag c
_INT1_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.dbsym e INT1_flag _INT1_flag c
_INT2_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.dbsym e INT2_flag _INT2_flag c
	.area vector(rom, abs)
	.org 4
	jmp _External_INT_0
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.area vector(rom, abs)
	.org 8
	jmp _External_INT_1
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.area vector(rom, abs)
	.org 12
	jmp _External_INT_2
	.area data(ram, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.area text(rom, con, rel)
	.dbfile G:\猛\avr实践\外部中断\External_int.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 25
; #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)
; 
; 
; unsigned char INT0_flag = 0;
; unsigned char INT1_flag = 0;
; unsigned char INT2_flag	= 0;
; 
; #pragma interrupt_handler External_INT_0:2   //外部中断0
; #pragma interrupt_handler External_INT_1:3   //外部中断1
; #pragma interrupt_handler External_INT_2:4   //外部中断2
; 
; void Port_initilaze(void);
; void INT_initialize(void);
; 
; void main(void)
; {
	.dbline 26
; 	Port_initialize(); 
	xcall _Port_initialize
	.dbline 27
; 	INT_initialize();
	.dbline -2
	.dbline 29
; 
; }
L1:
	.dbline 0 ; func end
	xjmp _INT_initialize
	.dbend
	.dbfunc e Port_initialize _Port_initialize fV
	.even
_Port_initialize::
	.dbline -1
	.dbline 31
; void Port_initialize(void)
; {
	.dbline 32
; 	DDRB = 0xFF;
	ldi R24,255
	out 0x17,R24
	.dbline 33
; 	DDRD = 0xf0;
	ldi R24,240
	out 0x11,R24
	.dbline 34
; 	PORTB = 0xff;
	ldi R24,255
	out 0x18,R24
	.dbline -2
	.dbline 35
; }
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e INT_initialize _INT_initialize fV
	.even
_INT_initialize::
	.dbline -1
	.dbline 37
; void INT_initialize(void)
; {
	.dbline 38
; 	EICRA = 0xaa;	//fall edge trigger
	ldi R24,170
	sts 106,R24
	.dbline 39
; 	EICRB = 0x00;	//no influence
	clr R2
	out 0x3a,R2
	.dbline 40
; 	EIMSK = 0x0f;
	ldi R24,15
	out 0x39,R24
	.dbline 42
; 
; 	SEI();
	sei
	.dbline -2
	.dbline 44
; 
; }
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e External_INT_0 _External_INT_0 fV
	.even
_External_INT_0::
	st -y,R0
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 46
; void External_INT_0(void)
; {
	.dbline 47
; 	PORTB = Green_LED_off;
	sbi 0x18,1
	.dbline 48
; 	PORTB = Yellow_LED_off;
	sbi 0x18,2
	.dbline 49
; 	PORTB = Red_LED_on;
	cbi 0x18,0
	.dbline -2
	.dbline 50
; }
L4:
	ld R0,y+
	out 0x3f,R0
	ld R0,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e External_INT_1 _External_INT_1 fV
	.even
_External_INT_1::
	st -y,R0
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 52
; void External_INT_1(void)
; {
	.dbline 54
; 	
; 	PORTB = Green_LED_on;
	cbi 0x18,1
	.dbline 55
; 	PORTB = Yellow_LED_off;
	sbi 0x18,2
	.dbline 56
; 	PORTB = Red_LED_off;
	sbi 0x18,0
	.dbline -2
	.dbline 57
; }
L5:
	ld R0,y+
	out 0x3f,R0
	ld R0,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e External_INT_2 _External_INT_2 fV
	.even
_External_INT_2::
	st -y,R0
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 59
; void External_INT_2(void)
; {
	.dbline 61
; 
; 	PORTB = Green_LED_off;
	sbi 0x18,1
	.dbline 62
; 	PORTB = Yellow_LED_on;
	cbi 0x18,2
	.dbline 63
; 	PORTB = Red_LED_off;
	sbi 0x18,0
	.dbline -2
	.dbline 64
; }
L6:
	ld R0,y+
	out 0x3f,R0
	ld R0,y+
	.dbline 0 ; func end
	reti
	.dbend

⌨️ 快捷键说明

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