參考資訊:
https://programmer.group/stm8s-timer-basic-interrupt-timing.html
暫存器
main.s
.equ PB_ODR, 0x5005 .equ PB_IDR, 0x5006 .equ PB_DDR, 0x5007 .equ PB_CR1, 0x5008 .equ PB_CR2, 0x5009 .equ TIM4_CR1, 0x5340 .equ TIM4_PSCR, 0x5347 .equ TIM4_ARR, 0x5348 .equ TIM4_CNTR, 0x5346 .equ TIM4_IER, 0x5343 .equ TIM4_SR, 0x5344 .area data .area initialized cnt: .ds 2 .area sseg .area home int main int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int 0 int timer4_handler .area cseg main: mov PB_DDR, #0x20 mov PB_CR1, #0x20 mov TIM4_PSCR, #0x00 mov TIM4_ARR, #0xff mov TIM4_CNTR, #0x00 mov TIM4_IER, #0x01 mov TIM4_SR, #0x01 mov TIM4_CR1, #0x81 bset PB_ODR, #5 mov cnt, #0x0000 rim loop: jp loop timer4_handler: mov TIM4_SR, #0 ldw x, cnt incw x ldw cnt, x cpw x, #1000 jrne exit mov cnt, #0x0000 bcpl PB_ODR, #5 exit: iret
完成