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

📄 led.lst

📁 AVR单片机开发版资料测试程序里的源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0028)   PORTA&=~BIT(LEDLK);	   //锁存数据
    00B8 98DA      CBI	P1B,2
(0029)  }
    00B9 C00C      RJMP	0x00C6
(0030)  else
(0031)  {
(0032)   PORTB|=BIT(number);	   //输出数据
    00BA E001      LDI	R16,1
    00BB 2F14      MOV	R17,R20
    00BC 940E0150  CALL	lsl8
    00BE B228      IN	R2,P18
    00BF 2A20      OR	R2,R16
    00C0 BA28      OUT	P18,R2
(0033)   PORTA|=BIT(LEDLK);	   //更新数据
    00C1 9ADA      SBI	P1B,2
(0034)   Delayms(5);			   //调整时序
    00C2 E005      LDI	R16,5
    00C3 E010      LDI	R17,0
    00C4 DFA4      RCALL	_Delayms
(0035)   PORTA&=~BIT(LEDLK);	   //锁存数据
    00C5 98DA      CBI	P1B,2
(0036)  }
(0037) }
    00C6 940E014D  CALL	pop_gset2
    00C8 9508      RET
_All_led:
  light                --> R20
    00C9 940E0132  CALL	push_gset1
    00CB 2F40      MOV	R20,R16
(0038) /*******************************************
(0039) 函数名称: All_led
(0040) 功    能: 点亮或者熄灭全部LED
(0041) 参    数: light--为TRUE的时候为点亮全部LED,为FALSE的时候为熄灭全部LED
(0042) 返回值  : 无
(0043) /********************************************/
(0044) void All_led(uchar light)
(0045) {
(0046)  if(light)
    00CC 2344      TST	R20
    00CD F049      BEQ	0x00D7
(0047)  {
(0048)   PORTB&=~ALLLED;
    00CE B388      IN	R24,P18
    00CF 7080      ANDI	R24,0
    00D0 BB88      OUT	P18,R24
(0049)   PORTA|=BIT(LEDLK);
    00D1 9ADA      SBI	P1B,2
(0050)   Delayms(5);
    00D2 E005      LDI	R16,5
    00D3 E010      LDI	R17,0
    00D4 DF94      RCALL	_Delayms
(0051)   PORTA&=~BIT(LEDLK);
    00D5 98DA      CBI	P1B,2
(0052)  }
    00D6 C008      RJMP	0x00DF
(0053)  else
(0054)  {
(0055)   PORTB|=ALLLED;
    00D7 B388      IN	R24,P18
    00D8 6F8F      ORI	R24,0xFF
    00D9 BB88      OUT	P18,R24
(0056)   PORTA|=BIT(LEDLK);
    00DA 9ADA      SBI	P1B,2
(0057)   Delayms(5);
    00DB E005      LDI	R16,5
    00DC E010      LDI	R17,0
    00DD DF8B      RCALL	_Delayms
(0058)   PORTA&=~BIT(LEDLK);
    00DE 98DA      CBI	P1B,2
(0059)  }
(0060) }
    00DF 940E0135  CALL	pop_gset1
    00E1 9508      RET
_Flow_LED:
  i                    --> R20
  MS                   --> R22
    00E2 940E0149  CALL	push_gset2
    00E4 2F60      MOV	R22,R16
(0061) /*******************************************
(0062) 函数名称: Flow_led
(0063) 功    能: 流水灯(循环一次)
(0064) 参    数: MS--点亮相邻LED的时间间隔
(0065) 返回值  : 无
(0066) /********************************************/
(0067) void Flow_LED(uchar MS)
(0068) {
(0069)  uchar i;
(0070)  for(i=0;i<8;i++)
    00E5 2744      CLR	R20
    00E6 C009      RJMP	0x00F0
(0071)  {
(0072)   All_led(FALSE);	//全部熄灭
    00E7 2700      CLR	R16
    00E8 DFE0      RCALL	_All_led
(0073)   One_led(i,TRUE);	//点亮指定的LED
    00E9 E021      LDI	R18,1
    00EA 2F04      MOV	R16,R20
    00EB DFB9      RCALL	_One_led
(0074)   Delayms(MS);		//延时指定的时间
    00EC 2F06      MOV	R16,R22
    00ED 2711      CLR	R17
    00EE DF7A      RCALL	_Delayms
    00EF 9543      INC	R20
    00F0 3048      CPI	R20,0x8
    00F1 F3A8      BCS	0x00E7
(0075)  } 
(0076) }
    00F2 940E014D  CALL	pop_gset2
    00F4 9508      RET
_Flash_LED:
  MS                   --> R22
  number               --> R20
    00F5 940E0149  CALL	push_gset2
    00F7 2F62      MOV	R22,R18
    00F8 2F40      MOV	R20,R16
