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