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

📄 timer0.lis

📁 protues_atmeg8学习之:timer篇源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Timer0.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0/Delay.h
 0000                   .dbfunc e delay_1ms _delay_1ms fV
 0000           ;              i -> R16,R17
                        .even
 0000           _delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 3
 0000           ; /******************************************/
 0000           ; //文件名:Timer0.c
 0000           ; //功能: T/C0和INT0的应用
 0000                   .dbline 5
 0000           ; //作者:  young
 0000           ; //时间: 2006.10.1
 0000 01E0              ldi R16,1
 0002 10E0              ldi R17,0
 0004 02C0              rjmp L5
 0006           L2:
 0006                   .dbline 6
 0006           L3:
 0006                   .dbline 5
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 5
 000A 0637              cpi R16,118
 000C E4E0              ldi R30,4
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012                   .dbline 7
 0012           ; //目标MCU:ATmega8   
 0012           ; //晶振:  8MHZ
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 i
 0014                   .dbend
 0014                   .dbfunc e delay_ms _delay_ms fV
 0014           ;              i -> R20,R21
 0014           ;              n -> R22,R23
                        .even
 0014           _delay_ms::
 0014 00D0              rcall push_gset2
 0016 B801              movw R22,R16
 0018                   .dbline -1
 0018                   .dbline 11
 0018           ; /******************************************/
 0018           ; #include <iom8v.h>
 0018           ; #include <macros.h>
 0018           ; #include "Delay.h"
 0018                   .dbline 12
 0018           ; 
 0018 4427              clr R20
 001A 5527              clr R21
 001C 03C0              rjmp L8
 001E           L7:
 001E                   .dbline 14
 001E                   .dbline 15
 001E F0DF              rcall _delay_1ms
 0020                   .dbline 16
 0020 4F5F              subi R20,255  ; offset = 1
 0022 5F4F              sbci R21,255
 0024                   .dbline 17
 0024           L8:
 0024                   .dbline 13
 0024           ; unsigned char KeyDown;   //全局变量,用来记录按键按下次数
 0024 4617              cp R20,R22
 0026 5707              cpc R21,R23
 0028 D0F3              brlo L7
 002A                   .dbline -2
 002A                   .dbline 18
 002A           ; unsigned char CountNum;  //记录T/C0中断,每中断一次是1/500S
 002A           ; unsigned char TimeNum[3]={0, 0, 0}; //记录中断时间,分,秒,百分秒
 002A           ; 
 002A           ; //初始化端口
 002A           ; void Init_Port(void)
 002A           L6:
 002A 00D0              rcall pop_gset2
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r i 20 i
 002E                   .dbsym r n 22 i
 002E                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0/Delay.h
 0000           _TimeNum::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0/Delay.h
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0/Delay.h
 0003                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0\Timer0.C
 0003                   .dbsym e TimeNum _TimeNum A[3:3]c
                        .area text(rom, con, rel)
 002E                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0\Timer0.C
 002E                   .dbfunc e Init_Port _Init_Port fV
                        .even
 002E           _Init_Port::
 002E                   .dbline -1
 002E                   .dbline 19
 002E           ; {
 002E                   .dbline 20
 002E           ;       DDRB=0xFF;        //设置B口为输出模式
 002E 8FEF              ldi R24,255
 0030 87BB              out 0x17,R24
 0032                   .dbline 21
 0032           ;       PORTB=0xFF;       //置高电平
 0032 88BB              out 0x18,R24
 0034                   .dbline 22
 0034           ;       DDRC=0x7F;
 0034 8FE7              ldi R24,127
 0036 84BB              out 0x14,R24
 0038                   .dbline 23
 0038           ;       PORTC=0x7F;
 0038 85BB              out 0x15,R24
 003A                   .dbline 24
 003A           ;       DDRD|=0x03;
 003A 81B3              in R24,0x11
 003C 8360              ori R24,3
 003E 81BB              out 0x11,R24
 0040                   .dbline 25
 0040           ;       PORTD=0xFF;
 0040 8FEF              ldi R24,255
 0042 82BB              out 0x12,R24
 0044                   .dbline -2
 0044                   .dbline 26
 0044           ; }
 0044           L10:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbend
 0046                   .dbfunc e Init_Int _Init_Int fV
                        .even
 0046           _Init_Int::
 0046                   .dbline -1
 0046                   .dbline 30
 0046           ; 
 0046           ; //初始化外部中断
 0046           ; void Init_Int(void)
 0046           ; {
 0046                   .dbline 31
 0046           ;     MCUCR|=0x02;  //INT0下降沿触发
 0046 85B7              in R24,0x35
 0048 8260              ori R24,2
 004A 85BF              out 0x35,R24
 004C                   .dbline 32
 004C           ;       GICR|=0x40;   //打开INT0中断
 004C 8BB7              in R24,0x3b
 004E 8064              ori R24,64
 0050 8BBF              out 0x3b,R24
 0052                   .dbline 33
 0052           ;     GIFR|=0x40;   //清除INT0中断标志位
 0052 8AB7              in R24,0x3a
 0054 8064              ori R24,64
 0056 8ABF              out 0x3a,R24
 0058                   .dbline -2
 0058                   .dbline 34
 0058           ; }
 0058           L11:
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbend
 005A                   .dbfunc e Init_Timer0 _Init_Timer0 fV
                        .even
 005A           _Init_Timer0::
 005A                   .dbline -1
 005A                   .dbline 38
 005A           ; 
 005A           ; //初始化T/C0
 005A           ; void Init_Timer0(void)
 005A           ; {
 005A                   .dbline 39
 005A           ;     TCCR0=0x00;           //T/C0工作于定时方式,先停止T/C0
 005A 2224              clr R2
 005C 23BE              out 0x33,R2
 005E                   .dbline 40
 005E           ;     TCNT0=0x06;           //计数初始值6 
 005E 86E0              ldi R24,6
 0060 82BF              out 0x32,R24
 0062                   .dbline 41
 0062           ;     TIMSK|=(1<<TOIE0);    //开放TOV0中断      
 0062 89B7              in R24,0x39
 0064 8160              ori R24,1
 0066 89BF              out 0x39,R24
 0068                   .dbline -2
 0068                   .dbline 42
 0068           ; }
 0068           L12:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend
                        .area lit(rom, con, rel)
 0000           L14:
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
                        .area text(rom, con, rel)
 006A                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer0\Timer0.C
 006A                   .dbfunc e Display _Display fV
 006A           ;            num -> y+0
 006A           ;              i -> R22
 006A           ;          timer -> R10,R11
                        .even
 006A           _Display::
 006A 00D0              rcall push_gset3
 006C 5801              movw R10,R16
 006E 2A97              sbiw R28,10
 0070                   .dbline -1
 0070                   .dbline 46
 0070           ; 
 0070           ; //显示定时时间
 0070           ; void Display(unsigned char *timer)
 0070           ; {
 0070                   .dbline 47
 0070           ;     unsigned char i=0;        
 0070 6627              clr R22
 0072                   .dbline 48
 0072           ;       unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 
 0072 80E0              ldi R24,<L14
 0074 90E0              ldi R25,>L14
 0076 FE01              movw R30,R28
 0078 0AE0              ldi R16,10
 007A 10E0              ldi R17,0
 007C FA93              st -y,R31
 007E EA93              st -y,R30
 0080 9A93              st -y,R25
 0082 8A93              st -y,R24
 0084 00D0              rcall asgncblk
 0086                   .dbline 51
 0086           ;                              0x6D, 0x7D, 0x07, 0x7F, 0x6F};
 0086           ;     //依次显示"00:00.00"
 0086           ;       for(i=0; i<6; i++)
 0086 32C0              rjmp L18
 0088           L15:
 0088                   .dbline 52
 0088           ;     {             
 0088                   .dbline 53
 0088           ;                PORTC&=~(1<<i);
 0088 01E0              ldi R16,1
 008A 162F              mov R17,R22
 008C 00D0              rcall lsl8
 008E 202E              mov R2,R16
 0090 2094              com R2
 0092 35B2              in R3,0x15
 0094 3220              and R3,R2
 0096 35BA              out 0x15,R3
 0098                   .dbline 54
 0098           ;            switch(i)
 0098 462F              mov R20,R22
 009A 5527              clr R21
 009C 4130              cpi R20,1
 009E E0E0              ldi R30,0
 00A0 5E07              cpc R21,R30
 00A2 29F0              breq L22
 00A4 4330              cpi R20,3
 00A6 E0E0              ldi R30,0
 00A8 5E07              cpc R21,R30
 00AA 09F0              breq L22
 00AC 0DC0              rjmp L19
 00AE           X0:
 00AE                   .dbline 55
 00AE           ;                {
 00AE           L22:
 00AE                   .dbline 58
 00AE           ;                case 1:
 00AE           ;                case 3:
 00AE           ;                         PORTB=num[timer[i]]+0x80;
 00AE E62F              mov R30,R22
 00B0 FF27              clr R31
 00B2 EA0D              add R30,R10
 00B4 FB1D              adc R31,R11
 00B6 E081              ldd R30,z+0
 00B8 FF27              clr R31
 00BA CE01              movw R24,R28
 00BC E80F              add R30,R24
 00BE F91F              adc R31,R25
 00C0 8081              ldd R24,z+0
 00C2 8058              subi R24,128    ; addi 128
 00C4 88BB              out 0x18,R24
 00C6                   .dbline 59
 00C6           ;                         break;                        
 00C6 0BC0              rjmp L20
 00C8           L19:
 00C8                   .dbline 61
 00C8           ;                default:       
 00C8           ;                         PORTB=num[timer[i]];
 00C8 E62F              mov R30,R22
 00CA FF27              clr R31
 00CC EA0D              add R30,R10
 00CE FB1D              adc R31,R11
 00D0 E081              ldd R30,z+0
 00D2 FF27              clr R31
 00D4 CE01              movw R24,R28
 00D6 E80F              add R30,R24
 00D8 F91F              adc R31,R25
 00DA 2080              ldd R2,z+0
 00DC 28BA              out 0x18,R2
 00DE                   .dbline 62
 00DE           ;                         break;
 00DE           L20:
 00DE                   .dbline 64
 00DE 01E0              ldi R16,1
 00E0 10E0              ldi R17,0
 00E2 98DF              rcall _delay_ms
 00E4                   .dbline 65
 00E4 85B3              in R24,0x15
 00E6 8F6F              ori R24,255
 00E8 85BB              out 0x15,R24
 00EA                   .dbline 66
 00EA           L16:
 00EA                   .dbline 51
 00EA 6395              inc R22
 00EC           L18:
 00EC                   .dbline 51
 00EC 6630              cpi R22,6
 00EE 08F4              brsh X1
 00F0 CBCF              rjmp L15
 00F2           X1:
 00F2                   .dbline -2
 00F2                   .dbline 67
 00F2           ;                }              
 00F2           ;                delay_ms(1);
 00F2           ;                PORTC|=0xFF;   
 00F2           ;     }
 00F2           ; }
 00F2           L13:

⌨️ 快捷键说明

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