(0077) /*******************************************
(0078) 函数名称: Flash_led
(0079) 功    能: 闪烁指定的LED(循环一次)
(0080) 参    数: number--指定的LED
(0081) 	  	  MS--LED闪烁的时间间隔
(0082) 返回值  : 无
(0083) /********************************************/
(0084) void Flash_LED(uchar number,uchar MS)
(0085) {
(0086)  One_led(number,TRUE);		//点亮指定的LED
    00F9 E021      LDI	R18,1
    00FA 2F04      MOV	R16,R20
    00FB DFA9      RCALL	_One_led
(0087)  Delayms(MS);				//延时指定的时间
    00FC 2F06      MOV	R16,R22
    00FD 2711      CLR	R17
    00FE DF6A      RCALL	_Delayms
(0088)  All_led(FALSE);		//熄灭所有的LED
    00FF 2700      CLR	R16
    0100 DFC8      RCALL	_All_led
(0089)  Delayms(MS);				//延时指定的时间
    0101 2F06      MOV	R16,R22
    0102 2711      CLR	R17
    0103 DF65      RCALL	_Delayms
(0090)  One_led(number,FALSE);		//熄灭指定的LED 
    0104 2722      CLR	R18
    0105 2F04      MOV	R16,R20
    0106 DF9E      RCALL	_One_led
(0091) }
    0107 940E014D  CALL	pop_gset2
    0109 9508      RET
(0092) /*******************************************
(0093) 函数名称: main
(0094) 功    能: 1. 流水灯 2.闪烁指定的LED
(0095) 参    数: 无
(0096) 返回值  : 无
(0097) /********************************************/
(0098) void main(void)
(0099) {	 
(0100)  uchar i,bit;
(0101)  i=0;  	   					//i=0时为流水灯,i=1时为闪烁灯
_main:
  bit                  --> R20
  i                    --> R22
    010A 2766      CLR	R22
(0102)  bit=0;						//bit指定闪烁的LED
    010B 2744      CLR	R20
(0103)  Board_init( );	   			//初始化开发板
    010C DF72      RCALL	_Board_init
    010D C012      RJMP	0x0120
(0104)  while(1)
(0105)  {
(0106)   switch(i)
    010E 2EA6      MOV	R10,R22
    010F 24BB      CLR	R11
    0110 20AA      TST	R10
    0111 F411      BNE	0x0114
    0112 20BB      TST	R11
    0113 F031      BEQ	0x011A
    0114 01C5      MOVW	R24,R10
    0115 3081      CPI	R24,1
    0116 E0E0      LDI	R30,0
    0117 079E      CPC	R25,R30
    0118 F021      BEQ	0x011D
    0119 C006      RJMP	0x0120
(0107)   {
(0108)    case 0:
(0109)   	   Flow_LED(200);
    011A EC08      LDI	R16,0xC8
    011B DFC6      RCALL	_Flow_LED
(0110) 	   break;
    011C C003      RJMP	0x0120
(0111)    case 1:
(0112)    	   Flash_LED(bit,100);
    011D E624      LDI	R18,0x64
    011E 2F04      MOV	R16,R20
    011F DFD5      RCALL	_Flash_LED
    0120 CFED      RJMP	0x010E
(0113)   }
(0114)  }  
(0115) }FILE: <library>
    0121 9508      RET
empy16s:
    0122 920A      ST	R0,-Y
    0123 921A      ST	R1,-Y
    0124 938A      ST	R24,-Y
    0125 939A      ST	R25,-Y
    0126 9F02      MUL	R16,R18
    0127 01C0      MOVW	R24,R0
    0128 9F12      MUL	R17,R18
    0129 0D90      ADD	R25,R0
    012A 9F03      MUL	R16,R19
    012B 0D90      ADD	R25,R0
    012C 018C      MOVW	R16,R24
    012D 9199      LD	R25,Y+
    012E 9189      LD	R24,Y+
    012F 9019      LD	R1,Y+
    0130 9009      LD	R0,Y+
    0131 9508      RET
push_gset1:
    0132 935A      ST	R21,-Y
    0133 934A      ST	R20,-Y
    0134 9508      RET
pop_gset1:
    0135 E0E1      LDI	R30,1
pop:
    0136 9149      LD	R20,Y+
    0137 9159      LD	R21,Y+
    0138 FDE0      SBRC	R30,0
    0139 9508      RET
    013A 9169      LD	R22,Y+
    013B 9179      LD	R23,Y+
    013C FDE1      SBRC	R30,1
    013D 9508      RET
    013E 90A9      LD	R10,Y+
    013F 90B9      LD	R11,Y+
    0140 FDE2      SBRC	R30,2
    0141 9508      RET
    0142 90C9      LD	R12,Y+
    0143 90D9      LD	R13,Y+
    0144 FDE3      SBRC	R30,3
    0145 9508      RET
    0146 90E9      LD	R14,Y+
    0147 90F9      LD	R15,Y+
    0148 9508      RET
push_gset2:
    0149 937A      ST	R23,-Y
    014A 936A      ST	R22,-Y
    014B 940C0132  JMP	push_gset1
pop_gset2:
    014D E0E2      LDI	R30,2
    014E 940C0136  JMP	pop
lsl8:
    0150 2311      TST	R17
    0151 F019      BEQ	0x0155
    0152 0F00      LSL	R16
    0153 951A      DEC	R17
    0154 CFFB      RJMP	lsl8
    0155 9508      RET

⌨️ 快捷键说明

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