An118 – Cirrus Logic AN118 User Manual
Page 13

AN118
AN118REV2
13
P3 = 0xFF;
/*Use the alternative function of Port 3*/
EA = 0x00;
/*Disable all interrupts*/
SCON = 0x72;
/*8 bit UART*/
/*Set TI to enable TXSER UART function*/
/*Transmission Rate is 9600,N,8,1*/
TMOD = 0x20;
/*Use TIMER1, 8-bit auto-reload */
TH1 = 0xFD;
/*Initialize Auto-reload to FD for 11.059MHz external clock*/
PCON = 0x00;
/*when set we run at 19200 Baud, 9600 when clear*/
TCON = 0X40;
/*Turn internal UART timer on*/
for(j=0;j<2047;j++){
/*Delay 2048 SCLK cycles, ... */
SCLK = 0x01;
/*to allow oscillator to start*/
SCLK = 0x00;
}
/*Reset Serial Port*/
SDI = 1;
/*SET SDI PIN*/
for(j=0;j<254;j++) {
SCLK = 0x01;
/*SET SCLK*/
SCLK = 0x00;
/*CLR SCLK*/
}
SDI = 0;
/*RESET SDI PIN*/
SCLK = 0x01;
/*SET SCLK*/
SCLK = 0x00;
/*CLR SCLK*/
mode = P0 & 0x01;
/*Test Mode Pin*/
/*if Mode = 0, three wire mode ...*/
/*if Mode = 1, four wire mode. ...*/
/* NOTE: To change mode board must be Reset.*/
}
/**************************************************************/
/* Routine - write_to_register
*/
/* Input - command, low, mid, high
*/
/* Output - none
*/
/* Description - This routine is used to write to any internal
*/
/* register.
*/
/**************************************************************/
void write_to_register(char command,char low,char mid,char high){
if(mode == 1) P1 = 0xF4;
/* Clear CSb */
transfer_byte(command);
transfer_byte(high);
transfer_byte(mid);
transfer_byte(low);
if(mode == 1) P1 = 0xF5;
/* Set CSb */
}