📄 1stimer1.s
字号:
.module _1STimer1.c
.area text(rom, con, rel)
.dbfile E:\ProductPro\M16SD\ICCAVR\TIMER\1STimer1\1STimer1.c
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 9
;
; #include <iom16v.h>
; #include <macros.h>
;
; #define DISP_DDR DDRD
; #define DISP_PORT PORTD
;
; void timer1_init(void)
; {
.dbline 10
; TCCR1B = 0x00; //stop timer
clr R2
out 0x2e,R2
.dbline 12
;
; TCNT1H = 0xE3; //设置 TC1 的 计数寄存器 高8位值
ldi R24,227
out 0x2d,R24
.dbline 13
; TCNT1L = 0xE1; //设置 TC1 的 计数寄存器 低8位值
ldi R24,225
out 0x2c,R24
.dbline 24
;
; //OCR1AH = 0x1C; //设置 TC1 的 输出比较寄存器A 高8位值
; //OCR1AL = 0x20; //设置 TC1 的 输出比较寄存器A 低8位值
;
; //OCR1BH = 0x1C; //设置 TC1 的 输出比较寄存器B 高8位值
; //OCR1BL = 0x20; //设置 TC1 的 输出比较寄存器B 低8位值
;
; //ICR1H = 0x1C; //设置 TC1 的 输入捕获寄存器 高8位值
; //ICR1L = 0x20; //设置 TC1 的 输入捕获寄存器 低8位值
;
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 25
; TCCR1B = 0x05; //设置TC1 为 CLK/1024分频,启动TC1
ldi R24,5
out 0x2e,R24
.dbline 27
;
; MCUCR = 0x00; //设置 MCU 的 控制寄存器
out 0x35,R2
.dbline 28
; GICR = 0x00; //设置 中断控制寄存器
out 0x3b,R2
.dbline 29
; TIMSK = 0x04; //设置 定时计数器 的 屏蔽寄存器
ldi R24,4
out 0x39,R24
.dbline -2
.dbline 31
; //SEI(); //enable interrupts
; }
L1:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 32
jmp _timer1_ovf_isr
.area text(rom, con, rel)
.dbfile E:\ProductPro\M16SD\ICCAVR\TIMER\1STimer1\1STimer1.c
.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
_timer1_ovf_isr::
st -y,R24
st -y,R25
in R24,0x3f
st -y,R24
.dbline -1
.dbline 35
;
; #pragma interrupt_handler timer1_ovf_isr:9
; void timer1_ovf_isr(void)
; {
.dbline 36
; TCNT1H = 0xE3; //reload counter high value
ldi R24,227
out 0x2d,R24
.dbline 37
; TCNT1L = 0xE1; //reload counter low value
ldi R24,225
out 0x2c,R24
.dbline 38
; DISP_PORT++;
in R24,0x12
subi R24,255 ; addi 1
out 0x12,R24
.dbline -2
.dbline 39
; }
L2:
ld R24,y+
out 0x3f,R24
ld R25,y+
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 42
;
; void main(void)
; {
.dbline 43
; DISP_DDR = 0XFF;
ldi R24,255
out 0x11,R24
.dbline 44
; timer1_init();
xcall _timer1_init
.dbline 45
; SEI();
sei
L4:
.dbline 46
L5:
.dbline 46
xjmp L4
X0:
.dbline -2
.dbline 47
; while(1);
; }
L3:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -