;*******************************************************************************
;* Function: max6951_init
;*
;* Sets the correct SPI modes for talking to the MAX6951, enables SPI, and
;*
;* initializes the MAX6951 to display 8 0s.
;*
;* Input: None.
;*
;* Output: None.
;*
;* Destroys: ACC, A[0] -- A[10], PSF
;*
;*******************************************************************************
MAX6951_INIT:
; SET SPI BAUD RATE
MOVE A[0], #2400H ; SYSTEM CLOCK IS 16,000,000 HZ
MOVE A[1], #00F4H
MOVE A[2], #4240H ; DESIRED BAUD RATE IS 1,000,000 HZ
MOVE A[3], #000FH
CALL SPI_SETBAUDRATE
; SET THE APPROPRIATE MODES FOR THE 6951
MOVE C, #SPI_IDLE_LOW ; IDLE = LOW
CALL SPI_SETCLOCKPOLARITY
MOVE C, #SPI_ACTIVE_EDGE ; ACTIVE = RISING EDGE
CALL SPI_SETCLOCKPHASE
MOVE C, #SPI_LENGTH_16 ; ALWAYS TRANSFER 16 BITS
CALL SPI_SETCHARACTERLENGTH
MOVE C, #SPI_MASTER_MODE ; MAXQ2000 IS THE MASTER, MAX6951 IS THE SLAVE
CALL SPI_SETMODE
; ENABLE SPI
MOVE C, #1
CALL SPI_ENABLE
; SHUTDOWN MAX6951 DISPLAY FIRST
CALL MAX6951_SHUTDOWN
; SET MAX6951 IN HEXADECIMAL DECODE MODE
MOVE ACC, #MAX6951REG_DECODE
SLA4
SLA4
OR #0FFH ; HEXADECIMAL DECODE
CALL MAX6951_TRANSMIT
; SET DISPLAY INTENSITY = 16/16
MOVE ACC, #MAX6951REG_INTENSITY
SLA4
SLA4
OR #0FH ; INTENSITY = 16/16
CALL MAX6951_TRANSMIT
; SCAN LIMIT = 7
MOVE ACC, #MAX6951REG_SCANLIMIT
SLA4
SLA4
OR #07H ; SCAN LIMIT = 7





