external_int.lst

来自「AVR单片机ATMEGA128实习之—外部中断(附带Proteus仿真例子)」· LST 代码 · 共 155 行

LST
155
字号
__start:
__text_start:
    0048 EFCF      LDI	R28,0xFF
    0049 E1D0      LDI	R29,0x10
    004A BFCD      OUT	P3D,R28
    004B BFDE      OUT	P3E,R29
    004C 51C0      SUBI	R28,0x10
    004D 40D0      SBCI	R29,0
    004E EA0A      LDI	R16,0xAA
    004F 8308      STD	R16,0+Y
    0050 2400      CLR	R0
    0051 E0E3      LDI	R30,3
    0052 E0F1      LDI	R31,1
    0053 E011      LDI	R17,1
    0054 30E3      CPI	R30,3
    0055 07F1      CPC	R31,R17
    0056 F011      BEQ	0x0059
    0057 9201      ST	R0,Z+
    0058 CFFB      RJMP	0x0054
    0059 8300      STD	R16,0+Z
    005A E8EC      LDI	R30,0x8C
    005B E0F0      LDI	R31,0
    005C E0A0      LDI	R26,0
    005D E0B1      LDI	R27,1
    005E E010      LDI	R17,0
    005F 38EF      CPI	R30,0x8F
    0060 07F1      CPC	R31,R17
    0061 F021      BEQ	0x0066
    0062 95C8      LPM
    0063 9631      ADIW	R30,1
    0064 920D      ST	R0,X+
    0065 CFF9      RJMP	0x005F
    0066 940E0069  CALL	_main
_exit:
    0068 CFFF      RJMP	_exit
FILE: G:\猛\avr实践\外部中断\External_int.c
(0001) #include <iom128.h>
(0002) #include <macros.h>
(0003) 
(0004) 
(0005) #define	  Red_LED_on		PORTB&~BIT(0)
(0006) #define	  Red_LED_off		PORTB|(1<<0)
(0007) #define	  Green_LED_on		PORTB&(~(1<<1))
(0008) #define	  Green_LED_off		PORTB|(1<<1)
(0009) #define	  Yellow_LED_on		PORTB&(~(1<<2))
(0010) #define	  Yellow_LED_off	PORTB|(1<<2)
(0011) 
(0012) 
(0013) unsigned char INT0_flag = 0;
(0014) unsigned char INT1_flag = 0;
(0015) unsigned char INT2_flag	= 0;
(0016) 
(0017) #pragma interrupt_handler External_INT_0:2   //外部中断0
(0018) #pragma interrupt_handler External_INT_1:3   //外部中断1
(0019) #pragma interrupt_handler External_INT_2:4   //外部中断2
(0020) 
(0021) void Port_initilaze(void);
(0022) void INT_initialize(void);
(0023) 
(0024) void main(void)
(0025) {
(0026) 	Port_initialize(); 
_main:
    0069 D001      RCALL	_Port_initialize
(0027) 	INT_initialize();
(0028) 
(0029) }
    006A C007      RJMP	_INT_initialize
(0030) void Port_initialize(void)
(0031) {
(0032) 	DDRB = 0xFF;
_Port_initialize:
    006B EF8F      LDI	R24,0xFF
    006C BB87      OUT	P17,R24
(0033) 	DDRD = 0xf0;
    006D EF80      LDI	R24,0xF0
    006E BB81      OUT	P11,R24
(0034) 	PORTB = 0xff;
    006F EF8F      LDI	R24,0xFF
    0070 BB88      OUT	P18,R24
(0035) }
    0071 9508      RET
(0036) void INT_initialize(void)
(0037) {
(0038) 	EICRA = 0xaa;	//fall edge trigger
_INT_initialize:
    0072 EA8A      LDI	R24,0xAA
    0073 9380006A  STS	0x6A,R24
(0039) 	EICRB = 0x00;	//no influence
    0075 2422      CLR	R2
    0076 BE2A      OUT	P3A,R2
(0040) 	EIMSK = 0x0f;
    0077 E08F      LDI	R24,0xF
    0078 BF89      OUT	P39,R24
(0041) 
(0042) 	SEI();
    0079 9478      BSET	7
(0043) 
(0044) }
    007A 9508      RET
_External_INT_0:
    007B 920A      ST	R0,-Y
    007C B60F      IN	R0,P3F
    007D 920A      ST	R0,-Y
(0045) void External_INT_0(void)
(0046) {
(0047) 	PORTB = Green_LED_off;
    007E 9AC1      SBI	P18,1
(0048) 	PORTB = Yellow_LED_off;
    007F 9AC2      SBI	P18,2
(0049) 	PORTB = Red_LED_on;
    0080 98C0      CBI	P18,0
(0050) }
    0081 9009      LD	R0,Y+
    0082 BE0F      OUT	P3F,R0
    0083 9009      LD	R0,Y+
    0084 9518      RETI
_External_INT_1:
    0085 920A      ST	R0,-Y
    0086 B60F      IN	R0,P3F
    0087 920A      ST	R0,-Y
(0051) void External_INT_1(void)
(0052) {
(0053) 	
(0054) 	PORTB = Green_LED_on;
    0088 98C1      CBI	P18,1
(0055) 	PORTB = Yellow_LED_off;
    0089 9AC2      SBI	P18,2
(0056) 	PORTB = Red_LED_off;
    008A 9AC0      SBI	P18,0
(0057) }
    008B 9009      LD	R0,Y+
    008C BE0F      OUT	P3F,R0
    008D 9009      LD	R0,Y+
    008E 9518      RETI
_External_INT_2:
    008F 920A      ST	R0,-Y
    0090 B60F      IN	R0,P3F
    0091 920A      ST	R0,-Y
(0058) void External_INT_2(void)
(0059) {
(0060) 
(0061) 	PORTB = Green_LED_off;
    0092 9AC1      SBI	P18,1
(0062) 	PORTB = Yellow_LED_on;
    0093 98C2      CBI	P18,2
(0063) 	PORTB = Red_LED_off;
    0094 9AC0      SBI	P18,0
(0064) }
FILE: <library>
    0095 9009      LD	R0,Y+
    0096 BE0F      OUT	P3F,R0
    0097 9009      LD	R0,Y+
    0098 9518      RETI

⌨️ 快捷键说明

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