STM8S103 >> Assembly

Independent watchdog(IWDG)


暫存器


Prescaler


步驟:
1. IWDG_KR(0xcc) > Enable
2. IWDG_KR(0x55) > Unlock IWDG_PR and IWDG_RLR
3. IWDG_KR(0xaa) > Reload IWDG_PR and IWDG_RLR

main.s

  .equ PB_ODR,   0x5005
  .equ PB_IDR,   0x5006
  .equ PB_DDR,   0x5007
  .equ PB_CR1,   0x5008
  .equ PB_CR2,   0x5009
  .equ IWDG_KR,  0x50e0
  .equ IWDG_PR,  0x50e1
  .equ IWDG_RLR, 0x50e2
     
  .area data
  .area sseg
  .area home
  int main
   
  .area cseg
main:
  mov PB_DDR, #0x20
  mov PB_CR1, #0x20

  mov IWDG_KR, #0xcc 
  mov IWDG_KR, #0x55 
  mov IWDG_RLR, #0xff
  mov IWDG_PR, #0x06
  mov IWDG_KR, #0xaa 

loop:
  ld a, PB_ODR
  xor a, #0x20
  ld PB_ODR, a
  ldw x, #5000 
d0:
  decw x
  tnzw x
  jrne d0
  jp loop

編譯、燒錄

$ sdasstm8 -o main.s
$ sdldstm8 -ni -b home=0x8000 -b cseg=0x8080 -b data=0x0001 -b sseg=0xffff main.rel
$ sudo stm8flash -c stlinkv2 -p stm8s103f3 -u
$ sudo stm8flash -c stlinkv2 -p stm8s103f3 -s flash -w main.ihx

觀察LED的變化,即可發現每秒會有一次閃動變化


返回上一頁