📄 tc1_timer.asm
字号:
chip sn8p2758
.data
acc_buf ds 1
pflag_buf ds 1
TC1_buf ds 1
.code
org 00h
jmp main
org 08h
jmp isr
org 10h
//============================================================================
// timer TC1 --> internal clock and auto re-load
//============================================================================
main:
mov a,#00h
b0mov TC1_buf,a
b0bclr ftc1enb
mov a,#20h //Fcpu/64
b0mov tc1m,a
mov a,#64h //10ms interrupt Once
b0mov tc1c,a
b0mov tc1r,a
//=============================================================================
b0bset faload1 //enable auto re-load
//=============================================================================
b0bset ftc1enb // Enable Tc1 timer
b0bset ftc1ien // Enable Tc1 interrupt
b0bclr ftc1irq // Clean Tc1 interrupt request flag
b0bset fgie // all interrupt operation
main10:
//==================================================================
//
// User code
//
//==================================================================
jmp main10
//===============================================================================================
// TC1 set 10ms interval time for TC1 interrupt. X'tal:4M Fcpu=Fosc/4 TC1RATE=010 (Fcpu/64)
//===============================================================================================
//
// TC1 initial value = 256-(TC1 interrupt interval time*clocl)
// = 256-(10ms*4MHz /4 /64)
// = 256-(0.01*4*1000000/4/64)
// = 100
// = 64H
//
isr:
mov acc_buf,a // Push ACC to buffer
mov a,pflag
b0mov pflag_buf,a // Push PFLAG to buffer
isr_adc:
b0bts1 ftc1ien // Check tc1ien
jmp isr90
b0bts1 ftc1irq // Check tc1irp
jmp isr90
b0bclr ft0irq
mov a,TC1_buf
add a,#01h // 10ms add one time
b0mov TC1_buf,a
isr90:
mov a,pflag_buf
b0mov pflag,a // Pop pflag_buf to pflag
mov a,acc_buf // Pop acc_buf to acc
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -