📄 external_int.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 + -