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

📄 horselight.lst

📁 ATMEGA16控制跑马灯程序,PA口依次循环点亮各自的LED
💻 LST
字号:
__start:
__text_start:
      2A E5CF      LDI	R28,0x5F
      2B E0D4      LDI	R29,4
      2C BFCD      OUT	0x3D,R28
      2D BFDE      OUT	0x3E,R29
      2E 51CE      SUBI	R28,0x1E
      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 36E0      CPI	R30,0x60
      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 00BB CALL	_main
_exit:
      4C CFFF      RJMP	_exit
FILE: F:\ziliao\新建文件夹\horselight_icc\cfile\delay.c
(0001) #define DELAY_C
(0002) #include "includes.h"
(0003) #define XTAL 4    //晶振频率,单位MHz
(0004) void delay_1us(void)                 //1us延时函数
(0005)   {
(0006)    asm("nop");
_delay_1us:
      4D 0000      NOP
      4E 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R10
      4F 940E 00E0 CALL	push_xgset300C
      51 0158      MOVW	R10,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)       //N us延时函数
(0010)   {
(0011)    unsigned int i=0;
(0012)    for (i=0;i<n;i++)
      52 2744      CLR	R20
      53 2755      CLR	R21
      54 C003      RJMP	0x0058
(0013)    delay_1us();
      55 DFF7      RCALL	_delay_1us
      56 5F4F      SUBI	R20,0xFF
      57 4F5F      SBCI	R21,0xFF
      58 154A      CP	R20,R10
      59 055B      CPC	R21,R11
      5A F3D0      BCS	0x0055
      5B 940C 00E5 JMP	pop_xgset300C
(0014)   }
(0015)   
(0016) void delay_1ms(void)                 //1ms延时函数
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
  i                    --> R16
      5D 2700      CLR	R16
      5E 2711      CLR	R17
      5F C002      RJMP	0x0062
      60 5F0F      SUBI	R16,0xFF
      61 4F1F      SBCI	R17,0xFF
      62 E38A      LDI	R24,0x3A
      63 E092      LDI	R25,2
      64 1708      CP	R16,R24
      65 0719      CPC	R17,R25
      66 F3C8      BCS	0x0060
      67 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      68 940E 00E0 CALL	push_xgset300C
      6A 0158      MOVW	R10,R16
