//******************* S215 Header, Version 22 ***********      S215  10 1031
//**************************************************************************

#define PIC18F45K20 0
#define PIC18F46K20 1

/** C O N F I G U R A T I O N   B I T S ******************************/
#pragma config FOSC = INTIO67, FCMEN = OFF, IESO = OFF                       // CONFIG1H
#pragma config PWRT = OFF, BOREN = OFF, BORV = 30                        // CONFIG2L
#pragma config WDTEN = OFF, WDTPS = 32768                                     // CONFIG2H
#pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = ON, CCP2MX = PORTC       // CONFIG3H
#pragma config STVREN = ON, LVP = OFF, XINST = OFF                          // CONFIG4L
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF                   // CONFIG5L
#pragma config CPB = OFF, CPD = OFF                                         // CONFIG5H
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF               // CONFIG6L
#pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF                           // CONFIG6H
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF           // CONFIG7L
#pragma config EBTRB = OFF                                                  // CONFIG7H

/** I N C L U D E S **************************************************/
#if PIC18F45K20
#include "p18f45k20.h"
#endif

#if PIC18F46K20
#include "p18f46k20.h"
#endif
//------------------------------

/** D E C L A R A T I O N S ***********************************************/


/** D E F I N I T I O N S *************************************************/
#define PB	(~PORTBbits.RB0 & 1)

#define SW0 (PORTCbits.RC0 & 1)
#define SW1 (PORTCbits.RC1 & 1)
#define SW2 (PORTCbits.RC2 & 1)
#define SW3 (PORTCbits.RC3 & 1)
#define SW4 (PORTCbits.RC4 & 1)
#define SW5 (PORTCbits.RC5 & 1)
#define SW6 (PORTCbits.RC6 & 1)
#define SW7 (PORTCbits.RC7 & 1)


#define LED0 LATDbits.LATD0
#define LED1 LATDbits.LATD1
#define LED2 LATDbits.LATD2
#define LED3 LATDbits.LATD3
#define LED4 LATDbits.LATD4
#define LED5 LATDbits.LATD5
#define LED6 LATDbits.LATD6
#define LED7 LATDbits.LATD7

#define LEDS LATD
#define SWITCHES PORTC

/** P R O T O T Y P E S ***************************************************/
void 			ADC_Init(void); //*** OBSOLETE ***
void 			ADCinit(unsigned char channel);
unsigned char 	ADC8msb(void);
unsigned short	ADC10bit(void);
void 			AltDisplay(char, char);
unsigned char 	Bin8bcd(unsigned char);
unsigned short	Bin16bcd(unsigned short value);
unsigned long 	Bin32bcd(unsigned long value);
unsigned char	BtnPrses(unsigned char max, unsigned char flash);
unsigned char	Btnpsrp(unsigned char rp, unsigned char dly, 
				unsigned char max);
				  //*** OBSOLETE ***
void			CalcDeadFullVolts(float ahc, float i, float *fcv, float *fdv);
				  //*** OBSOLETE ***
void 			Clrdisp(void);
float			ConvToRange (float x, float maxx, float miny, float maxy);
void			CountToTimer0(unsigned short count, signed char prescale);
void 			CountToTimer0HS(unsigned short count);
float			DeadFullVolts(float ahc, float i);
void 			Delay10ms(unsigned char dly);
void 			Delay400us(unsigned char dly);
void			DispChars(char a, char b, char c, char d, char e, char f, 
				char g, char h);
void 			DispFP(float n, unsigned char decpl);
unsigned char 	DispModeNo(void); //*** OBSOLETE ***
void 			DispN(unsigned short x, unsigned char nd, unsigned char offset);
void 			DispNDP(unsigned long x, unsigned char nc, 
				unsigned char dpp, unsigned char offset);
