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

📄 timer.lst

📁 AVR单片机ATMEGA128实习之—定时器中断(附带Proteus仿真例子)
💻 LST
字号:
__text_start:
__start:
    0047 EFCF      LDI	R28,0xFF
    0048 E1D0      LDI	R29,0x10
    0049 BFCD      OUT	P3D,R28
    004A BFDE      OUT	P3E,R29
    004B 51C0      SUBI	R28,0x10
    004C 40D0      SBCI	R29,0
    004D EA0A      LDI	R16,0xAA
    004E 8308      STD	R16,0+Y
    004F 2400      CLR	R0
    0050 E0E1      LDI	R30,1
    0051 E0F1      LDI	R31,1
    0052 E011      LDI	R17,1
    0053 30E1      CPI	R30,1
    0054 07F1      CPC	R31,R17
    0055 F011      BEQ	0x0058
    0056 9201      ST	R0,Z+
    0057 CFFB      RJMP	0x0053
    0058 8300      STD	R16,0+Z
    0059 E8EC      LDI	R30,0x8C
    005A E0F0      LDI	R31,0
    005B E0A0      LDI	R26,0
    005C E0B1      LDI	R27,1
    005D E010      LDI	R17,0
    005E 38ED      CPI	R30,0x8D
    005F 07F1      CPC	R31,R17
    0060 F021      BEQ	0x0065
    0061 95C8      LPM
    0062 9631      ADIW	R30,1
    0063 920D      ST	R0,X+
    0064 CFF9      RJMP	0x005E
    0065 940E0068  CALL	_main
_exit:
    0067 CFFF      RJMP	_exit
FILE: G:\猛\avr实践\定时器中断\timer.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) #define	  Flag_H			PORTB|(1<<3)
(0012) #define	  Flag_L			PORTB&~(1<<3)	
(0013) 
(0014) #pragma interrupt_handler Timer_INT:15   //定时器中断
(0015) 
(0016) void Port_initilaze(void);
(0017) void Timer_initilaze(void);
(0018) 
(0019) 
(0020) unsigned char flag = 0;
(0021) 
(0022) void main(void)
(0023) {
(0024) 	unsigned char achar;
(0025) 	unsigned char i;
(0026) 
(0027) 	Port_initilaze(); 
_main:
  i                    --> Y+1
  achar                --> Y+1
    0068 D00E      RCALL	_Port_initilaze
(0028) 	Timer_initilaze();
    0069 D011      RCALL	_Timer_initilaze
(0029) 	
(0030) 	
(0031) 	
(0032) 	PORTB = Red_LED_on;
    006A 98C0      CBI	P18,0
(0033) 	PORTB = Yellow_LED_on;
    006B 98C2      CBI	P18,2
(0034) 	//PORTB = Green_LED_on;
(0035) 	
(0036) 	
(0037) 	for(;;)
(0038) 	{	
(0039) 		if (flag == 0)
    006C 90200100  LDS	R2,0x100
    006E 2022      TST	R2
    006F F419      BNE	0x0073
(0040) 		{
(0041) 			PORTB = Flag_H;
    0070 9AC3      SBI	P18,3
(0042) 			PORTB = Green_LED_off;
    0071 9AC1      SBI	P18,1
(0043) 		}
    0072 CFF9      RJMP	0x006C
(0044) 		else
(0045) 		{
(0046) 			PORTB = Flag_L;
    0073 98C3      CBI	P18,3
(0047) 			PORTB = Green_LED_on;	
    0074 98C1      CBI	P18,1
    0075 CFF6      RJMP	0x006C
    0076 9508      RET
(0048) 		}
(0049) 	}
(0050) 
(0051) }
(0052) 
(0053) void Port_initilaze(void)
(0054) {
(0055) 	DDRB = 0xFF;
_Port_initilaze:
    0077 EF8F      LDI	R24,0xFF
    0078 BB87      OUT	P17,R24
(0056) 	PORTB = 0xFF;
    0079 BB88      OUT	P18,R24
(0057) }
    007A 9508      RET
(0058) void Timer_initilaze(void)
(0059) {
(0060) 	TCCR1A = 0x00;		//普通方式,引脚作IO用
_Timer_initilaze:
    007B 2422      CLR	R2
    007C BC2F      OUT	P2F,R2
(0061) 	TCCR1B = 0x02;		//CK/1024
    007D E082      LDI	R24,2
    007E BD8E      OUT	P2E,R24
(0062) 	TCCR1C = 0;
    007F 9220007A  STS	0x7A,R2
(0063) 	TCNT1 = 0x3d09;
    0081 E089      LDI	R24,0x9
    0082 E39D      LDI	R25,0x3D
    0083 9390004D  STS	0x4D,R25
    0085 9380004C  STS	0x4C,R24
(0064) 	TIMSK = 0x04;			//开放T1溢出中断
    0087 E084      LDI	R24,4
    0088 BF87      OUT	P37,R24
(0065) 
(0066) 	SEI();
    0089 9478      BSET	7
(0067) 
(0068) }
    008A 9508      RET
_Timer_INT:
    008B 922A      ST	R2,-Y
    008C 938A      ST	R24,-Y
    008D 939A      ST	R25,-Y
    008E B62F      IN	R2,P3F
    008F 922A      ST	R2,-Y
(0069) void Timer_INT(void)
(0070) {
(0071) 	TCNT1 = 0x3d09;
    0090 E089      LDI	R24,0x9
    0091 E39D      LDI	R25,0x3D
    0092 9390004D  STS	0x4D,R25
    0094 9380004C  STS	0x4C,R24
(0072) 	flag = ~flag;
    0096 90200100  LDS	R2,0x100
    0098 9420      COM	R2
    0099 92200100  STS	0x100,R2
(0073) 	PORTB = Green_LED_on;
    009B 98C1      CBI	P18,1
(0074) }
FILE: <library>
    009C 9029      LD	R2,Y+
    009D BE2F      OUT	P3F,R2
    009E 9199      LD	R25,Y+
    009F 9189      LD	R24,Y+
    00A0 9029      LD	R2,Y+
    00A1 9518      RETI

⌨️ 快捷键说明

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