(0020)   }
(0021)   
(0022) void delay_nms(unsigned int n)       //N ms延时函数
(0023)   {
(0024)    unsigned int i=0;
(0025)    for (i=0;i<n;i++)
      6B 2744      CLR	R20
      6C 2755      CLR	R21
      6D C003      RJMP	0x0071
(0026)    {
(0027)       delay_1ms();
      6E DFEE      RCALL	_delay_1ms
      6F 5F4F      SUBI	R20,0xFF
      70 4F5F      SBCI	R21,0xFF
      71 154A      CP	R20,R10
      72 055B      CPC	R21,R11
      73 F3D0      BCS	0x006E
      74 940C 00E5 JMP	pop_xgset300C
_horse:
  i                    --> R16
      76 934A      ST	R20,-Y
      77 935A      ST	R21,-Y
FILE: F:\ziliao\新建文件夹\horselight_icc\cfile\horse.c
(0001) #define HORSE_C
(0002) #include "includes.h"
(0003) void horse(unsigned char i)
(0004) {
(0005)     switch(i)
      78 2F40      MOV	R20,R16
      79 2755      CLR	R21
      7A 3040      CPI	R20,0
      7B 0745      CPC	R20,R21
      7C F109      BEQ	0x009E
      7D 3041      CPI	R20,1
      7E E0E0      LDI	R30,0
      7F 075E      CPC	R21,R30
      80 F101      BEQ	0x00A1
      81 3042      CPI	R20,2
      82 E0E0      LDI	R30,0
      83 075E      CPC	R21,R30
      84 F0F9      BEQ	0x00A4
      85 3043      CPI	R20,3
      86 E0E0      LDI	R30,0
      87 075E      CPC	R21,R30
      88 F0F1      BEQ	0x00A7
      89 3044      CPI	R20,4
      8A E0E0      LDI	R30,0
      8B 075E      CPC	R21,R30
      8C F0E9      BEQ	0x00AA
      8D 3045      CPI	R20,5
      8E E0E0      LDI	R30,0
      8F 075E      CPC	R21,R30
      90 F0E1      BEQ	0x00AD
      91 3046      CPI	R20,6
      92 E0E0      LDI	R30,0
      93 075E      CPC	R21,R30
      94 F0D9      BEQ	0x00B0
      95 3047      CPI	R20,7
      96 E0E0      LDI	R30,0
      97 075E      CPC	R21,R30
      98 F0D1      BEQ	0x00B3
      99 3048      CPI	R20,0x8
      9A E0E0      LDI	R30,0
      9B 075E      CPC	R21,R30
      9C F0C9      BEQ	0x00B6
      9D C01A      RJMP	0x00B8
(0006)     {
(0007)         case 0: 
(0008)             OutPort = 0x00;
      9E 2422      CLR	R2
      9F BA2B      OUT	0x1B,R2
(0009)             break;
      A0 C017      RJMP	0x00B8
(0010)         case 1: 
(0011)             OutPort = 0x01;
      A1 E081      LDI	R24,1
      A2 BB8B      OUT	0x1B,R24
(0012)             break;
      A3 C014      RJMP	0x00B8
(0013)         case 2: 
(0014)             OutPort = 0x03;
      A4 E083      LDI	R24,3
      A5 BB8B      OUT	0x1B,R24
(0015)             break;
      A6 C011      RJMP	0x00B8
(0016)         case 3: 
(0017)             OutPort = 0x07;
      A7 E087      LDI	R24,7
      A8 BB8B      OUT	0x1B,R24
(0018)             break;
      A9 C00E      RJMP	0x00B8
(0019)         case 4: 
(0020)             OutPort = 0x0f;
      AA E08F      LDI	R24,0xF
      AB BB8B      OUT	0x1B,R24
(0021)             break;
      AC C00B      RJMP	0x00B8
(0022)         case 5: 
(0023)             OutPort = 0x1f;
      AD E18F      LDI	R24,0x1F
      AE BB8B      OUT	0x1B,R24
(0024)             break;
      AF C008      RJMP	0x00B8
(0025)        case 6: 
(0026)             OutPort = 0x3f;
      B0 E38F      LDI	R24,0x3F
      B1 BB8B      OUT	0x1B,R24
(0027)             break;
      B2 C005      RJMP	0x00B8
(0028)        case 7: 
(0029)             OutPort = 0x7f;
      B3 E78F      LDI	R24,0x7F
      B4 BB8B      OUT	0x1B,R24
(0030)             break;
      B5 C002      RJMP	0x00B8
(0031)        case 8: 
(0032)             OutPort = 0xff;
      B6 EF8F      LDI	R24,0xFF
      B7 BB8B      OUT	0x1B,R24
(0033)             break;
(0034)        default: 
(0035)             break;
      B8 9159      LD	R21,Y+
      B9 9149      LD	R20,Y+
      BA 9508      RET
FILE: F:\ziliao\新建文件夹\horselight_icc\cfile\main.c
(0001) #define MAIN_C
(0002) #include "includes.h"
(0003) 
(0004) void main(void)
(0005) {
(0006)     unsigned char i;
(0007)     DDRA  = 0xff;  //端口设置:PA设置为推挽1输出
_main:
  i                    --> R20
      BB EF8F      LDI	R24,0xFF
      BC BB8A      OUT	0x1A,R24
(0008)     PORTA = 0xff;
      BD BB8B      OUT	0x1B,R24
(0009)     PORTA = 0x00;   //PORTA初始值为0,熄灭所有的LED
      BE 2422      CLR	R2
      BF BA2B      OUT	0x1B,R2
(0010)     delay_nms(100);
      C0 E604      LDI	R16,0x64
      C1 E010      LDI	R17,0
      C2 940E 0068 CALL	_delay_nms
      C4 C019      RJMP	0x00DE
(0011)     while(1)
(0012)     {
(0013)         for(i=0;i<9;i++)
      C5 2744      CLR	R20
      C6 C008      RJMP	0x00CF
(0014)         {
(0015)             horse(i);
      C7 2F04      MOV	R16,R20
      C8 940E 0076 CALL	_horse
(0016)             delay_nms(200);
      CA EC08      LDI	R16,0xC8
      CB E010      LDI	R17,0
      CC 940E 0068 CALL	_delay_nms
      CE 9543      INC	R20
      CF 3049      CPI	R20,0x9
      D0 F3B0      BCS	0x00C7
(0017)         }
(0018)         for(i=7;i>0;i--)
      D1 E047      LDI	R20,7
      D2 C008      RJMP	0x00DB
(0019)         {
(0020)             horse(i);
      D3 2F04      MOV	R16,R20
      D4 940E 0076 CALL	_horse
(0021)             delay_nms(200);
FILE: <library>
      D6 EC08      LDI	R16,0xC8
      D7 E010      LDI	R17,0
      D8 940E 0068 CALL	_delay_nms
      DA 954A      DEC	R20
      DB E080      LDI	R24,0
      DC 1784      CP	R24,R20
      DD F3A8      BCS	0x00D3
      DE CFE6      RJMP	0x00C5
      DF 9508      RET
push_xgset300C:
      E0 935A      ST	R21,-Y
      E1 934A      ST	R20,-Y
      E2 92BA      ST	R11,-Y
      E3 92AA      ST	R10,-Y
      E4 9508      RET
pop_xgset300C:
      E5 90A9      LD	R10,Y+
      E6 90B9      LD	R11,Y+
      E7 9149      LD	R20,Y+
      E8 9159      LD	R21,Y+
      E9 9508      RET

⌨️ 快捷键说明

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