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

📄 timer2.lis

📁 protues_atmeg8学习之:timer篇源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Timer2.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer2/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           ; //文件名:Timer2.c
 0000           ; //功能: T/C2和INT0的应用
 0000                   .dbline 5
 0000           ; //作者:  young
 0000           ; //时间: 2006.10.9
 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           ; #define U8 unsigned char 
 0024 4617              cp R20,R22
 0026 5707              cpc R21,R23
 0028 D0F3              brlo L7
 002A                   .dbline -2
 002A                   .dbline 18
 002A           ; #define U16 unsigned int 
 002A           ; 
 002A           ; U8 KeyDown;
 002A           ; 
 002A           ; //初始化端口
 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
 002E                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer2\Timer2.C
 002E                   .dbfunc e init_port _init_port fV
                        .even
 002E           _init_port::
 002E                   .dbline -1
 002E                   .dbline 20
 002E           ; void init_port(void)  
 002E           ; {   
 002E                   .dbline 21
 002E           ;     DDRB  = 0x08; 
 002E 88E0              ldi R24,8
 0030 87BB              out 0x17,R24
 0032                   .dbline 22
 0032           ;     PORTB = 0xFF;
 0032 8FEF              ldi R24,255
 0034 88BB              out 0x18,R24
 0036                   .dbline 23
 0036           ;     PORTC = 0x0F;
 0036 8FE0              ldi R24,15
 0038 85BB              out 0x15,R24
 003A                   .dbline 24
 003A           ;     DDRC  = 0xFF;
 003A 8FEF              ldi R24,255
 003C 84BB              out 0x14,R24
 003E                   .dbline 25
 003E           ;     PORTD = 0x04;
 003E 84E0              ldi R24,4
 0040 82BB              out 0x12,R24
 0042                   .dbline 26
 0042           ;     DDRD |= 0xFF;
 0042 81B3              in R24,0x11
 0044 8F6F              ori R24,255
 0046 81BB              out 0x11,R24
 0048                   .dbline -2
 0048                   .dbline 27
 0048           ; }  
 0048           L10:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e init_int _init_int fV
                        .even
 004A           _init_int::
 004A                   .dbline -1
 004A                   .dbline 31
 004A           ; 
 004A           ; //初始化外部中断
 004A           ; void init_int(void)
 004A           ; {
 004A                   .dbline 32
 004A           ;     MCUCR |= 0x02;   //INT0下降沿触发
 004A 85B7              in R24,0x35
 004C 8260              ori R24,2
 004E 85BF              out 0x35,R24
 0050                   .dbline 33
 0050           ;       GICR  |= 0x40;   //打开INT0中断
 0050 8BB7              in R24,0x3b
 0052 8064              ori R24,64
 0054 8BBF              out 0x3b,R24
 0056                   .dbline 34
 0056           ;     GIFR  |= 0x40;   //清除INT0中断标志位
 0056 8AB7              in R24,0x3a
 0058 8064              ori R24,64
 005A 8ABF              out 0x3a,R24
 005C                   .dbline -2
 005C                   .dbline 35
 005C           ; }
 005C           L11:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbend
 005E                   .dbfunc e init_timer2 _init_timer2 fV
                        .even
 005E           _init_timer2::
 005E                   .dbline -1
 005E                   .dbline 39
 005E           ; 
 005E           ; //初始化T/C2
 005E           ; void init_timer2(void)  
 005E           ; {  
 005E                   .dbline 40
 005E           ;     TCCR2 = 0x00;     //T/C2工作于定时方式,先停止T/C0
 005E 2224              clr R2
 0060 25BC              out 0x25,R2
 0062                   .dbline 41
 0062           ;     TCNT2 = 0x00;     //计数初始值0
 0062 24BC              out 0x24,R2
 0064                   .dbline 42
 0064           ;     OCR2  = 0x00;     //设置比较参考值                
 0064 23BC              out 0x23,R2
 0066                   .dbline 43
 0066           ;     TIMSK&= 0x3F;     //关闭TOV2中断  
 0066 89B7              in R24,0x39
 0068 8F73              andi R24,63
 006A 89BF              out 0x39,R24
 006C                   .dbline -2
 006C                   .dbline 44
 006C           ; }  
 006C           L12:
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbend
 006E                   .dbfunc e init_devices _init_devices fV
                        .even
 006E           _init_devices::
 006E                   .dbline -1
 006E                   .dbline 48
 006E           ; 
 006E           ; //初始化所以硬件 
 006E           ; void init_devices(void)  
 006E           ; {
 006E                   .dbline 49
 006E           ;     CLI();          //关闭全局中断
 006E F894              cli
 0070                   .dbline 50
 0070           ;     init_port();      
 0070 DEDF              rcall _init_port
 0072                   .dbline 51

⌨️ 快捷键说明

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