📄 time01.s
字号:
.module time01.c
.area vector(rom, abs)
.org 18
rjmp _TIME0
.area data(ram, con, rel)
_i::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\ICCAVR编程学习\步进电机驱动\time01.c
.dbsym e i _i c
.area text(rom, con, rel)
.dbfile E:\ICCAVR编程学习\步进电机驱动\time01.c
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 18
; /*AD转换需要隔段时间采样一次,用这个方法可以粗略实现1秒定时,
; 我也时刚刚学习AVR 吧刚做的拿出来和新入门的朋友分享 或许有
; 帮助。存在问题的地方还请朋友门多斧正。*/
;
; //***********************************
; //函数功能:基准时间100MS 总计定时1S
; //编译器类型及版本:ICCAVR 6.31
;
; /************************************************************************/
;
; #include<iom8v.h> //包含定义ATmega8寄存器的头文件
; #include<macros.h> //包含一些常用的宏定义
; #pragma interrupt_handler TIME0:10 //中断向量号码
; char i=0; //调整累加基准定时次数的全局变量
; //***********************************************************************/
; //主函数
; void main()
; {TCCR0=0X05; //时钟1024分频
.dbline 18
ldi R24,5
out 0x33,R24
.dbline 19
; TCNT0=0X3A; //定时器计数初始值 100ms
ldi R24,58
out 0x32,R24
.dbline 20
; TIMSK=0X01; //允许定时器0中断
ldi R24,1
out 0x39,R24
.dbline 21
; SEI(); //开全局中断
sei
.dbline 22
; DDRB=0XFF;
ldi R24,255
out 0x17,R24
.dbline 23
; DDRD=0XFF;
out 0x11,R24
.dbline 24
; PORTB=0Xff;
out 0x18,R24
.dbline 25
; PORTD=0XFF;
out 0x12,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e TIME0 _TIME0 fV
.even
_TIME0::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 30
; }
; //***********************************************************************/
; //定时器中断函数
; void TIME0()
; {if(i<20) //i决定循环基准时间的次数
.dbline 30
lds R24,_i
cpi R24,20
brsh L3
.dbline 31
; {TCNT0=0X3A; //重设初始值 100ms
.dbline 31
ldi R24,58
out 0x32,R24
.dbline 32
; i++; //累加基准时间
lds R24,_i
subi R24,255 ; addi 1
sts _i,R24
.dbline 33
; }
rjmp L4
L3:
.dbline 35
.dbline 35
ldi R24,1
in R2,0x12
eor R2,R24
out 0x12,R2
.dbline 36
clr R2
sts _i,R2
.dbline 37
L4:
.dbline -2
L2:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -