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

📄 训练项目三:跑马灯.lis

📁 长沙理工自己的实验程序
💻 LIS
字号:
                        .module _训练项目三:跑马灯.c
                        .area text(rom, con, rel)
                ;              i -> R20,R21
                ;         voi49d -> <dead>
                        .even
 0000           _delay_1ms::
 0000 1A93              st -y,r17
 0002 0A93              st -y,r16
 0004 4A93              st -y,R20
 0006 5A93              st -y,R21
 0008           ; /****************************************************************************
 0008           ; ** File Name:          跑马灯
 0008           ; ** Createed By:        Wangchangsong
 0008           ; ** Create Date:        07/25/2008
 0008           ; ** Version:            1.0
 0008           ; ** Descriptions:       led display
 0008           ; **
 0008           ; **---------------------------------------------------------------------------
 0008           ; ** Modified By:
 0008           ; ** Modified Date:
 0008           ; ** Version:
 0008           ; ** Descriptions:
 0008           ; **
 0008           ; ****************************************************************************/
 0008           ; 
 0008           ; #include <iom128v.h>
 0008           ; 
 0008           ; 
 0008           ; /****************************************************************************
 0008           ; ** Function Name:      delay_1ms       
 0008           ; ** Descriptions:       delay time
 0008           ; ** Input Parameters:   void
 0008           ; ** Output parameters:  void
 0008           ; ** Returned Value:     void
 0008           ; **---------------------------------------------------------------------------
 0008           ; ****************************************************************************/
 0008           ; 
 0008           ; void delay_1ms(voi49d)                     /* 延时                          */                
 0008           ; { 
 0008           ;     unsigned int i;
 0008           ;       
 0008           ;     for (i = 0;i < 2260;i++);
 0008 4427              clr R20
 000A 5527              clr R21
 000C 02C0              xjmp L5
 000E           L2:
 000E           L3:
 000E 4F5F              subi R20,255  ; offset = 1
 0010 5F4F              sbci R21,255
 0012           L5:
 0012 443D              cpi R20,212
 0014 E8E0              ldi R30,8
 0016 5E07              cpc R21,R30
 0018 D0F3              brlo L2
 001A           X0:
 001A           L1:
 001A                   .dbline 0 ; func end
 001A 5991              ld R21,y+
 001C 4991              ld R20,y+
 001E 2296              adiw R28,2
 0020 0895              ret
 0022           ;              i -> R20,R21
 0022           ;         uiTime -> R10,R11
                        .even
 0022           _delay_nms::
 0022 0E940000          xcall push_xgset300C
 0026 5801              movw R10,R16
 0028           ; }
 0028           ; 
 0028           ; /****************************************************************************
 0028           ; ** Function Name:      delay_nms       
 0028           ; ** Descriptions:       delay time
 0028           ; ** Input Parameters:   uiTime
 0028           ; ** Output parameters:  void
 0028           ; ** Returned Value:     void
 0028           ; **---------------------------------------------------------------------------
 0028           ; ****************************************************************************/  
 0028           ; 
 0028           ; void delay_nms(unsigned int uiTime)        /* 延时                         */   
 0028           ; {  
 0028           ;     unsigned int i = 0;
 0028 4427              clr R20
 002A 5527              clr R21
 002C           ; 
 002C           ;     for (i = 0;i < uiTime;i++)
 002C 03C0              xjmp L10
 002E           L7:
 002E           ;     delay_1ms();
 002E E8DF              xcall _delay_1ms
 0030           L8:
 0030 4F5F              subi R20,255  ; offset = 1
 0032 5F4F              sbci R21,255
 0034           L10:
 0034 4A15              cp R20,R10
 0036 5B05              cpc R21,R11
 0038 D0F3              brlo L7
 003A           X1:
 003A           L6:
 003A                   .dbline 0 ; func end
 003A 0C940000          xjmp pop_xgset300C
 003E           ;              i -> R10,R11
                        .even
 003E           _LED_On::
 003E AA92              st -y,R10
 0040 BA92              st -y,R11
 0042 5801              movw R10,R16
 0044           ; }
 0044           ; 
 0044           ; /****************************************************************************
 0044           ; ** Function Name:      timeDelay       
 0044           ; ** Descriptions:       delay time
 0044           ; ** Input Parameters:   uiTime
 0044           ; ** Output parameters:  void
 0044           ; ** Returned Value:     void
 0044           ; **---------------------------------------------------------------------------
 0044           ; ****************************************************************************/
 0044           ; 
 0044           ; void LED_On(int i)
 0044           ; {     
 0044           ;     PORTB = ~(1<<i);                    /* 将1左移i位,取反,LED低电平有效 */
 0044 01E0              ldi R16,1
 0046 10E0              ldi R17,0
 0048 9501              movw R18,R10
 004A 0E940000          xcall lsl16
 004E 1801              movw R2,R16
 0050 2094              com R2
 0052 3094              com R3
 0054 28BA              out 0x18,R2
 0056           ;       delay_nms(100);
 0056 04E6              ldi R16,100
 0058 10E0              ldi R17,0
 005A E3DF              xcall _delay_nms
 005C           L11:
 005C                   .dbline 0 ; func end
 005C B990              ld R11,y+
 005E A990              ld R10,y+
 0060 0895              ret
 0062           ;              i -> R20,R21
                        .even
 0062           _main::
 0062           ; }
 0062           ; 
 0062           ; /****************************************************************************
 0062           ; ** Function Name:      main      
 0062           ; ** Descriptions:       led display 
 0062           ; ** Input Parameters:   void
 0062           ; ** Output parameters:  void
 0062           ; ** Returned Value:     void
 0062           ; **---------------------------------------------------------------------------
 0062           ; ****************************************************************************/
 0062           ; 
 0062           ; void main()
 0062           ; {	
 0062           ;     int i;
 0062           ;     DDRB = 0xFF;                           /* B口作输出                      */
 0062 8FEF              ldi R24,255
 0064 87BB              out 0x17,R24
 0066           ;       PORTB = 0xFF;                          /* B口初始化为1                   */
 0066 88BB              out 0x18,R24
 0068 2AC0              xjmp L14
 006A           L13:
 006A           ; 	
 006A           ; 	while (1)                              /* 死循环                         */
 006A           ;     {	
 006A           ;         for (i = 0; i < 8; i++)
 006A 4427              clr R20
 006C 5527              clr R21
 006E           L16:
 006E           ; 			LED_On(i);
 006E 8A01              movw R16,R20
 0070 E6DF              xcall _LED_On
 0072           L17:
 0072 4F5F              subi R20,255  ; offset = 1
 0074 5F4F              sbci R21,255
 0076 4830              cpi R20,8
 0078 E0E0              ldi R30,0
 007A 5E07              cpc R21,R30
 007C C4F3              brlt L16
 007E           X2:
 007E           ; 	    for (i = 8; i > 0; i--)
 007E 48E0              ldi R20,8
 0080 50E0              ldi R21,0
 0082           L20:
 0082           ; 			LED_On(i);
 0082 8A01              movw R16,R20
 0084 DCDF              xcall _LED_On
 0086           L21:
 0086 4150              subi R20,1
 0088 5040              sbci R21,0
 008A 2224              clr R2
 008C 3324              clr R3
 008E 2416              cp R2,R20
 0090 3506              cpc R3,R21
 0092 BCF3              brlt L20
 0094           X3:
 0094           ; 	    for (i = 0; i < 8; i += 2)
 0094 4427              clr R20
 0096 5527              clr R21
 0098           L24:
 0098           ; 			LED_On(i);
 0098 8A01              movw R16,R20
 009A D1DF              xcall _LED_On
 009C           L25:
 009C 4E5F              subi R20,254  ; offset = 2
 009E 5F4F              sbci R21,255
 00A0 4830              cpi R20,8
 00A2 E0E0              ldi R30,0
 00A4 5E07              cpc R21,R30
 00A6 C4F3              brlt L24
 00A8           X4:
 00A8           ; 	    for (i = 7; i > 0; i -= 2)
 00A8 47E0              ldi R20,7
 00AA 50E0              ldi R21,0
 00AC           L28:
 00AC           ; 			LED_On(i);
 00AC 8A01              movw R16,R20
 00AE C7DF              xcall _LED_On
 00B0           L29:
 00B0 4250              subi R20,2
 00B2 5040              sbci R21,0
 00B4 2224              clr R2
 00B6 3324              clr R3
 00B8 2416              cp R2,R20
 00BA 3506              cpc R3,R21
 00BC BCF3              brlt L28
 00BE           X5:
 00BE           ; 	}
 00BE           L14:
 00BE D5CF              xjmp L13
 00C0           X6:
 00C0           L12:
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2           ; }
 00C2           ; 
 00C2           ; /****************************************************************************
 00C2           ;  END FILE
 00C2           ; ****************************************************************************/

⌨️ 快捷键说明

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