Initializing the MSP50C6xx

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

6-6

Page 360
Image 360
Texas Instruments MSP50C6xx manual JNZ Itsacpart Itsappart