📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
0000 .dbfunc e t1_init _t1_init fV
.even
0000 _t1_init::
0000 .dbline -1
0000 .dbline 18
0000 ; /*
0000 ; 实验七:
0000 ; 定时器T1中断实验。
0000 ; 1、定时器中断实验。定时器产生10mS周期中断,通过计数让PB0电平产生周期变化。
0000 ; 2、内部1 M晶振。
0000 ; 3、进行此实验请插上LED短路块。
0000 ; 4、此实验使用定时器的溢出中断方式,为定时器的最基本方式。
0000 ;
0000 ; AVR mega128学习板 阿发
0000 ; www.iccavr.com
0000 ; 2:15 2007-10-11
0000 ; */
0000 ;
0000 ; #include "iom128v.h"
0000 ; #include <macros.h>
0000 ;
0000 ; /*初始化定时器,产生10mS周期中断*/
0000 ; void t1_init(void) {
0000 .dbline 20
0000 ;
0000 ; OCR1A = 1250; /*计数周期为10mS,F=1M*/
0000 82EE ldi R24,1250
0002 94E0 ldi R25,4
0004 9BBD out 0x2b,R25
0006 8ABD out 0x2a,R24
0008 .dbline 21
0008 ; TIMSK |= (1 << OCIE1A); /*比较中断A允许*/
0008 87B7 in R24,0x37
000A 8061 ori R24,16
000C 87BF out 0x37,R24
000E .dbline 22
000E ; TCCR1A = 0x00;
000E 2224 clr R2
0010 2FBC out 0x2f,R2
0012 .dbline 23
0012 ; TCCR1B = (1 << WGM12); /*定时器工作在CTC计数器模式*/
0012 88E0 ldi R24,8
0014 8EBD out 0x2e,R24
0016 .dbline 24
0016 ; TCCR1B |= (1 << CS11); /*设置定时器的分频值为8分频*/
0016 8EB5 in R24,0x2e
0018 8260 ori R24,2
001A 8EBD out 0x2e,R24
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e io_init _io_init fV
.even
001E _io_init::
001E .dbline -1
001E .dbline 28
001E ; }
001E ;
001E ; /*IO口初始化函数*/
001E ; void io_init(void) {
001E .dbline 30
001E ;
001E ; DDRA = 0x00; /*方向输入*/
001E 2224 clr R2
0020 2ABA out 0x1a,R2
0022 .dbline 31
0022 ; PORTA = 0xFF; /*打开上拉*/
0022 8FEF ldi R24,255
0024 8BBB out 0x1b,R24
0026 .dbline 32
0026 ; DDRB = 0xFF; /*方向输出*/
0026 87BB out 0x17,R24
0028 .dbline 33
0028 ; PORTB = 0xFF; /*输出高电平*/
0028 88BB out 0x18,R24
002A .dbline 34
002A ; DDRC = 0x00; /*不用的IO口建议设置为输入带上拉*/
002A 24BA out 0x14,R2
002C .dbline 35
002C ; PORTC = 0xFF;
002C 85BB out 0x15,R24
002E .dbline 36
002E ; DDRD = 0x00;
002E 21BA out 0x11,R2
0030 .dbline 37
0030 ; PORTD = 0xFF;
0030 82BB out 0x12,R24
0032 .dbline 38
0032 ; DDRE = 0x00;
0032 22B8 out 0x2,R2
0034 .dbline 39
0034 ; PORTE = 0xFF;
0034 83B9 out 0x3,R24
0036 .dbline 40
0036 ; DDRF = 0x00;
0036 20926100 sts 97,R2
003A .dbline 41
003A ; PORTF = 0xFF;
003A 80936200 sts 98,R24
003E .dbline 42
003E ; DDRG = 0x00;
003E 20926400 sts 100,R2
0042 .dbline 43
0042 ; PORTG = 0xFF;
0042 80936500 sts 101,R24
0046 .dbline -2
0046 L2:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
0048 .dbfunc e main _main fV
.even
0048 _main::
0048 .dbline -1
0048 .dbline 46
0048 ; }
0048 ;
0048 ; void main(void) {
0048 .dbline 48
0048 ;
0048 ; io_init();
0048 EADF xcall _io_init
004A .dbline 49
004A ; t1_init();
004A DADF xcall _t1_init
004C .dbline 50
004C ; SEI(); /*全局中断使能*/
004C 7894 sei
004E L4:
004E .dbline 52
004E L5:
004E .dbline 52
004E FFCF xjmp L4
0050 X0:
0050 .dbline -2
0050 L3:
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbend
.area vector(rom, abs)
.org 48
0030 0C942900 jmp _Int_TCCR1A
.area text(rom, con, rel)
0052 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
.area bss(ram, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
0000 L8:
0000 .blkb 1
.area text(rom, con, rel)
0052 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\007-T1-LED\main.c
0052 .dbfunc e Int_TCCR1A _Int_TCCR1A fV
0052 .dbsym s i L8 c
.even
0052 _Int_TCCR1A::
0052 2A92 st -y,R2
0054 8A93 st -y,R24
0056 9A93 st -y,R25
0058 2FB6 in R2,0x3f
005A 2A92 st -y,R2
005C .dbline -1
005C .dbline 57
005C .dbline 61
005C 80910000 lds R24,L8
0060 8F5F subi R24,255 ; addi 1
0062 80930000 sts L8,R24
0066 .dbline 62
0066 84E6 ldi R24,100
0068 20900000 lds R2,L8
006C 8215 cp R24,R2
006E 38F4 brsh L9
0070 .dbline 62
0070 .dbline 63
0070 81E0 ldi R24,1
0072 28B2 in R2,0x18
0074 2826 eor R2,R24
0076 28BA out 0x18,R2
0078 .dbline 64
0078 2224 clr R2
007A 20920000 sts L8,R2
007E .dbline 65
007E L9:
007E .dbline -2
007E L7:
007E 2990 ld R2,y+
0080 2FBE out 0x3f,R2
0082 9991 ld R25,y+
0084 8991 ld R24,y+
0086 2990 ld R2,y+
0088 .dbline 0 ; func end
0088 1895 reti
008A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -