aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/devices/atmega644pa/words/sleep.asm
blob: 256249ca767fea3221678ec3e0bed796a76a2190 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
; ( mode -- ) 
; MCU
; put the controller into the specified sleep mode
VE_SLEEP:
    .dw $ff05
    .db "sleep", 0
    .dw VE_HEAD
    .set VE_HEAD = VE_SLEEP
XT_SLEEP:
    .dw PFA_SLEEP
PFA_SLEEP:
  andi  tosl, 7        ; leave only legal mode bits
  lsl    tosl        ; move to correct location (bits 3-1)
  ori    tosl, 1        ; set the SE bit
  out_  SMCR, tosl      ; set the sleep config
  sleep            ; nighty-night
  out_  SMCR, zerol      ; 0 protects against accidental sleeps
  loadtos            ; pop argument from stack
  jmp_    DO_NEXT