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

📄 训练项目五:定时器.lis

📁 长沙理工自己的实验程序
💻 LIS
字号:
                        .module _训练项目五:定时器.c
                        .area data(ram, con, rel)
 0000           _count::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002           _led_coder:
 0002                   .blkb 2
                        .area idata
 0002 FEFD              .byte 254,253
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 FCFB              .byte 252,251
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 FAF9              .byte 250,249
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 F8F7              .byte 248,247
                        .area data(ram, con, rel)
 000A                   .blkb 2
                        .area idata
 000A F6F5              .byte 246,245
                        .area data(ram, con, rel)
 000C                   .blkb 2
                        .area idata
 000C F4F3              .byte 244,243
                        .area data(ram, con, rel)
 000E                   .blkb 2
                        .area idata
 000E F2F1              .byte 242,241
                        .area data(ram, con, rel)
 0010                   .blkb 2
                        .area idata
 0010 F0EF              .byte 240,239
                        .area data(ram, con, rel)
 0012                   .blkb 2
                        .area idata
 0012 EEED              .byte 238,237
                        .area data(ram, con, rel)
 0014                   .blkb 2
                        .area idata
 0014 ECEB              .byte 236,235
                        .area data(ram, con, rel)
 0016                   .blkb 2
                        .area idata
 0016 EAE9              .byte 234,233
                        .area data(ram, con, rel)
 0018                   .blkb 2
                        .area idata
 0018 E8E7              .byte 232,231
                        .area data(ram, con, rel)
 001A                   .blkb 2
                        .area idata
 001A E6E5              .byte 230,229
                        .area data(ram, con, rel)
 001C                   .blkb 2
                        .area idata
 001C E4E3              .byte 228,227
                        .area data(ram, con, rel)
 001E                   .blkb 2
                        .area idata
 001E E2E1              .byte 226,225
                        .area data(ram, con, rel)
 0020                   .blkb 2
                        .area idata
 0020 E0DF              .byte 224,223
                        .area data(ram, con, rel)
 0022                   .blkb 2
                        .area idata
 0022 DEDD              .byte 222,221
                        .area data(ram, con, rel)
 0024                   .blkb 2
                        .area idata
 0024 DCDB              .byte 220,219
                        .area data(ram, con, rel)
 0026                   .blkb 2
                        .area idata
 0026 DAD9              .byte 218,217
                        .area data(ram, con, rel)
 0028                   .blkb 2
                        .area idata
 0028 D8D7              .byte 216,215
                        .area data(ram, con, rel)
 002A                   .blkb 2
                        .area idata
 002A D6D5              .byte 214,213
                        .area data(ram, con, rel)
 002C                   .blkb 2
                        .area idata
 002C D4D3              .byte 212,211
                        .area data(ram, con, rel)
 002E                   .blkb 2
                        .area idata
 002E D2D1              .byte 210,209
                        .area data(ram, con, rel)
 0030                   .blkb 2
                        .area idata
 0030 D0CF              .byte 208,207
                        .area data(ram, con, rel)
 0032                   .blkb 2
                        .area idata
 0032 CECD              .byte 206,205
                        .area data(ram, con, rel)
 0034                   .blkb 2
                        .area idata
 0034 CCCB              .byte 204,203
                        .area data(ram, con, rel)
 0036                   .blkb 2
                        .area idata
 0036 CAC9              .byte 202,201
                        .area data(ram, con, rel)
 0038                   .blkb 2
                        .area idata
 0038 C8C7              .byte 200,199
                        .area data(ram, con, rel)
 003A                   .blkb 2
                        .area idata
 003A C6C5              .byte 198,197
                        .area data(ram, con, rel)
 003C                   .blkb 1
                        .area idata
 003C C4                .byte 196
                        .area data(ram, con, rel)
                        .area text(rom, con, rel)
                        .even
 0000           _init::
 0000           ; /****************************************************************************
 0000           ; ** File Name:          定时器
 0000           ; ** Createed By:        Wangchangsong
 0000           ; ** Create Date:        07/26/2008
 0000           ; ** Version:            1.0
 0000           ; ** Descriptions:       led display
 0000           ; **
 0000           ; **---------------------------------------------------------------------------
 0000           ; ** Modified By:
 0000           ; ** Modified Date:
 0000           ; ** Version:
 0000           ; ** Descriptions:
 0000           ; **
 0000           ; ****************************************************************************/
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; unsigned int count = 0;
 0000           ; static unsigned char led_coder[] = {0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,
 0000           ; 0xf4,0xf3,0xf2,0xf1,0xf0,0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,
 0000           ; 0xe3,0xe2,0xe1,0xe0,0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,
 0000           ; 0xd2,0xd1,0xd0,0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4};
 0000           ; 
 0000           ; /****************************************************************************
 0000           ; ** Function Name:      init      
 0000           ; ** Descriptions:       initialization
 0000           ; ** Input Parameters:   void
 0000           ; ** Output parameters:  void
 0000           ; ** Returned Value:     void
 0000           ; **---------------------------------------------------------------------------
 0000           ; ****************************************************************************/
 0000           ;    
 0000           ; void init()                               /* 初始化                          */
 0000           ; {       SREG   = 0x80;                    /* 状态寄存器,全局中断允许        */ 
 0000 80E8              ldi R24,128
 0002 8FBF              out 0x3f,R24
 0004           ;         DDRB   = 0xFF;                    /* PB口作为输出口                  */
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008           ;               TCCR1A = 0;                       /* 16位定时器/计数器控制寄存器A,
 0008 2224              clr R2
 000A 2FBC              out 0x2f,R2
 000C           ;                                                    引脚为通用I/O口                 */
 000C           ;         TCNT1H = 0xff;                    /* 16位定时器/计数器的寄存器       */
 000C 8DBD              out 0x2d,R24
 000E           ;               TCNT1L = 0xff;                    /* 16位定时器/计数器的寄存器       */
 000E 8CBD              out 0x2c,R24
 0010           ;         TIMSK  = 0x04;                    /* 中断屏蔽寄存器,T/C1溢出中断允许 */
 0010 84E0              ldi R24,4
 0012 87BF              out 0x37,R24
 0014           ;         TCCR1B = 0x02;                    /* 16位定时器/计数器控制寄存器B,
 0014 82E0              ldi R24,2
 0016 8EBD              out 0x2e,R24
 0018           L1:
 0018                   .dbline 0 ; func end
 0018 0895              ret
                        .even
 001A           _main::
 001A           ;                                              CLK/8(来自预分频器)             */
 001A           ; }
 001A           ; 
 001A           ; /****************************************************************************
 001A           ; ** Function Name:      main       
 001A           ; ** Descriptions:       
 001A           ; ** Input Parameters:   void
 001A           ; ** Output parameters:  void
 001A           ; ** Returned Value:     void
 001A           ; **---------------------------------------------------------------------------
 001A           ; ****************************************************************************/
 001A           ; 										                         
 001A           ; void main(void)
 001A           ; {
 001A           ;     init();
 001A F2DF              xcall _init
 001C           L3:
 001C           ; 
 001C           ;     while(1)                                  /* 死循环                      */
 001C           ;     {;}                                       
 001C           L4:
 001C FFCF              xjmp L3
 001E           X0:
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
                        .area vector(rom, abs)
                        .org 56
 0038 0C941000          jmp _timer
                        .area text(rom, con, rel)
                        .even
 0020           _timer::
 0020 2A92              st -y,R2
 0022 3A92              st -y,R3
 0024 8A93              st -y,R24
 0026 9A93              st -y,R25
 0028 AA93              st -y,R26
 002A EA93              st -y,R30
 002C FA93              st -y,R31
 002E 2FB6              in R2,0x3f
 0030 2A92              st -y,R2
 0032           ; }
 0032           ; 
 0032           ; #pragma interrupt_handler timer:15        
 0032           ;                                               /* 请查阅中断向量相关资料,
 0032           ;                                                                                        程序中15为中断向量号        */
 0032           ; 
 0032           ; /****************************************************************************
 0032           ; ** Function Name:      timer      
 0032           ; ** Descriptions:       
 0032           ; ** Input Parameters:   count
 0032           ; ** Output parameters:  void
 0032           ; ** Returned Value:     void
 0032           ; **---------------------------------------------------------------------------
 0032           ; ****************************************************************************/                                                                                  
 0032           ; 
 0032           ; void timer()
 0032           ; { 
 0032           ;     PORTB = led_coder[count];  
 0032 80E0              ldi R24,<_led_coder
 0034 90E0              ldi R25,>_led_coder
 0036 E0910000          lds R30,_count
 003A F0910100          lds R31,_count+1
 003E E80F              add R30,R24
 0040 F91F              adc R31,R25
 0042 2080              ldd R2,z+0
 0044 28BA              out 0x18,R2
 0046           ;     if(count<59)
 0046 80910000          lds R24,_count
 004A 90910100          lds R25,_count+1
 004E 8B33              cpi R24,59
 0050 E0E0              ldi R30,0
 0052 9E07              cpc R25,R30
 0054 30F4              brsh L7
 0056           X1:
 0056           ;     count+=1; 
 0056 0196              adiw R24,1
 0058 90930100          sts _count+1,R25
 005C 80930000          sts _count,R24
 0060 06C0              xjmp L8
 0062           L7:
 0062           ;     else count = 0;
 0062 2224              clr R2
 0064 3324              clr R3
 0066 30920100          sts _count+1,R3
 006A 20920000          sts _count,R2
 006E           L8:
 006E           L6:
 006E                   .dbline 0 ; func end
 006E 2990              ld R2,y+
 0070 2FBE              out 0x3f,R2
 0072 F991              ld R31,y+
 0074 E991              ld R30,y+
 0076 A991              ld R26,y+
 0078 9991              ld R25,y+
 007A 8991              ld R24,y+
 007C 3990              ld R3,y+
 007E 2990              ld R2,y+
 0080 1895              reti
 0082           ; }
 0082           ; 
 0082           ; /****************************************************************************
 0082           ;  END FILE
 0082           ; ****************************************************************************/

⌨️ 快捷键说明

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