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

📄 timer.lis

📁 AVR单片机ATMEGA128实习之—定时器中断(附带Proteus仿真例子)
💻 LIS
字号:
                        .module timer.c
                        .area vector(rom, abs)
                        .org 56
 0038 0C942300          jmp _Timer_INT
                        .area data(ram, con, rel)
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile G:\猛\avr实践\定时器中断\timer.c
 0001                   .dbsym e flag _flag c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\猛\avr实践\定时器中断\timer.c
 0000                   .dbfunc e main _main fV
 0000           ;              i -> <dead>
 0000           ;          achar -> <dead>
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 23
 0000           ; #include <iom128.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; 
 0000           ; #define         Red_LED_on            PORTB&~BIT(0)
 0000           ; #define         Red_LED_off           PORTB|(1<<0)
 0000           ; #define         Green_LED_on          PORTB&(~(1<<1))
 0000           ; #define         Green_LED_off         PORTB|(1<<1)
 0000           ; #define         Yellow_LED_on         PORTB&(~(1<<2))
 0000           ; #define         Yellow_LED_off        PORTB|(1<<2)
 0000           ; #define         Flag_H                        PORTB|(1<<3)
 0000           ; #define         Flag_L                        PORTB&~(1<<3)   
 0000           ; 
 0000           ; #pragma interrupt_handler Timer_INT:15   //定时器中断
 0000           ; 
 0000           ; void Port_initilaze(void);
 0000           ; void Timer_initilaze(void);
 0000           ; 
 0000           ; 
 0000           ; unsigned char flag = 0;
 0000           ; 
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 27
 0000           ;       unsigned char achar;
 0000           ;       unsigned char i;
 0000           ; 
 0000           ;       Port_initilaze(); 
 0000 0ED0              xcall _Port_initilaze
 0002                   .dbline 28
 0002           ;       Timer_initilaze();
 0002 11D0              xcall _Timer_initilaze
 0004                   .dbline 32
 0004           ;       
 0004           ;       
 0004           ;       
 0004           ;       PORTB = Red_LED_on;
 0004 C098              cbi 0x18,0
 0006                   .dbline 33
 0006           ;       PORTB = Yellow_LED_on;
 0006 C298              cbi 0x18,2
 0008                   .dbline 37
 0008           ;       //PORTB = Green_LED_on;
 0008           ;       
 0008           ;       
 0008           ;       for(;;)
 0008           L2:
 0008                   .dbline 38
 0008           ;       {       
 0008                   .dbline 39
 0008           ;               if (flag == 0)
 0008 20900000          lds R2,_flag
 000C 2220              tst R2
 000E 19F4              brne L6
 0010                   .dbline 40
 0010           ;               {
 0010                   .dbline 41
 0010           ;                       PORTB = Flag_H;
 0010 C39A              sbi 0x18,3
 0012                   .dbline 42
 0012           ;                       PORTB = Green_LED_off;
 0012 C19A              sbi 0x18,1
 0014                   .dbline 43
 0014           ;               }
 0014 F9CF              xjmp L2
 0016           L6:
 0016                   .dbline 45
 0016                   .dbline 46
 0016 C398              cbi 0x18,3
 0018                   .dbline 47
 0018 C198              cbi 0x18,1
 001A                   .dbline 48
 001A                   .dbline 49
 001A                   .dbline 37
 001A                   .dbline 37
 001A F6CF              xjmp L2
 001C           X0:
 001C                   .dbline -2
 001C           L1:
 001C                   .dbline 0 ; func end
 001C 0895              ret
 001E                   .dbsym l i 1 c
 001E                   .dbsym l achar 1 c
 001E                   .dbend
 001E                   .dbfunc e Port_initilaze _Port_initilaze fV
                        .even
 001E           _Port_initilaze::
 001E                   .dbline -1
 001E                   .dbline 54
 001E           ;               else
 001E           ;               {
 001E           ;                       PORTB = Flag_L;
 001E           ;                       PORTB = Green_LED_on;   
 001E           ;               }
 001E           ;       }
 001E           ; 
 001E           ; }
 001E           ; 
 001E           ; void Port_initilaze(void)
 001E           ; {
 001E                   .dbline 55
 001E           ;       DDRB = 0xFF;
 001E 8FEF              ldi R24,255
 0020 87BB              out 0x17,R24
 0022                   .dbline 56
 0022           ;       PORTB = 0xFF;
 0022 88BB              out 0x18,R24
 0024                   .dbline -2
 0024                   .dbline 57
 0024           ; }
 0024           L8:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
 0026                   .dbfunc e Timer_initilaze _Timer_initilaze fV
                        .even
 0026           _Timer_initilaze::
 0026                   .dbline -1
 0026                   .dbline 59
 0026           ; void Timer_initilaze(void)
 0026           ; {
 0026                   .dbline 60
 0026           ;       TCCR1A = 0x00;          //普通方式,引脚作IO用
 0026 2224              clr R2
 0028 2FBC              out 0x2f,R2
 002A                   .dbline 61
 002A           ;       TCCR1B = 0x02;          //CK/1024
 002A 82E0              ldi R24,2
 002C 8EBD              out 0x2e,R24
 002E                   .dbline 62
 002E           ;       TCCR1C = 0;
 002E 20927A00          sts 122,R2
 0032                   .dbline 63
 0032           ;       TCNT1 = 0x3d09;
 0032 89E0              ldi R24,15625
 0034 9DE3              ldi R25,61
 0036 90934D00          sts 76+1,R25
 003A 80934C00          sts 76,R24
 003E                   .dbline 64
 003E           ;       TIMSK = 0x04;                   //开放T1溢出中断
 003E 84E0              ldi R24,4
 0040 87BF              out 0x37,R24
 0042                   .dbline 66
 0042           ; 
 0042           ;       SEI();
 0042 7894              sei
 0044                   .dbline -2
 0044                   .dbline 68
 0044           ; 
 0044           ; }
 0044           L9:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbend
 0046                   .dbfunc e Timer_INT _Timer_INT fV
                        .even
 0046           _Timer_INT::
 0046 2A92              st -y,R2
 0048 8A93              st -y,R24
 004A 9A93              st -y,R25
 004C 2FB6              in R2,0x3f
 004E 2A92              st -y,R2
 0050                   .dbline -1
 0050                   .dbline 70
 0050           ; void Timer_INT(void)
 0050           ; {
 0050                   .dbline 71
 0050           ;       TCNT1 = 0x3d09;
 0050 89E0              ldi R24,15625
 0052 9DE3              ldi R25,61
 0054 90934D00          sts 76+1,R25
 0058 80934C00          sts 76,R24
 005C                   .dbline 72
 005C           ;       flag = ~flag;
 005C 20900000          lds R2,_flag
 0060 2094              com R2
 0062 20920000          sts _flag,R2
 0066                   .dbline 73
 0066           ;       PORTB = Green_LED_on;
 0066 C198              cbi 0x18,1
 0068                   .dbline -2
 0068                   .dbline 74
 0068           ; }
 0068           L10:
 0068 2990              ld R2,y+
 006A 2FBE              out 0x3f,R2
 006C 9991              ld R25,y+
 006E 8991              ld R24,y+
 0070 2990              ld R2,y+
 0072                   .dbline 0 ; func end
 0072 1895              reti
 0074                   .dbend

⌨️ 快捷键说明

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