📄 time0.lis
字号:
.module time0.c
.area data(ram, con, rel)
0000 _i::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
0001 .dbsym e i _i c
0001 _timecount::
0001 .blkb 2
.area idata
0001 0000 .word 0
.area data(ram, con, rel)
0003 .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
0003 .dbsym e timecount _timecount i
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 2007-3-8 22:08:41
0000 ; // Target : M8
0000 ; // Crystal: 1.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include <stdio.h>
0000 ;
0000 ; char i=0;
0000 ; unsigned int timecount=0;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 13
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 14
0004 ; DDRB = 0xFF;
0004 87BB out 0x17,R24
0006 .dbline 15
0006 ; PORTC = 0x7F; //m103 output only
0006 8FE7 ldi R24,127
0008 85BB out 0x15,R24
000A .dbline 16
000A ; DDRC = 0x00;
000A 2224 clr R2
000C 24BA out 0x14,R2
000E .dbline 17
000E ; PORTD = 0xFF;
000E 8FEF ldi R24,255
0010 82BB out 0x12,R24
0012 .dbline 18
0012 ; DDRD = 0xFF;
0012 81BB out 0x11,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 25
0016 ; }
0016 ;
0016 ; //TIMER0 initialize - prescale:8
0016 ; // desired value: 1Hz
0016 ; // actual value: Out of range
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 26
0016 ; TCCR0 = 0x00; //stop
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 27
001A ; TCNT0 = 6 /*INVALID SETTING*/; //set count
001A 86E0 ldi R24,6
001C 82BF out 0x32,R24
001E .dbline 28
001E ; TCCR0 = 0x02; //start timer
001E 82E0 ldi R24,2
0020 83BF out 0x33,R24
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area vector(rom, abs)
.org 18
0012 12C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0024 .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
0024 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0024 _timer0_ovf_isr::
0024 2A92 st -y,R2
0026 3A92 st -y,R3
0028 8A93 st -y,R24
002A 9A93 st -y,R25
002C EA93 st -y,R30
002E 2FB6 in R2,0x3f
0030 2A92 st -y,R2
0032 .dbline -1
0032 .dbline 34
0032 .dbline 44
0032 80910100 lds R24,_timecount
0036 90910200 lds R25,_timecount+1
003A 0196 adiw R24,1
003C 90930200 sts _timecount+1,R25
0040 80930100 sts _timecount,R24
0044 883E cpi R24,232
0046 E3E0 ldi R30,3
0048 9E07 cpc R25,R30
004A 69F4 brne L4
004C .dbline 45
004C .dbline 46
004C 80E8 ldi R24,128
004E 90E0 ldi R25,0
0050 22B2 in R2,0x12
0052 3324 clr R3
0054 2826 eor R2,R24
0056 3926 eor R3,R25
0058 22BA out 0x12,R2
005A .dbline 47
005A 2224 clr R2
005C 3324 clr R3
005E 30920200 sts _timecount+1,R3
0062 20920100 sts _timecount,R2
0066 .dbline 48
0066 L4:
0066 .dbline -2
0066 L3:
0066 2990 ld R2,y+
0068 2FBE out 0x3f,R2
006A E991 ld R30,y+
006C 9991 ld R25,y+
006E 8991 ld R24,y+
0070 3990 ld R3,y+
0072 2990 ld R2,y+
0074 .dbline 0 ; func end
0074 1895 reti
0076 .dbend
0076 .dbfunc e init_devices _init_devices fV
.even
0076 _init_devices::
0076 .dbline -1
0076 .dbline 54
0076 ;
0076 ; }
0076 ;
0076 ; #pragma interrupt_handler timer0_ovf_isr:10
0076 ; void timer0_ovf_isr(void)
0076 ; {
0076 ; //TCNT0 = 6 /*INVALID SETTING*/; //reload counter value
0076 ; /* if(i<10) //i决定循环基准时间的次数
0076 ; {TCNT0=0X3A; //重设初始值 100ms
0076 ; i++; //累加基准时间
0076 ; }
0076 ; else
0076 ; {PORTD^=BIT(0); //翻转PD口电平
0076 ; i=0; //定时全局变量恢复初始值
0076 ; } */
0076 ; if(++timecount==1000)
0076 ; {
0076 ; PORTD=PORTD^0x80;
0076 ; timecount=0;
0076 ; }
0076 ; }
0076 ;
0076 ;
0076 ; //call this routine to initialize all peripherals
0076 ; void init_devices(void)
0076 ; {
0076 .dbline 56
0076 ; //stop errant interrupts until set up
0076 ; CLI(); //disable all interrupts
0076 F894 cli
0078 .dbline 57
0078 ; timer0_init();
0078 CEDF rcall _timer0_init
007A .dbline 58
007A ; port_init();
007A C2DF rcall _port_init
007C .dbline 60
007C ;
007C ; MCUCR = 0x00;
007C 2224 clr R2
007E 25BE out 0x35,R2
0080 .dbline 61
0080 ; GICR = 0x00;
0080 2BBE out 0x3b,R2
0082 .dbline 62
0082 ; TIMSK = 0x01; //timer interrupt sources
0082 81E0 ldi R24,1
0084 89BF out 0x39,R24
0086 .dbline 63
0086 ; SEI(); //re-enable interrupts
0086 7894 sei
0088 .dbline -2
0088 L6:
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbend
008A .dbfunc e main _main fV
.even
008A _main::
008A .dbline -1
008A .dbline 69
008A ; //all peripherals are now initialized
008A ; }
008A ;
008A ; //
008A ; void main(void)
008A ; {
008A .dbline 79
008A ; /*TCCR0=0X05; //时钟1024分频
008A ; TCNT0=0X3A; //定时器计数初始值 100ms
008A ; TIMSK=0X01; //允许定时器0中断
008A ; SEI(); //开全局中断
008A ; DDRB=0XFF;
008A ; DDRD=0XFF;
008A ; PORTB=0Xff;
008A ; PORTD=0XFF; */
008A ;
008A ; init_devices();
008A F5DF rcall _init_devices
008C L8:
008C .dbline 80
008C L9:
008C .dbline 80
008C FFCF rjmp L8
008E X0:
008E .dbline -2
008E L7:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -