📄 time01.lis
字号:
.module time01.c
.area vector(rom, abs)
.org 18
0012 0DC0 rjmp _TIME0
.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编程学习\步进电机驱动\time01.c
0001 .dbsym e i _i c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR编程学习\步进电机驱动\time01.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 18
0000 ; /*AD转换需要隔段时间采样一次,用这个方法可以粗略实现1秒定时,
0000 ; 我也时刚刚学习AVR 吧刚做的拿出来和新入门的朋友分享 或许有
0000 ; 帮助。存在问题的地方还请朋友门多斧正。*/
0000 ;
0000 ; //***********************************
0000 ; //函数功能:基准时间100MS 总计定时1S
0000 ; //编译器类型及版本:ICCAVR 6.31
0000 ;
0000 ; /************************************************************************/
0000 ;
0000 ; #include<iom8v.h> //包含定义ATmega8寄存器的头文件
0000 ; #include<macros.h> //包含一些常用的宏定义
0000 ; #pragma interrupt_handler TIME0:10 //中断向量号码
0000 ; char i=0; //调整累加基准定时次数的全局变量
0000 ; //***********************************************************************/
0000 ; //主函数
0000 ; void main()
0000 ; {TCCR0=0X05; //时钟1024分频
0000 .dbline 18
0000 85E0 ldi R24,5
0002 83BF out 0x33,R24
0004 .dbline 19
0004 ; TCNT0=0X3A; //定时器计数初始值 100ms
0004 8AE3 ldi R24,58
0006 82BF out 0x32,R24
0008 .dbline 20
0008 ; TIMSK=0X01; //允许定时器0中断
0008 81E0 ldi R24,1
000A 89BF out 0x39,R24
000C .dbline 21
000C ; SEI(); //开全局中断
000C 7894 sei
000E .dbline 22
000E ; DDRB=0XFF;
000E 8FEF ldi R24,255
0010 87BB out 0x17,R24
0012 .dbline 23
0012 ; DDRD=0XFF;
0012 81BB out 0x11,R24
0014 .dbline 24
0014 ; PORTB=0Xff;
0014 88BB out 0x18,R24
0016 .dbline 25
0016 ; PORTD=0XFF;
0016 82BB out 0x12,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e TIME0 _TIME0 fV
.even
001A _TIME0::
001A 2A92 st -y,R2
001C 8A93 st -y,R24
001E 9A93 st -y,R25
0020 2FB6 in R2,0x3f
0022 2A92 st -y,R2
0024 .dbline -1
0024 .dbline 30
0024 ; }
0024 ; //***********************************************************************/
0024 ; //定时器中断函数
0024 ; void TIME0()
0024 ; {if(i<20) //i决定循环基准时间的次数
0024 .dbline 30
0024 80910000 lds R24,_i
0028 8431 cpi R24,20
002A 40F4 brsh L3
002C .dbline 31
002C ; {TCNT0=0X3A; //重设初始值 100ms
002C .dbline 31
002C 8AE3 ldi R24,58
002E 82BF out 0x32,R24
0030 .dbline 32
0030 ; i++; //累加基准时间
0030 80910000 lds R24,_i
0034 8F5F subi R24,255 ; addi 1
0036 80930000 sts _i,R24
003A .dbline 33
003A ; }
003A 07C0 rjmp L4
003C L3:
003C .dbline 35
003C .dbline 35
003C 81E0 ldi R24,1
003E 22B2 in R2,0x12
0040 2826 eor R2,R24
0042 22BA out 0x12,R2
0044 .dbline 36
0044 2224 clr R2
0046 20920000 sts _i,R2
004A .dbline 37
004A L4:
004A .dbline -2
004A L2:
004A 2990 ld R2,y+
004C 2FBE out 0x3f,R2
004E 9991 ld R25,y+
0050 8991 ld R24,y+
0052 2990 ld R2,y+
0054 .dbline 0 ; func end
0054 1895 reti
0056 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -