📄 timer0.s
字号:
.module Timer0.c
.area vector(rom, abs)
.org 18
rjmp _timer0
.area data(ram, con, rel)
L2:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.area text(rom, con, rel)
.dbfile E:\Mega8程序\UART通信\Timer0.c
.dbfunc e timer0 _timer0 fV
.dbsym s LEDnum L2 c
.even
_timer0::
rcall push_lset
.dbline -1
.dbline 7
; /*T/C0作为定时器,触发定时中断,来进行周期性的作业*/
; #include<iom8v.h>
; #include <macros.h>
; extern void spark(unsigned num);
; #pragma interrupt_handler timer0:10
; void timer0(void)
; {static unsigned char LEDnum=0x00;
.dbline 8
; LEDnum++;
lds R24,L2
subi R24,255 ; addi 1
sts L2,R24
.dbline 9
; LEDnum&=0b00000011;//LEDnum在0~3之间循环
andi R24,3
sts L2,R24
.dbline 10
; spark(LEDnum);
mov R16,R24
clr R17
rcall _spark
.dbline 11
; TCNT0=178;}//定时178=10ms
ldi R24,178
out 0x32,R24
.dbline -2
L1:
rcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 14
;
; void timer0_init(void)
; {TIMSK|=0x01;//Timer0中断允许
.dbline 14
in R24,0x39
ori R24,1
out 0x39,R24
.dbline 15
; TCCR0=0x04;//1024分频,8MHz、TCNT0=0x10下,每次中断大约30ms
ldi R24,4
out 0x33,R24
.dbline 16
; TCNT0=178;}//预植16,定时10ms
ldi R24,178
out 0x32,R24
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -