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

📄 horse.lst

📁 单片机实例书籍
💻 LST
字号:
__text_start:
__start:
      72 EFCF      LDI	R28,0xFF
      73 E2D1      LDI	R29,0x21
      74 BFCD      OUT	0x3D,R28
      75 BFDE      OUT	0x3E,R29
      76 51CE      SUBI	R28,0x1E
      77 40D0      SBCI	R29,0
      78 EA0A      LDI	R16,0xAA
      79 8308      STD	Y+0,R16
      7A 2400      CLR	R0
      7B E0E0      LDI	R30,0
      7C E0F2      LDI	R31,2
      7D E012      LDI	R17,2
      7E 30E0      CPI	R30,0
      7F 07F1      CPC	R31,R17
      80 F011      BEQ	0x0083
      81 9201      ST	R0,Z+
      82 CFFB      RJMP	0x007E
      83 8300      STD	Z+0,R16
      84 EEE4      LDI	R30,0xE4
      85 E0F0      LDI	R31,0
      86 E0A0      LDI	R26,0
      87 E0B2      LDI	R27,2
      88 E010      LDI	R17,0
      89 E000      LDI	R16,0
      8A BF0B      OUT	0x3B,R16
      8B 3EE4      CPI	R30,0xE4
      8C 07F1      CPC	R31,R17
      8D F021      BEQ	0x0092
      8E 95C8      LPM
      8F 9631      ADIW	R30,1
      90 920D      ST	R0,X+
      91 CFF9      RJMP	0x008B
      92 940E 00E7 CALL	_main
_exit:
      94 CFFF      RJMP	_exit
_DelayMs:
  j                    --> R20
  i                    --> R16
      95 934A      ST	R20,-Y
      96 935A      ST	R21,-Y
FILE: F:\机器人3\avr\AVR典型实例\第2章程序\复件IO~1\跑马灯设计\Led.c
(0001) //******************************FileName: LED.C******************************//
(0002) //******************************ICCAVR V6.30编译****************************//
(0003) 
(0004) #include<io8535v.h>            //头文件,AT90S8535单片机的寄存器定义
(0005) #define uchar unsigned char    //数据类型说明
(0006) #define uint  unsigned int     //数据类型说明
(0007) 
(0008) void DelayMs(uint i)           //Ms级延时函数,参数i:延时时间
(0009) {uint j;
(0010)  for(;i!=0;i--)
      97 C00A      RJMP	0x00A2
(0011)   {for(j=8000;j!=0;j--) ;}
      98 E440      LDI	R20,0x40
      99 E15F      LDI	R21,0x1F
      9A C002      RJMP	0x009D
      9B 5041      SUBI	R20,1
      9C 4050      SBCI	R21,0
      9D 3040      CPI	R20,0
      9E 0745      CPC	R20,R21
      9F F7D9      BNE	0x009B
      A0 5001      SUBI	R16,1
      A1 4010      SBCI	R17,0
      A2 3000      CPI	R16,0
      A3 0701      CPC	R16,R17
      A4 F799      BNE	0x0098
      A5 9159      LD	R21,Y+
      A6 9149      LD	R20,Y+
      A7 9508      RET
_Horse:
  i                    --> R16
      A8 934A      ST	R20,-Y
      A9 935A      ST	R21,-Y
(0012) }
(0013) 
(0014) void Horse(uchar i)            //跑马灯程序,通过步判断点亮相应的LED
(0015) {switch(i)                     //高电平点亮LED
      AA 2F40      MOV	R20,R16
      AB 2755      CLR	R21
      AC 3041      CPI	R20,1
      AD E0E0      LDI	R30,0
      AE 075E      CPC	R21,R30
      AF F0E9      BEQ	0x00CD
      B0 3042      CPI	R20,2
      B1 E0E0      LDI	R30,0
      B2 075E      CPC	R21,R30
      B3 F0E1      BEQ	0x00D0
      B4 3043      CPI	R20,3
      B5 E0E0      LDI	R30,0
      B6 075E      CPC	R21,R30
      B7 F0D9      BEQ	0x00D3
      B8 3044      CPI	R20,4
      B9 E0E0      LDI	R30,0
      BA 075E      CPC	R21,R30
      BB F0D1      BEQ	0x00D6
      BC 3045      CPI	R20,5
      BD E0E0      LDI	R30,0
      BE 075E      CPC	R21,R30
      BF F0C9      BEQ	0x00D9
      C0 3046      CPI	R20,6
      C1 E0E0      LDI	R30,0
      C2 075E      CPC	R21,R30
      C3 F0C1      BEQ	0x00DC
      C4 3047      CPI	R20,7
      C5 E0E0      LDI	R30,0
      C6 075E      CPC	R21,R30
      C7 F0B9      BEQ	0x00DF
      C8 3048      CPI	R20,0x8
      C9 E0E0      LDI	R30,0
      CA 075E      CPC	R21,R30
      CB F0B1      BEQ	0x00E2
      CC C017      RJMP	0x00E4
(0016)  {case 1:PORTA=0x01;break;     //0000 0001B 点亮LED1
      CD E081      LDI	R24,1
      CE BB8B      OUT	0x1B,R24
      CF C014      RJMP	0x00E4
(0017)   case 2:PORTA=0x03;break;     //0000 0011B 点亮LED1~LED2
      D0 E083      LDI	R24,3
      D1 BB8B      OUT	0x1B,R24
      D2 C011      RJMP	0x00E4
(0018)   case 3:PORTA=0x07;break;     //0000 0111B 点亮LED1~LED3
      D3 E087      LDI	R24,7
      D4 BB8B      OUT	0x1B,R24
      D5 C00E      RJMP	0x00E4
(0019)   case 4:PORTA=0x0f;break;     //0000 1111B 点亮LED1~LED4
      D6 E08F      LDI	R24,0xF
      D7 BB8B      OUT	0x1B,R24
      D8 C00B      RJMP	0x00E4
(0020)   case 5:PORTA=0x1f;break;     //0001 1111B 点亮LED1~LED5
      D9 E18F      LDI	R24,0x1F
      DA BB8B      OUT	0x1B,R24
      DB C008      RJMP	0x00E4
(0021)   case 6:PORTA=0x3f;break;     //0011 1111B 点亮LED1~LED6
      DC E38F      LDI	R24,0x3F
      DD BB8B      OUT	0x1B,R24
      DE C005      RJMP	0x00E4
(0022)   case 7:PORTA=0x7f;break;     //0111 1111B 点亮LED1~LED7
      DF E78F      LDI	R24,0x7F
      E0 BB8B      OUT	0x1B,R24
      E1 C002      RJMP	0x00E4
(0023)   case 8:PORTA=0xff;break;     //1111 1111B 点亮LED1~LED8
      E2 EF8F      LDI	R24,0xFF
      E3 BB8B      OUT	0x1B,R24
(0024)   default:break;}
      E4 9159      LD	R21,Y+
      E5 9149      LD	R20,Y+
      E6 9508      RET
(0025) }
(0026) 
(0027) void main(void)               
(0028) {uchar i;
(0029)  DDRA=0xff;                    //端口设置:PA口设置为推挽1输出
_main:
  i                    --> R20
      E7 EF8F      LDI	R24,0xFF
      E8 BB8A      OUT	0x1A,R24
(0030)  PORTA=0xff;
      E9 BB8B      OUT	0x1B,R24
(0031)  PORTA=0x00;                   //PORTA初始值为0,灭掉所有的LED      
      EA 2422      CLR	R2
      EB BA2B      OUT	0x1B,R2
(0032)  DelayMs(1000);
      EC EE08      LDI	R16,0xE8
      ED E013      LDI	R17,3
      EE DFA6      RCALL	_DelayMs
      EF C014      RJMP	0x0104
(0033)  while(1)                      //程序无条件执行
(0034)   { for(i=0;i<9;i++)           //依次点亮LED1~LED8
      F0 2744      CLR	R20
      F1 C006      RJMP	0x00F8
(0035)       {Horse(i);
      F2 2F04      MOV	R16,R20
      F3 DFB4      RCALL	_Horse
(0036) 	   DelayMs(1000);}         //点亮时间约1秒
      F4 EE08      LDI	R16,0xE8
      F5 E013      LDI	R17,3
      F6 DF9E      RCALL	_DelayMs
      F7 9543      INC	R20
      F8 3049      CPI	R20,0x9
      F9 F3C0      BCS	0x00F2
(0037) 	for(i=7;i!=0;i--)          //依次熄灭LED8~LED1
      FA E047      LDI	R20,7
      FB C006      RJMP	0x0102
(0038)       {Horse(i);
      FC 2F04      MOV	R16,R20
      FD DFAA      RCALL	_Horse
(0039) 	   DelayMs(1000);}         //熄灭时间约1秒
FILE: <library>
      FE EE08      LDI	R16,0xE8
      FF E013      LDI	R17,3
     100 DF94      RCALL	_DelayMs
     101 954A      DEC	R20
     102 2344      TST	R20
     103 F7C1      BNE	0x00FC
     104 CFEB      RJMP	0x00F0
     105 9508      RET

⌨️ 快捷键说明

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