📄 timer2.lis
字号:
.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 + -