Texas Instruments MSP50C6xx User Manual
Page 346
C– – Efficiency
5-50
inte
iret
Cmm1.asm was modified to include routines for sleeping and speaking from
C– –.
global
_inportD
global
_getSecondsPassed
global
_sleepQuarterSec
global
_speakDays
global
_speakOnes
global
_speakTens
global
_speakTeens
global
_speakAMPM
New C– – callable functions were declared global.
external
sleep_light
external
speak
Assembly routines that will be called are declared external.
include
”speech\celp\days.qfm”
include
”speech\celp\ones.qfm”
include
”speech\celp\teens.qfm”
include
”speech\celp\tens.qfm”
include
”speech\celp\ampm.qfm”
Include statements were used to add speech files for all of the phrases that the
clock will need to say.
_sleepQuarterSec
mov a0,8192 – 1
;setup a 250ms period
out TIM1,a0
;load TIM1 and PRD1
mov a0, TIM1IMR
call
sleep_light
nop
ret
A routine was added to sleep for a quarter second using Timer 1 to wake up.
The program loads the period into the timer 1 period register, sets the wake-up
mask in a0, and calls sleep_light, which is in sleep.asm.
_speakDays
; back up important registers
mov *csave_r5, r5
; protect r5
mov *csave_r3, r3
; protect r3
mov a0, *r7 – 2 ; synthesis table offset
add a0,
_days_table
mov a0, *a0
ZAC A0~
CALL SPEAK
; restore important registers
mov r3, *csave_r3
; restore r3
mov r5, *csave_r5
; restore r5
ret
_days_table ; table for table lookup