Texas Instruments MSP50C6xx User Manual
Page 360
Initializing the MSP50C6xx
6-6
mov ap0,0
;clear accum pointer 0
mov ap1,0
;clear accum pointer 1
mov ap2,0
;clear accum pointer 2
mov ap3,0
;clear accum pointer 3
mov r0,0
;clear register 0
mov r1,0
;clear register 1
mov r2,0
;clear register 2
mov r3,0
;clear register 3
mov r4,0
;clear register 4
mov r5,0
;clear register 5
mov r6,0
;clear register 6
mov r7,0
;clear register 7
mov sv,0
;clear shift value register
mov TOS,*0x000
;clear top of stack register
mov PH,*0x000
;clear product high register
mov MR,*0x000
;clear multiplier register
;****************************************************************
; Choose the source for the reference oscillator. Set the PLLM
; register accordingly (in this case for a CPU clock of 8 MHz)
; and then set TIMER 2 to a 200 ms period.
; Go to sleep (do an IDLE) and wake up when the clock has
; reached full speed and is stable.
;****************************************************************
#if CRO_FLAG
mov a0,CROENABLE
;enable crystal oscillator
#else ;Use BIST to determine P or C part
;––––– BOB 5/00 –––––
IN A0,0x2F ;On uninitialized P parts, port
0x2F is zero
andb
a0,0xff
;only want lower 8 bits
JNZ ITS_A_C_PART
ITS_A_P_PART
mov A0,RESISTORTRIM
;for P614 the user supplies the trim value
jmp setup_trim ;Now set up the trim in ClkSpdCtrl
ITS_A_C_PART
in A0,RTRIM ;for C614 read trim value from
register
;––––– BOB 5/00 –––––
setup_trim
and a0,0x3f
;only want lower 6 bits
mov a0~,a0
;save a copy for later
mov sv,10
;need to shift left by 10
shltpl a0,a0
;bit 1 is now bit 11, bit 0 now bit 10
or
a0,RTOENABLE
;enable resistor–trimmed oscillator
and a0,~IDLEBIT
;clear bit 10
; GJM 1.10.99
; 6 bit trim resides in bits 15–11 and bit 9 (LSB of trim value)
and a0~,a0~,0x01
;look at bit 0 of trim value
jz
trimbit0
;do nothing if it is zero
or
a0,0x0200
;else set bit 9
trimbit0
#endif