007.lst

来自「ATMEGAM8(L)」· LST 代码 · 共 154 行

LST
154
字号
__start:
__text_start:
      2A E5CF      LDI	R28,0x5F
      2B E0D4      LDI	R29,4
      2C BFCD      OUT	0x3D,R28
      2D BFDE      OUT	0x3E,R29
      2E 51C0      SUBI	R28,0x10
      2F 40D0      SBCI	R29,0
      30 EA0A      LDI	R16,0xAA
      31 8308      STD	Y+0,R16
      32 2400      CLR	R0
      33 E6E0      LDI	R30,0x60
      34 E0F0      LDI	R31,0
      35 E010      LDI	R17,0
      36 36E1      CPI	R30,0x61
      37 07F1      CPC	R31,R17
      38 F011      BEQ	0x003B
      39 9201      ST	R0,Z+
      3A CFFB      RJMP	0x0036
      3B 8300      STD	Z+0,R16
      3C E5E4      LDI	R30,0x54
      3D E0F0      LDI	R31,0
      3E E6A0      LDI	R26,0x60
      3F E0B0      LDI	R27,0
      40 E010      LDI	R17,0
      41 E000      LDI	R16,0
      42 BF0B      OUT	0x3B,R16
      43 35E4      CPI	R30,0x54
      44 07F1      CPC	R31,R17
      45 F021      BEQ	0x004A
      46 95C8      LPM
      47 9631      ADIW	R30,1
      48 920D      ST	R0,X+
      49 CFF9      RJMP	0x0043
      4A 940E 005E CALL	_main
_exit:
      4C CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\ICC工程\ICC_定时器T1中断实验\main.c
(0001) /*
(0002) 实验七:
(0003) 	定时器T1中断实验。
(0004) 	1、定时器中断实验。定时器产生10mS周期中断,通过计数让PB1电平产生周期变化。
(0005) 	2、内部1 M晶振。
(0006) 	3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)短路块。
(0007) 
(0008) 	AVR  mega16学习板
(0009) 	www.iccavr.com
(0010) 	2006-04-03
(0011) */
(0012) 
(0013) #include "iom8v.h"
(0014) #include <macros.h>
(0015) #pragma interrupt_handler TIMER1_OVF: 7
(0016) /*初始化定时器,产生10mS周期中断*/
(0017) void T1_Init(void) {
(0018) 	
(0019) 	OCR1A  = 1250;				//计数周期为10mS,F=1M 输出比较器OCR1A
_T1_Init:
      4D EE82      LDI	R24,0xE2
      4E E094      LDI	R25,4
      4F BD9B      OUT	0x2B,R25
      50 BD8A      OUT	0x2A,R24
(0020) 	TIMSK |= (1 << OCIE1A);		/*比较中断A允许*/
      51 B789      IN	R24,0x39
      52 6180      ORI	R24,0x10
      53 BF89      OUT	0x39,R24
(0021) 	SREG   = 0x80;
      54 E880      LDI	R24,0x80
      55 BF8F      OUT	0x3F,R24
(0022) 	TCCR1A = 0x00;              //
      56 2422      CLR	R2
      57 BC2F      OUT	0x2F,R2
(0023) 	TCCR1B = 0x08;				/*定时器工作在CTC计数器模式*/
      58 E088      LDI	R24,0x8
      59 BD8E      OUT	0x2E,R24
(0024) 	TCCR1B|= 0x05;				/*设置定时器的分频值为8分频*/
      5A B58E      IN	R24,0x2E
      5B 6085      ORI	R24,5
      5C BD8E      OUT	0x2E,R24
      5D 9508      RET
(0025) }
(0026) void main(void)
(0027)  {
(0028) 
(0029) 	DDRB  = 0xFF;				/*方向输出*/
_main:
      5E EF8F      LDI	R24,0xFF
      5F BB87      OUT	0x17,R24
(0030) 	PORTB = 0xFF;				/*电平设置*/
      60 BB88      OUT	0x18,R24
(0031) 	DDRC  = 0x00;
      61 2422      CLR	R2
      62 BA24      OUT	0x14,R2
(0032) 	PORTC = 0xFF;
      63 BB85      OUT	0x15,R24
(0033) 	DDRD  = 0x00;
      64 BA21      OUT	0x11,R2
(0034) 	PORTD = 0xFF;
      65 BB82      OUT	0x12,R24
(0035) 	
(0036) 	T1_Init();
      66 DFE6      RCALL	_T1_Init
(0037) 	SEI();						/*中断使能*/
      67 9478      BSET	7
(0038) 	
(0039) 	while (1);
      68 CFFF      RJMP	0x0068
      69 9508      RET
_TIMER1_OVF:
      6A 922A      ST	R2,-Y
      6B 938A      ST	R24,-Y
      6C 939A      ST	R25,-Y
      6D B62F      IN	R2,0x3F
      6E 922A      ST	R2,-Y
(0040) }
(0041) 
(0042) /*定时器T1 TCCR1A组比较匹配中断*/
(0043) 
(0044) void TIMER1_OVF(void) 
(0045) {
(0046) 
(0047) 	static unsigned char i;
(0048) 	
(0049) 	if (i >10)
      6F E08A      LDI	R24,0xA
      70 9020 0060 LDS	R2,main.c:i
      72 1582      CP	R24,R2
      73 F440      BCC	0x007C
(0050) 	    {
(0051) 		PORTB ^= (1 << PB1);
      74 E082      LDI	R24,2
      75 B228      IN	R2,0x18
      76 2628      EOR	R2,R24
      77 BA28      OUT	0x18,R2
(0052) 		i = 0;
      78 2422      CLR	R2
      79 9220 0060 STS	main.c:i,R2
(0053) 		}
      7B C005      RJMP	0x0081
(0054) 	else 
(0055) 	    {
(0056) 		i ++;
      7C 9180 0060 LDS	R24,main.c:i
      7E 5F8F      SUBI	R24,0xFF
      7F 9380 0060 STS	main.c:i,R24
(0057) 		}
FILE: <library>
      81 9029      LD	R2,Y+
      82 BE2F      OUT	0x3F,R2
      83 9199      LD	R25,Y+
      84 9189      LD	R24,Y+
      85 9029      LD	R2,Y+
      86 9518      RETI

⌨️ 快捷键说明

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