微處理器 - Lattice GAL22V10 - Assembly - LED



參考資訊:
https://www.stcmicro.com/datasheet/STC15F204EA-cn.pdf

Register



main.s

    .org 0h
    jmp _start
   
    .org 100h
_start:
    setb p1.1
    call delay_1s
    clr p1.1
    call delay_1s
    jmp _start
  
    ; 1t + ((1t + (4t * 250) + 4t) * 200t) + 4t = 201005t
    ; 11.0592MHz = 0.09042us
    ; 201005t * 0.09042us = 18175us
delay_18ms: 
    mov r7, #200
d0:
    mov r6, #250
d1: 
    djnz r6, d1
    djnz r7, d0
    ret
 
    ; 1t + ((4t + 201005t + 4t) * 55) + 4t = 11055720t
    ; 11055720t * 0.09042us = 999658us ~= 1s
delay_1s: 
    mov r5, #55
d2: 
    call delay_18ms
    djnz r5, d2
    ret
    .end

編譯、燒錄

$ mcu8051ide --compile main.s
$ sudo stcgal -P stc15 -p /dev/ttyUSB0 -l 9600 -b 9600 -t 11059 main.hex
    Waiting for MCU, please cycle power: done
    Target model:
      Name: STC15W204S
      Magic: F514
      Code flash: 4.0 KB
      EEPROM flash: 1.0 KB
    Target frequency: 11.059 MHz
    Target BSL version: 7.2.5T
    Target wakeup frequency: 36.931 KHz
    Target options:
      reset_pin_enabled=False
      clock_source=internal
      clock_gain=high
      watchdog_por_enabled=False
      watchdog_stop_idle=True
      watchdog_prescale=64
      low_voltage_reset=False
      low_voltage_threshold=3
      eeprom_lvd_inhibit=False
      eeprom_erase_enabled=True
      bsl_pindetect_enabled=False
      por_reset_delay=long
      rstout_por_state=high
      uart2_passthrough=False
      uart2_pin_mode=normal
      cpu_core_voltage=unknown
    Loading flash: 284 bytes (Intel HEX)
    Trimming frequency: 11.035 MHz
    Switching to 9600 baud: done
    Erasing flash: done
    Writing flash: 576 Bytes [00:00, 732.75 Bytes/s]                                                                                                                                                                   
    Finishing write: done
    Setting options: done
    Target UID: F514015506E7D8
    Disconnected!

完成