void 			DispNmbr(unsigned long x, unsigned char dpp);
unsigned char	DispONOFF(unsigned char dbp);
void			DispS(near rom char *ptr, unsigned char nch, unsigned char offset);
void 			DispSVL(near rom char *ptr, unsigned char offset);
unsigned char	Dlyckbp(unsigned char lpt);
unsigned char 	EEPROM_Read(unsigned short address);
float 			EepromReadFloat(unsigned char indx, unsigned char dp);
unsigned long	EepromReadLong(unsigned short addr);
float			EepromReadSF(unsigned char indx, unsigned char dp);
unsigned short 	EepromReadShort(unsigned short addr);
void 			EEPROM_Write(unsigned short address, unsigned char databyte);
void  			EepromWriteFloat(unsigned char indx, float x, unsigned char dp);
void			EepromWriteLong(unsigned short addr, unsigned long x);
void			EepromWriteSF(unsigned char indx, float x, unsigned char dp);
void 			EepromWriteShort(unsigned short addr, unsigned short x);
void			EightChar(unsigned char a, unsigned char b, unsigned char c,
					unsigned char d, unsigned char e, unsigned char f,
					unsigned char g,unsigned char h);
void			Error(void);
void			ErrorN(unsigned short);
void			ErrorReadOut(unsigned short eepromblock, float errordatavalue);
void			ErrorStore(unsigned short eepromblock, unsigned char errno,
					float datavalue, unsigned char reset);
unsigned short	GetChordNote(unsigned char key, unsigned char chord,
					unsigned char note, short *array, unsigned char numkeys,
					unsigned char numchords, unsigned char numnotes);
float			Getcv(unsigned char inno);
unsigned char 	GetModeNo(unsigned char mgn, unsigned char mnfp, unsigned char flash);
unsigned char	GetModeToggleDisplay(unsigned char maxmodeno);
unsigned char	Gmabs (unsigned char maxmode, unsigned char *sbpp,
				 unsigned char *dbpp, unsigned char *lbpp);
unsigned char	Gmadisp(unsigned char lbp, unsigned char mode, unsigned char maxmode);
unsigned char	Gmnbp(unsigned char mnfp);
void 			InitIO(void);
void			InitPorts(void);
void 			InitRunAvg0(signed short x);
float 			Interpolate(float x1, float y1, float x2, float y2, float x);
unsigned char 	IsTimer0Finished(void);
unsigned char 	Le(unsigned char);
unsigned char 	Lem(unsigned char, unsigned char);
float 			Lkup8interp(float x, near rom unsigned char *ptr, unsigned char tblsize);
unsigned char 	Lookup8(unsigned char i, near rom unsigned char *ptr);
unsigned char 	Lsbp (unsigned char);
unsigned char 	Min(unsigned char, unsigned char, unsigned char); //*** OBSOLETE ***
float 			Minf(float x, unsigned char mode, unsigned char minno);
unsigned char 	Max(unsigned char, unsigned char, unsigned char); //*** OBSOLETE ***
unsigned short	Maximum(unsigned short x, unsigned char mode, unsigned char maxno);
float 			Maxf(float x, unsigned char mode, unsigned char maxno);
unsigned short	Minimum(unsigned short x, unsigned char mode, unsigned char minno);
unsigned short	Mn0(unsigned short x);
unsigned char	ModeFromPot(unsigned char mnfp);
void 			MsToT0(unsigned short t);
unsigned short 	Mx0(unsigned short x);
void			N16UsToTimer0(unsigned short pulses); //OBSOLETE
unsigned char	PBd(void);
unsigned char	PBdb(unsigned char dly);
unsigned char	PBdl(void);
unsigned char	PositionInSeq(unsigned short num, unsigned char seqlength);
unsigned char	PotMoved(char tolerance);
void 			RstMinMax0(void);
signed short 	Runavg(signed short x, unsigned char nvta, unsigned char varno,
				unsigned char preset);
signed short 	Runavg0(signed short x);
void			Scand(unsigned char chr, unsigned char column);
void 			Sdand(unsigned char digit, unsigned char column);
void 			SetTimer0(unsigned char);
unsigned char	SW0db(void);
short			TDArray(unsigned short row, unsigned short column,
				unsigned short element, short *x, unsigned char numrows,
				unsigned char numcolumns, unsigned char numelements);
void 			T0InitPrescale(signed char prescale);
void 			Timer0_Init(void);
void 			Timer0_Init_Interrupt(void);
void 			Timer0InitPrescale(unsigned char prescale); //OBSOLETE
void 			Wfbp(void);

//|||||||||||||||||||||||||||||||||||



