lius.lst

来自「本人编写的mega16单片机控制的 八种花样流水灯源代码」· LST 代码 · 共 741 行 · 第 1/2 页

LST
741
字号
     136 E010      LDI	R17,0
     137 DF27      RCALL	_DelayMs
     138 9159      LD	R21,Y+
     139 9149      LD	R20,Y+
     13A 9508      RET
(0085)  }
(0086)    }
(0087) 
(0088) void main()
(0089)     {
(0090)     int l,m,n,o,p,q,r,s,i,j;
(0091)  DDRA =0X00;                         //端口上拉输入
_main:
  r                    --> R20
  j                    --> R22
  s                    --> R22
  q                    --> R22
  p                    --> R22
  o                    --> R22
  n                    --> R22
  m                    --> R22
  l                    --> R22
  i                    --> R10
     13B 2422      CLR	R2
     13C BA2A      OUT	0x1A,R2
(0092)  PORTA=0XFF;
     13D EF8F      LDI	R24,0xFF
     13E BB8B      OUT	0x1B,R24
(0093)     DDRB =0x00;                         //端口输出
     13F BA27      OUT	0x17,R2
(0094)     PORTB=0xFF;                         //输出高电平,LED熄灭
     140 BB88      OUT	0x18,R24
(0095)  DDRC =0XFF;
     141 BB84      OUT	0x14,R24
(0096)  PORTC=0XFF;
     142 BB85      OUT	0x15,R24
(0097)  DDRD =0X00;
     143 BA21      OUT	0x11,R2
(0098)  PORTD=0XFF;
     144 BB82      OUT	0x12,R24
(0099) 
(0100)     for (r=0;r<5;r++)
     145 2744      CLR	R20
     146 2755      CLR	R21
(0101)      {
(0102)     for(l=0;l<5;l++)               //模式1:顺序点亮
     147 2766      CLR	R22
     148 2777      CLR	R23
(0103)           {
(0104)        for (i = 0; i < 8; i++)     //顺序单个点亮LED
     149 24AA      CLR	R10
     14A 24BB      CLR	R11
(0105)                 LED_01(i);
     14B 0185      MOVW	R16,R10
     14C DF31      RCALL	_LED_01
     14D 01C5      MOVW	R24,R10
     14E 9601      ADIW	R24,1
     14F 015C      MOVW	R10,R24
     150 3088      CPI	R24,0x8
     151 E0E0      LDI	R30,0
     152 079E      CPC	R25,R30
     153 F3BC      BLT	0x014B
(0106)              for (i = 6; i > 0; i--)     //逆序单个点亮LED
     154 E086      LDI	R24,6
     155 E090      LDI	R25,0
     156 015C      MOVW	R10,R24
(0107)                 LED_01(i);
     157 0185      MOVW	R16,R10
     158 DF25      RCALL	_LED_01
     159 01C5      MOVW	R24,R10
     15A 9701      SBIW	R24,1
     15B 015C      MOVW	R10,R24
     15C 2422      CLR	R2
     15D 2433      CLR	R3
     15E 1628      CP	R2,R24
     15F 0639      CPC	R3,R25
     160 F3B4      BLT	0x0157
     161 5F6F      SUBI	R22,0xFF
     162 4F7F      SBCI	R23,0xFF
     163 3065      CPI	R22,5
     164 E0E0      LDI	R30,0
     165 077E      CPC	R23,R30
     166 F314      BLT	0x0149
(0108)     }
(0109)     LED_off(); 
     167 DF12      RCALL	_LED_off
(0110)     
(0111)     for(m=0;m<5;m++)               //模式2:顺序单个间隔点亮
     168 2766      CLR	R22
     169 2777      CLR	R23
(0112)     {
(0113)              for (i = 0; i < 8; i += 2)  //顺序间隔点亮LED
     16A 24AA      CLR	R10
     16B 24BB      CLR	R11
(0114)               LED_01(i);
     16C 0185      MOVW	R16,R10
     16D DF10      RCALL	_LED_01
     16E 01C5      MOVW	R24,R10
     16F 9602      ADIW	R24,2
     170 015C      MOVW	R10,R24
     171 3088      CPI	R24,0x8
     172 E0E0      LDI	R30,0
     173 079E      CPC	R25,R30
     174 F3BC      BLT	0x016C
(0115)              for (i = 7; i > 0; i -= 2)  //逆序间隔点亮LED
     175 E087      LDI	R24,7
     176 E090      LDI	R25,0
     177 015C      MOVW	R10,R24
(0116)               LED_01(i);
     178 0185      MOVW	R16,R10
     179 DF04      RCALL	_LED_01
     17A 01C5      MOVW	R24,R10
     17B 9702      SBIW	R24,2
     17C 015C      MOVW	R10,R24
     17D 2422      CLR	R2
     17E 2433      CLR	R3
     17F 1628      CP	R2,R24
     180 0639      CPC	R3,R25
     181 F3B4      BLT	0x0178
     182 5F6F      SUBI	R22,0xFF
     183 4F7F      SBCI	R23,0xFF
     184 3065      CPI	R22,5
     185 E0E0      LDI	R30,0
     186 077E      CPC	R23,R30
     187 F314      BLT	0x016A
(0117)     }
(0118)     LED_off(); 
     188 DEF1      RCALL	_LED_off
(0119)      
(0120)     for(n=0;n<5;n++)               //模式3:间隔点亮
     189 2766      CLR	R22
     18A 2777      CLR	R23
(0121)     {
(0122)        for (i = 2; i < 8; i++)     //间隔顺序同时点亮
     18B E082      LDI	R24,2
     18C E090      LDI	R25,0
     18D 015C      MOVW	R10,R24
(0123)        LED_02(i);
     18E 0185      MOVW	R16,R10
     18F DF00      RCALL	_LED_02
     190 01C5      MOVW	R24,R10
     191 9601      ADIW	R24,1
     192 015C      MOVW	R10,R24
     193 3088      CPI	R24,0x8
     194 E0E0      LDI	R30,0
     195 079E      CPC	R25,R30
     196 F3BC      BLT	0x018E
(0124)     for (i = 6; i > 2; i--)  //间隔逆序同时点亮
     197 E086      LDI	R24,6
     198 E090      LDI	R25,0
     199 015C      MOVW	R10,R24
(0125)        LED_02(i);
     19A 0185      MOVW	R16,R10
     19B DEF4      RCALL	_LED_02
     19C 01C5      MOVW	R24,R10
     19D 9701      SBIW	R24,1
     19E 015C      MOVW	R10,R24
     19F E082      LDI	R24,2
     1A0 E090      LDI	R25,0
     1A1 158A      CP	R24,R10
     1A2 059B      CPC	R25,R11
     1A3 F3B4      BLT	0x019A
     1A4 5F6F      SUBI	R22,0xFF
     1A5 4F7F      SBCI	R23,0xFF
     1A6 3065      CPI	R22,5
     1A7 E0E0      LDI	R30,0
     1A8 077E      CPC	R23,R30
     1A9 F30C      BLT	0x018B
(0126)     }
(0127)     LED_off(); 
     1AA DECF      RCALL	_LED_off
(0128)     
(0129)     for(o=0;o<5;o++)               //模式4:相临点亮
     1AB 2766      CLR	R22
     1AC 2777      CLR	R23
(0130)     {
(0131)        for (i = 1; i < 8; i++)     //相临顺序同时点亮
     1AD E081      LDI	R24,1
     1AE E090      LDI	R25,0
     1AF 015C      MOVW	R10,R24
(0132)        LED_03(i);
     1B0 0185      MOVW	R16,R10
     1B1 DEFA      RCALL	_LED_03
     1B2 01C5      MOVW	R24,R10
     1B3 9601      ADIW	R24,1
     1B4 015C      MOVW	R10,R24
     1B5 3088      CPI	R24,0x8
     1B6 E0E0      LDI	R30,0
     1B7 079E      CPC	R25,R30
     1B8 F3BC      BLT	0x01B0
(0133)     for (i = 6; i > 1; i--)  //相临逆序同时点亮
     1B9 E086      LDI	R24,6
     1BA E090      LDI	R25,0
     1BB 015C      MOVW	R10,R24
(0134)        LED_03(i);
     1BC 0185      MOVW	R16,R10
     1BD DEEE      RCALL	_LED_03
     1BE 01C5      MOVW	R24,R10
     1BF 9701      SBIW	R24,1
     1C0 015C      MOVW	R10,R24
     1C1 E081      LDI	R24,1
     1C2 E090      LDI	R25,0
     1C3 158A      CP	R24,R10
     1C4 059B      CPC	R25,R11
     1C5 F3B4      BLT	0x01BC
     1C6 5F6F      SUBI	R22,0xFF
     1C7 4F7F      SBCI	R23,0xFF
     1C8 3065      CPI	R22,5
     1C9 E0E0      LDI	R30,0
     1CA 077E      CPC	R23,R30
     1CB F30C      BLT	0x01AD
(0135)     }
(0136)     LED_off();    
     1CC DEAD      RCALL	_LED_off
(0137) 
(0138)     for(p=0;p<5;p++)               //模式5:发散聚集点亮
     1CD 2766      CLR	R22
     1CE 2777      CLR	R23
(0139)     {
(0140)        for(i=0;i<4;i++)            //发散点亮
     1CF 24AA      CLR	R10
     1D0 24BB      CLR	R11
(0141)       LED_04(i);
     1D1 0185      MOVW	R16,R10
     1D2 DEF5      RCALL	_LED_04
     1D3 01C5      MOVW	R24,R10
     1D4 9601      ADIW	R24,1
     1D5 015C      MOVW	R10,R24
     1D6 3084      CPI	R24,4
     1D7 E0E0      LDI	R30,0
     1D8 079E      CPC	R25,R30
     1D9 F3BC      BLT	0x01D1
(0142)        for(i=2;i>0;i--)            //聚集点亮
     1DA E082      LDI	R24,2
     1DB E090      LDI	R25,0
     1DC 015C      MOVW	R10,R24
(0143)       LED_04(i);     
     1DD 0185      MOVW	R16,R10
     1DE DEE9      RCALL	_LED_04
     1DF 01C5      MOVW	R24,R10
     1E0 9701      SBIW	R24,1
     1E1 015C      MOVW	R10,R24
     1E2 2422      CLR	R2
     1E3 2433      CLR	R3
     1E4 1628      CP	R2,R24
     1E5 0639      CPC	R3,R25
     1E6 F3B4      BLT	0x01DD
     1E7 5F6F      SUBI	R22,0xFF
     1E8 4F7F      SBCI	R23,0xFF
     1E9 3065      CPI	R22,5
     1EA E0E0      LDI	R30,0
     1EB 077E      CPC	R23,R30
     1EC F314      BLT	0x01CF
(0144)     }
(0145)     LED_off();
     1ED DE8C      RCALL	_LED_off
(0146) 
(0147)     for(q=0;q<5;q++)               //模式6:四四点亮
     1EE 2766      CLR	R22
     1EF 2777      CLR	R23
(0148)     {
(0149)        for(i=0;i<4;i++)            //四四顺序点亮
     1F0 24AA      CLR	R10
     1F1 24BB      CLR	R11
(0150)       LED_05(i);
     1F2 0185      MOVW	R16,R10
     1F3 DF01      RCALL	_LED_05
     1F4 01C5      MOVW	R24,R10
     1F5 9601      ADIW	R24,1
     1F6 015C      MOVW	R10,R24
     1F7 3084      CPI	R24,4
     1F8 E0E0      LDI	R30,0
     1F9 079E      CPC	R25,R30
     1FA F3BC      BLT	0x01F2
(0151)        for(i=2;i>0;i--)            //四四逆序点亮
     1FB E082      LDI	R24,2
     1FC E090      LDI	R25,0
     1FD 015C      MOVW	R10,R24
(0152)       LED_05(i);     
     1FE 0185      MOVW	R16,R10
     1FF DEF5      RCALL	_LED_05
     200 01C5      MOVW	R24,R10
     201 9701      SBIW	R24,1
     202 015C      MOVW	R10,R24
     203 2422      CLR	R2
     204 2433      CLR	R3
     205 1628      CP	R2,R24
     206 0639      CPC	R3,R25
     207 F3B4      BLT	0x01FE
     208 5F6F      SUBI	R22,0xFF
     209 4F7F      SBCI	R23,0xFF
     20A 3065      CPI	R22,5
     20B E0E0      LDI	R30,0
     20C 077E      CPC	R23,R30
     20D F314      BLT	0x01F0
(0153)     }
(0154)     LED_off();
     20E DE6B      RCALL	_LED_off
(0155)     
(0156)     for(s=0;s<5;s++)               //模式7:四四点亮
     20F 2766      CLR	R22
     210 2777      CLR	R23
(0157)     {
(0158)        for(i=0;i<2;i++)            //四四顺序点亮
     211 24AA      CLR	R10
     212 24BB      CLR	R11
(0159)       LED_06(i);    
     213 0185      MOVW	R16,R10
     214 DF0D      RCALL	_LED_06
     215 01C5      MOVW	R24,R10
     216 9601      ADIW	R24,1
     217 015C      MOVW	R10,R24
     218 3082      CPI	R24,2
     219 E0E0      LDI	R30,0
     21A 079E      CPC	R25,R30
     21B F3BC      BLT	0x0213
     21C 5F6F      SUBI	R22,0xFF
     21D 4F7F      SBCI	R23,0xFF
     21E 3065      CPI	R22,5
     21F E0E0      LDI	R30,0
     220 077E      CPC	R23,R30
     221 F37C      BLT	0x0211
(0160)     }
(0161)     LED_off();
     222 DE57      RCALL	_LED_off
(0162)     
(0163)     for(j=0;j<10;j++)              //模式8:全部点亮熄灭
     223 2766      CLR	R22
     224 2777      CLR	R23
(0164)     {
(0165)       LED_on();
     225 DE50      RCALL	_LED_on
(0166)    LED_off();
     226 DE53      RCALL	_LED_off
     227 5F6F      SUBI	R22,0xFF
     228 4F7F      SBCI	R23,0xFF
     229 306A      CPI	R22,0xA
     22A E0E0      LDI	R30,0
     22B 077E      CPC	R23,R30
     22C F3C4      BLT	0x0225
     22D 5F4F      SUBI	R20,0xFF
     22E 4F5F      SBCI	R21,0xFF
     22F 3045      CPI	R20,5
     230 E0E0      LDI	R30,0
     231 075E      CPC	R21,R30
     232 F40C      BGE	0x0234
     233 CF13      RJMP	0x0147
(0167)     }
(0168)      }
(0169)   //MCUCR=0x40;          //空闲模式,CPU占用100%
(0170)   //MCUCR=0x50;          //ADC噪声抑制模式,CPU占用100%
(0171)   //MCUCR=0x60;          //掉电模式,CPU占用80%
(0172)   //MCUCR=0x70;          //省电模式,CPU占用4%
(0173)   //MCUCR=0xE0;          //Standby模式,CPU占用80%
(0174)   MCUCR=0xF0;            //扩展Standby模式,CPU占用4%
     234 EF80      LDI	R24,0xF0
     235 BF85      OUT	0x35,R24
(0175)   asm("sleep");          //CPU休眠指令
FILE: <library>
     236 9588      SLEEP
     237 9508      RET
lsl16:
     238 2322      TST	R18
     239 F021      BEQ	0x023E
     23A 0F00      LSL	R16
     23B 1F11      ROL	R17
     23C 952A      DEC	R18
     23D CFFA      RJMP	lsl16
     23E 9508      RET

⌨️ 快捷键说明

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