📄 external_int.lis
字号:
.module External_int.c
.area data(ram, con, rel)
0000 _INT0_flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\猛\avr实践\外部中断\External_int.c
0001 .dbsym e INT0_flag _INT0_flag c
0001 _INT1_flag::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile G:\猛\avr实践\外部中断\External_int.c
0002 .dbsym e INT1_flag _INT1_flag c
0002 _INT2_flag::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile G:\猛\avr实践\外部中断\External_int.c
0003 .dbsym e INT2_flag _INT2_flag c
.area vector(rom, abs)
.org 4
0004 0C941200 jmp _External_INT_0
.area data(ram, con, rel)
0003 .dbfile G:\猛\avr实践\外部中断\External_int.c
.area vector(rom, abs)
.org 8
0008 0C941C00 jmp _External_INT_1
.area data(ram, con, rel)
0003 .dbfile G:\猛\avr实践\外部中断\External_int.c
.area vector(rom, abs)
.org 12
000C 0C942600 jmp _External_INT_2
.area data(ram, con, rel)
0003 .dbfile G:\猛\avr实践\外部中断\External_int.c
.area text(rom, con, rel)
0000 .dbfile G:\猛\avr实践\外部中断\External_int.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 25
0000 ; #include <iom128.h>
0000 ; #include <macros.h>
0000 ;
0000 ;
0000 ; #define Red_LED_on PORTB&~BIT(0)
0000 ; #define Red_LED_off PORTB|(1<<0)
0000 ; #define Green_LED_on PORTB&(~(1<<1))
0000 ; #define Green_LED_off PORTB|(1<<1)
0000 ; #define Yellow_LED_on PORTB&(~(1<<2))
0000 ; #define Yellow_LED_off PORTB|(1<<2)
0000 ;
0000 ;
0000 ; unsigned char INT0_flag = 0;
0000 ; unsigned char INT1_flag = 0;
0000 ; unsigned char INT2_flag = 0;
0000 ;
0000 ; #pragma interrupt_handler External_INT_0:2 //外部中断0
0000 ; #pragma interrupt_handler External_INT_1:3 //外部中断1
0000 ; #pragma interrupt_handler External_INT_2:4 //外部中断2
0000 ;
0000 ; void Port_initilaze(void);
0000 ; void INT_initialize(void);
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 26
0000 ; Port_initialize();
0000 01D0 xcall _Port_initialize
0002 .dbline 27
0002 ; INT_initialize();
0002 .dbline -2
0002 .dbline 29
0002 ;
0002 ; }
0002 L1:
0002 .dbline 0 ; func end
0002 07C0 xjmp _INT_initialize
0004 .dbend
0004 .dbfunc e Port_initialize _Port_initialize fV
.even
0004 _Port_initialize::
0004 .dbline -1
0004 .dbline 31
0004 ; void Port_initialize(void)
0004 ; {
0004 .dbline 32
0004 ; DDRB = 0xFF;
0004 8FEF ldi R24,255
0006 87BB out 0x17,R24
0008 .dbline 33
0008 ; DDRD = 0xf0;
0008 80EF ldi R24,240
000A 81BB out 0x11,R24
000C .dbline 34
000C ; PORTB = 0xff;
000C 8FEF ldi R24,255
000E 88BB out 0x18,R24
0010 .dbline -2
0010 .dbline 35
0010 ; }
0010 L2:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e INT_initialize _INT_initialize fV
.even
0012 _INT_initialize::
0012 .dbline -1
0012 .dbline 37
0012 ; void INT_initialize(void)
0012 ; {
0012 .dbline 38
0012 ; EICRA = 0xaa; //fall edge trigger
0012 8AEA ldi R24,170
0014 80936A00 sts 106,R24
0018 .dbline 39
0018 ; EICRB = 0x00; //no influence
0018 2224 clr R2
001A 2ABE out 0x3a,R2
001C .dbline 40
001C ; EIMSK = 0x0f;
001C 8FE0 ldi R24,15
001E 89BF out 0x39,R24
0020 .dbline 42
0020 ;
0020 ; SEI();
0020 7894 sei
0022 .dbline -2
0022 .dbline 44
0022 ;
0022 ; }
0022 L3:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e External_INT_0 _External_INT_0 fV
.even
0024 _External_INT_0::
0024 0A92 st -y,R0
0026 0FB6 in R0,0x3f
0028 0A92 st -y,R0
002A .dbline -1
002A .dbline 46
002A ; void External_INT_0(void)
002A ; {
002A .dbline 47
002A ; PORTB = Green_LED_off;
002A C19A sbi 0x18,1
002C .dbline 48
002C ; PORTB = Yellow_LED_off;
002C C29A sbi 0x18,2
002E .dbline 49
002E ; PORTB = Red_LED_on;
002E C098 cbi 0x18,0
0030 .dbline -2
0030 .dbline 50
0030 ; }
0030 L4:
0030 0990 ld R0,y+
0032 0FBE out 0x3f,R0
0034 0990 ld R0,y+
0036 .dbline 0 ; func end
0036 1895 reti
0038 .dbend
0038 .dbfunc e External_INT_1 _External_INT_1 fV
.even
0038 _External_INT_1::
0038 0A92 st -y,R0
003A 0FB6 in R0,0x3f
003C 0A92 st -y,R0
003E .dbline -1
003E .dbline 52
003E ; void External_INT_1(void)
003E ; {
003E .dbline 54
003E ;
003E ; PORTB = Green_LED_on;
003E C198 cbi 0x18,1
0040 .dbline 55
0040 ; PORTB = Yellow_LED_off;
0040 C29A sbi 0x18,2
0042 .dbline 56
0042 ; PORTB = Red_LED_off;
0042 C09A sbi 0x18,0
0044 .dbline -2
0044 .dbline 57
0044 ; }
0044 L5:
0044 0990 ld R0,y+
0046 0FBE out 0x3f,R0
0048 0990 ld R0,y+
004A .dbline 0 ; func end
004A 1895 reti
004C .dbend
004C .dbfunc e External_INT_2 _External_INT_2 fV
.even
004C _External_INT_2::
004C 0A92 st -y,R0
004E 0FB6 in R0,0x3f
0050 0A92 st -y,R0
0052 .dbline -1
0052 .dbline 59
0052 ; void External_INT_2(void)
0052 ; {
0052 .dbline 61
0052 ;
0052 ; PORTB = Green_LED_off;
0052 C19A sbi 0x18,1
0054 .dbline 62
0054 ; PORTB = Yellow_LED_on;
0054 C298 cbi 0x18,2
0056 .dbline 63
0056 ; PORTB = Red_LED_off;
0056 C09A sbi 0x18,0
0058 .dbline -2
0058 .dbline 64
0058 ; }
0058 L6:
0058 0990 ld R0,y+
005A 0FBE out 0x3f,R0
005C 0990 ld R0,y+
005E .dbline 0 ; func end
005E 1895 reti
0060 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -