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

📄 led.lst

📁 mega8的控制LED走马灯程序
💻 LST
字号:
__start:
__text_start:
      13 E5CF      LDI	R28,0x5F
      14 E0D4      LDI	R29,4
      15 BFCD      OUT	0x3D,R28
      16 BFDE      OUT	0x3E,R29
      17 51C0      SUBI	R28,0x10
      18 40D0      SBCI	R29,0
      19 EA0A      LDI	R16,0xAA
      1A 8308      STD	Y+0,R16
      1B 2400      CLR	R0
      1C E6E0      LDI	R30,0x60
      1D E0F0      LDI	R31,0
      1E E010      LDI	R17,0
      1F 36E0      CPI	R30,0x60
      20 07F1      CPC	R31,R17
      21 F011      BEQ	0x0024
      22 9201      ST	R0,Z+
      23 CFFB      RJMP	0x001F
      24 8300      STD	Z+0,R16
      25 E2E6      LDI	R30,0x26
      26 E0F0      LDI	R31,0
      27 E6A0      LDI	R26,0x60
      28 E0B0      LDI	R27,0
      29 E010      LDI	R17,0
      2A E000      LDI	R16,0
      2B BF0B      OUT	0x3B,R16
      2C 32E6      CPI	R30,0x26
      2D 07F1      CPC	R31,R17
      2E F021      BEQ	0x0033
      2F 95C8      LPM
      30 9631      ADIW	R30,1
      31 920D      ST	R0,X+
      32 CFF9      RJMP	0x002C
      33 D04E      RCALL	_main
_exit:
      34 CFFF      RJMP	_exit
FILE: D:\AVR单片机学习资料\LED来回循环闪烁\led.c
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003) 
(0004) /* This seems to produce the right amount of delay for the LED to be seen */
(0005) void Delay()
(0006) 	{
(0007) 	unsigned int a, b;
(0008) 
(0009) 	for (a = 1; a<25; a++)
_Delay:
  a                    --> R16
  b                    --> R18
      35 E001      LDI	R16,1
      36 E010      LDI	R17,0
      37 C00B      RJMP	0x0043
(0010) 		{
(0011) 		for (b = 1; b<2000; b++);
      38 E021      LDI	R18,1
      39 E030      LDI	R19,0
      3A C002      RJMP	0x003D
      3B 5F2F      SUBI	R18,0xFF
      3C 4F3F      SBCI	R19,0xFF
      3D 3D20      CPI	R18,0xD0
      3E E0E7      LDI	R30,7
      3F 073E      CPC	R19,R30
      40 F3D0      BCS	0x003B
      41 5F0F      SUBI	R16,0xFF
      42 4F1F      SBCI	R17,0xFF
      43 3109      CPI	R16,0x19
      44 E0E0      LDI	R30,0
      45 071E      CPC	R17,R30
      46 F388      BCS	0x0038
      47 9508      RET
_LED_PORTBOn:
  i                    --> R10
      48 92AA      ST	R10,-Y
      49 92BA      ST	R11,-Y
      4A 0158      MOVW	R10,R16
(0012) 		}
(0013) 	}
(0014) 
(0015) void LED_PORTBOn(int i)
(0016) 	{
(0017) 	PORTB = ~BIT(i);	/* low output to turn BLED on */
      4B E001      LDI	R16,1
      4C E010      LDI	R17,0
      4D 0195      MOVW	R18,R10
      4E D068      RCALL	lsl16
      4F 0118      MOVW	R2,R16
      50 9420      COM	R2
      51 9430      COM	R3
      52 BA28      OUT	0x18,R2
(0018) 	Delay();
      53 DFE1      RCALL	_Delay
      54 90B9      LD	R11,Y+
      55 90A9      LD	R10,Y+
      56 9508      RET
_LED_PORTDOn:
  j                    --> R10
      57 92AA      ST	R10,-Y
      58 92BA      ST	R11,-Y
      59 0158      MOVW	R10,R16
(0019) 	}
(0020) void LED_PORTDOn(int j)
(0021) 	{
(0022) 	PORTD = ~BIT(j);/* low output to turn DLED on */
      5A E001      LDI	R16,1
      5B E010      LDI	R17,0
      5C 0195      MOVW	R18,R10
      5D D059      RCALL	lsl16
      5E 0118      MOVW	R2,R16
      5F 9420      COM	R2
      60 9430      COM	R3
      61 BA22      OUT	0x12,R2
(0023) 	Delay();
      62 DFD2      RCALL	_Delay
      63 90B9      LD	R11,Y+
      64 90A9      LD	R10,Y+
      65 9508      RET
_LED_PORTBOff:
  i                    --> R10
      66 92AA      ST	R10,-Y
      67 92BA      ST	R11,-Y
      68 0158      MOVW	R10,R16
(0024) 	}
(0025) void LED_PORTBOff(int i)
(0026) {
(0027)     PORTB = ~BIT(i);	/* hight output to turn BLED off */
      69 E001      LDI	R16,1
      6A E010      LDI	R17,0
      6B 0195      MOVW	R18,R10
      6C D04A      RCALL	lsl16
      6D 0118      MOVW	R2,R16
      6E 9420      COM	R2
      6F 9430      COM	R3
      70 BA28      OUT	0x18,R2
      71 90B9      LD	R11,Y+
      72 90A9      LD	R10,Y+
      73 9508      RET
_LED_PORTDOff:
  j                    --> R10
      74 92AA      ST	R10,-Y
      75 92BA      ST	R11,-Y
      76 0158      MOVW	R10,R16
(0028) 	}
(0029) 	void LED_PORTDOff(int j)
(0030) {
(0031) 	PORTD = ~BIT(j);/* hight output to turn DLED off */
      77 E001      LDI	R16,1
      78 E010      LDI	R17,0
      79 0195      MOVW	R18,R10
      7A D03C      RCALL	lsl16
      7B 0118      MOVW	R2,R16
      7C 9420      COM	R2
      7D 9430      COM	R3
      7E BA22      OUT	0x12,R2
      7F 90B9      LD	R11,Y+
      80 90A9      LD	R10,Y+
      81 9508      RET
(0032) 	}
(0033) void main()
(0034) 	{
(0035) 	int i,j;
(0036) 	DDRB = 0xFF;	/* output */
_main:
  j                    --> R22
  i                    --> R20
      82 EF8F      LDI	R24,0xFF
      83 BB87      OUT	0x17,R24
(0037) 	PORTB = 0xFF;	/* all off */
      84 BB88      OUT	0x18,R24
(0038) 	DDRD=0xFF;/*D output*/
      85 BB81      OUT	0x11,R24
(0039) 	PORTD=0xFF;/*all off*/
      86 BB82      OUT	0x12,R24
      87 C02D      RJMP	0x00B5
(0040) 
(0041) 	while (1)
(0042) 		{
(0043) 		for (i = 0; i < 3; i++)
      88 2744      CLR	R20
      89 2755      CLR	R21
(0044) 			LED_PORTBOn(i);
      8A 018A      MOVW	R16,R20
      8B DFBC      RCALL	_LED_PORTBOn
      8C 5F4F      SUBI	R20,0xFF
      8D 4F5F      SBCI	R21,0xFF
      8E 3043      CPI	R20,3
      8F E0E0      LDI	R30,0
      90 075E      CPC	R21,R30
      91 F3C4      BLT	0x008A
(0045) 			LED_PORTBOff(i);
      92 018A      MOVW	R16,R20
      93 DFD2      RCALL	_LED_PORTBOff
(0046) 		for (j = 5; j < 8; j++)
      94 E065      LDI	R22,5
      95 E070      LDI	R23,0
(0047) 			LED_PORTDOn(j);
      96 018B      MOVW	R16,R22
      97 DFBF      RCALL	_LED_PORTDOn
      98 5F6F      SUBI	R22,0xFF
      99 4F7F      SBCI	R23,0xFF
      9A 3068      CPI	R22,0x8
      9B E0E0      LDI	R30,0
      9C 077E      CPC	R23,R30
      9D F3C4      BLT	0x0096
(0048) 		for(j = 7;j >4; j--)
      9E E067      LDI	R22,7
      9F E070      LDI	R23,0
(0049) 		    LED_PORTDOn(j);
      A0 018B      MOVW	R16,R22
      A1 DFB5      RCALL	_LED_PORTDOn
      A2 5061      SUBI	R22,1
      A3 4070      SBCI	R23,0
      A4 E084      LDI	R24,4
      A5 E090      LDI	R25,0
      A6 1786      CP	R24,R22
      A7 0797      CPC	R25,R23
      A8 F3BC      BLT	0x00A0
(0050) 			LED_PORTDOff(j);
      A9 018B      MOVW	R16,R22
      AA DFC9      RCALL	_LED_PORTDOff
(0051) 		for (i = 2; i >=0; i--)
      AB E042      LDI	R20,2
      AC E050      LDI	R21,0
(0052) 			LED_PORTBOn(i);
FILE: <library>
      AD 018A      MOVW	R16,R20
      AE DF99      RCALL	_LED_PORTBOn
      AF 5041      SUBI	R20,1
      B0 4050      SBCI	R21,0
      B1 3040      CPI	R20,0
      B2 E0E0      LDI	R30,0
      B3 075E      CPC	R21,R30
      B4 F7C4      BGE	0x00AD
      B5 CFD2      RJMP	0x0088
      B6 9508      RET
lsl16:
      B7 2322      TST	R18
      B8 F021      BEQ	0x00BD
      B9 0F00      LSL	R16
      BA 1F11      ROL	R17
      BB 952A      DEC	R18
      BC CFFA      RJMP	lsl16
      BD 9508      RET

⌨️ 快捷键说明

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