⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ef8681.h

📁 CML CMX868 modem
💻 H
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------------------------------
//	Project:-	DE8681
//  	Filename:-	EF8681.H
//	Description:-	EF8681 Header File.
//	Programmer:-	D.T.F	
//	Version:-	2.0
//	Created:-	28th February 2002
//	Last modified:-
//---------------------------------------------------------------------------------------------------
//	(C) Consumer Microcircuits Ltd 2002
//
//	This firmware was designed by:-
//			Consumer Microcircuits Ltd,
//			Langford, Maldon,
//			ESSEX
//			CM9 6WG.
//	in the UK for use with CML evaluation kits only and is based on UK originated technology.
//	Please contact
//			sales@cmlmicro.co.uk
//			+44 (0)1621 875500
//	for licensing details.
//---------------------------------------------------------------------------------------------------

//////////////////////////////////////////////////
/*	Include additional Header files		*/
//////////////////////////////////////////////////

#include	<pic.h>
#include	<string.h>
#include	<stdlib.h>
#include	"sci.h"
#include	"cbus.h"
#include	"chars.h"
#include	"delay.h"
#include	"atcmd.h"
#include	"hndshake.h"
#include	"dataxfer.h"
#include	"bert.h"

#define	BITDEF(reg,bit)		((unsigned)&(reg)*8+(bit))

#ifdef EF8681_C
void init_regs(void);
void init_micro(void);
void init_ports(void);
void resmsgtopc(unsigned char);
void init_sregs(unsigned char);
void init_GPTs(void);
void update_GPTs(void);
void dial(void);
void hook(unsigned char);
void genmsgtopc(unsigned char);
void ringdetection(void);
void hexnum2scrn(unsigned int,unsigned char,unsigned char);
void decnum2scrn(unsigned int,unsigned char,unsigned char);
unsigned char dut_chksum(void);
void testfunc1(void);
#else 
extern void init_sregs(unsigned char);
extern void dial(void);
extern void hook(unsigned char);
extern void init_GPTs(void);
extern void update_GPTs(void);
extern void genmsgtopc(unsigned char);
extern void hexnum2scrn(unsigned int,unsigned char,unsigned char);
extern void decnum2scrn(unsigned int,unsigned char,unsigned char);
#endif

//////////////////////////////////////////
/*	EF8681 CMX868 Shadow Registers	*/
//////////////////////////////////////////

static volatile unsigned int	bank3	CMXGENCTRL	@ 0x190;	// 16 Bit General Control Reg (Least Sig. Byte @ 0x190)
static volatile unsigned int	bank3	CMXTXMODE	@ 0x192;	// 16 Bit Tx Mode Reg (Least Sig. Byte @ 0x192)
static volatile unsigned int	bank3	CMXRXMODE	@ 0x194;	// 16 Bit Rx Mode Reg (Least Sig. Byte @ 0x194)
static volatile unsigned char	bank3	CMXTXDATA	@ 0x196;	// 8 Bit Tx Data Reg
static volatile unsigned char	bank3	CMXTXDATAV14	@ 0x197;	// 8 Bit V14 Tx Data Reg
static volatile unsigned char	bank3	CMXRXDATA	@ 0x198;	// 8 Bit Rx Data Reg
static volatile unsigned int	bank3	CMXSTAT		@ 0x199;	// 16 Bit Status Reg (Least Sig. Byte @ 0x199)
static volatile unsigned int	bank3	CMXPROG		@ 0x19B;	// 16 Bit Programming Reg (Least Sig. Byte @ 0x19B)
static volatile unsigned int	bank3	CMXTESTADDR	@ 0x19D;	// Reserved
static volatile unsigned int	bank3	CMXTESTWR	@ 0x19F;	// Reserved
static volatile unsigned int	bank3	CMXTESTRD	@ 0x1A1;	// Reserved

//////////////////////////////////////////
/*	EF8681 GPT Registers		*/
//////////////////////////////////////////

static volatile unsigned char bank3	GPT1			@ 0x1A3;
static volatile unsigned char bank3	GPT2			@ 0x1A4;
static volatile unsigned char bank3	GPT3			@ 0x1A5;
static volatile unsigned char bank3	GPT4			@ 0x1A6;
static volatile unsigned char bank3	GPT5			@ 0x1A7;
static volatile unsigned char bank3	GPT6			@ 0x1A8;
static volatile unsigned char bank3	ESCTMR			@ 0x1A9;
static volatile unsigned char bank3	ESCPS			@ 0x1AA;
static volatile unsigned char bank3	PS10ms			@ 0x1AB;
static volatile unsigned char bank3	PS100ms			@ 0x1AC;
static volatile unsigned char bank3	PS1s			@ 0x1AD;
static volatile unsigned char bank3	POLLTMR			@ 0x1AE;
static volatile unsigned char bank3	RDTIMEOUT		@ 0x1AF;
static volatile unsigned char bank3	CDLOSTTMR		@ 0x1B0;

//////////////////////////////////////////
/*	EF8681 Status Registers		*/
//////////////////////////////////////////

static volatile unsigned char bank3	MODEMSTAT		@ 0x1B2;
static volatile unsigned char bank3	ATCMDSTAT		@ 0x1B3;
static volatile unsigned char bank3	XFERSTAT		@ 0x1B4;

//////////////////////////////////////////
/*	EF8681 array pointers		*/
//////////////////////////////////////////

static volatile unsigned char bank3	ATBUFPTR		@ 0x1B5;
static volatile unsigned char bank3	MSGBUFLDPTR		@ 0x1B6;
static volatile unsigned char bank3	MSGBUFRDPTR		@ 0x1B7;
static volatile unsigned char bank3	DATABUFLDPTR		@ 0x1B8;
static volatile unsigned char bank3	DATABUFRDPTR		@ 0x1B9;

//////////////////////////////////////////
/*	EF8681 Ring Detect Register	*/
//////////////////////////////////////////

static volatile unsigned char bank3	RDCNT			@ 0x1BA;

//////////////////////////////////////////
/*	EF8681 BERT Registers		*/
//////////////////////////////////////////

static volatile unsigned char bank3	BERTSTAT		@ 0x1BB;
static volatile unsigned char bank3	BERCNT			@ 0x1BC;
static volatile unsigned char bank3	BERTXBYTE		@ 0x1BD;
static volatile unsigned char bank3	BERTMR0ADJ		@ 0x1BE;

/////////////////////////////////////////
/*	EF8681 AT Command Buffer	*/
//////////////////////////////////////////

static volatile unsigned char bank3	ATBUF[48]		@ 0x1C0;

//////////////////////////////////////////////////
/* 	EF8681 Status Register Bits		*/
//////////////////////////////////////////////////

/*	Modem Status Register	*/
static volatile bank3 bit EVMODE	@ BITDEF(MODEMSTAT,0);
static volatile bank3 bit ATCMDMODE	@ BITDEF(MODEMSTAT,1);	// AT Command Mode Flag
static volatile bank3 bit DATAXFER	@ BITDEF(MODEMSTAT,2);	// Data Transfer Flag
static volatile bank3 bit FALLBACK	@ BITDEF(MODEMSTAT,3);	// Modulation Fallback Flag
static volatile bank3 bit TESTFUNC1	@ BITDEF(MODEMSTAT,4);	// Test Function One Flag
static volatile bank3 bit TESTFUNC2	@ BITDEF(MODEMSTAT,5);	// Test Function Two Flag
static volatile bank3 bit KEYABORT	@ BITDEF(MODEMSTAT,6);	// Flag to indicate key pushed, used for aborting routines
static volatile bank3 bit RDINPROG	@ BITDEF(MODEMSTAT,7);	// Flag to indicate ringing in progress

/*	AT Command Status Register	*/
static volatile bank3 bit ACHAR		@ BITDEF(ATCMDSTAT,0);
static volatile bank3 bit ATCHAR	@ BITDEF(ATCMDSTAT,1);
static volatile bank3 bit REPCMD	@ BITDEF(ATCMDSTAT,2);
static volatile bank3 bit INTERPRET	@ BITDEF(ATCMDSTAT,3);
static volatile bank3 bit LOADCHAR	@ BITDEF(ATCMDSTAT,4);	// Flag set within Rx AT Command interrupt routine
static volatile bank3 bit LED_OVERRIDE  @ BITDEF(ATCMDSTAT,5);

/*	BERT Status Register		*/
static volatile bank3 bit BERTFLAG	@ BITDEF(BERTSTAT,0);
static volatile bank3 bit BERTXRDY	@ BITDEF(BERTSTAT,1);
static volatile bank3 bit BERRXDATACLR	@ BITDEF(BERTSTAT,2);

/*	Data Transfer Status Register		*/
static volatile bank3 bit ESCTMREXP	@ BITDEF(XFERSTAT,0);
static volatile bank3 bit ESC1CHAR	@ BITDEF(XFERSTAT,1);
static volatile bank3 bit ESC2CHAR	@ BITDEF(XFERSTAT,2);
static volatile bank3 bit CDLOST	@ BITDEF(XFERSTAT,3);
static volatile bank3 bit TX_WAITING	@ BITDEF(XFERSTAT,4);

//////////////////////////////////////////
/*	PIC16LF876 Port Definitions	*/
//////////////////////////////////////////

/*      PORTA bits      */
static volatile bit TXDIND		@ BITDEF(PORTA,3);
static volatile bit DTRIND		@ BITDEF(PORTA,2);
static volatile bit RXDIND		@ BITDEF(PORTA,1);
static volatile bit DCDIND		@ BITDEF(PORTA,0);

static volatile bit BER_TXD		@ BITDEF(PORTA,3);
static volatile bit BER_TXDCLK		@ BITDEF(PORTA,2);
static volatile bit BER_RXD		@ BITDEF(PORTA,1);
static volatile bit BER_RXDCLK		@ BITDEF(PORTA,0);

/*      PORTB bits      */
static volatile bit CTSN		@ BITDEF(PORTB,7);
static volatile bit RTSN		@ BITDEF(PORTB,6);
static volatile bit DTRN		@ BITDEF(PORTB,4);
static volatile bit DSRN		@ BITDEF(PORTB,3);
static volatile bit RIN			@ BITDEF(PORTB,2);
static volatile bit DCDN		@ BITDEF(PORTB,1);
static volatile bit PICIRQN		@ BITDEF(PORTB,0);

/*      PORTC bits      */
static volatile bit PICRXDN		@ BITDEF(PORTC,7);
static volatile bit PICTXDN		@ BITDEF(PORTC,6);
static volatile bit PICCDATA		@ BITDEF(PORTC,5);
static volatile bit PICRDATA		@ BITDEF(PORTC,4);
static volatile bit PICSCLK		@ BITDEF(PORTC,3);
static volatile bit PICCSN		@ BITDEF(PORTC,2);

/* Port Configuration (direction 1 = Input, 0 = Output) */
/* All unused pins are i/p's (RA4-5, RC0, RC1 and RB5)	*/
#define	CONFIGPA	0b00110000	// Port A I/O config

#define	CONFIGPB	0b01110001	// Port B I/O config
					// (PICIRQN, DTRN and RTSN i/p's, RIN, DSRN, DCDN and CTSN o/p's)

#define	CONFIGPC	0b10010011	// Port C I/O config 
					// (Bits 4 and 7 i/p's, bits 2,3,5 and 6 o/p's)
					// (PICRDATA and PICRXDN i/p's, PICCSN, PICSCLK, PICCDATA and PICTXDN o/p's)
#define	CONFIGBERTPA	0b00101000	// Port A I/O config for BERT
					// (Bits 0,1,2 and 4 o/p's and Bit 3 is i/p)
					// (BER_TXDCLK, BER_RXD, BER_RXDCLK and CDN o/p's and BER_TXD is i/p)

/* 	Initial Port Settings	*/
#define	INITPA		0b00000000	// Initial Port A Settings
					// (TXDIND, DCDIND, RXDIND LEDs turned off, DTRIND LED turned on) 
#define	INITPB		0b10101100	// Initial Port B Settings
					// (Bits 2, 3, 5 and 7 set)
					// (RIN, DCDN, DSRN and CTSN set)
#define	INITPC		0b01001100	// Initial Port C Settings
					// (Bit 5 is clear, Bits 2,3 and 6 are set) 
					// (PICCDATA clear, PICCSN, PICSCLK and PICTXDN set)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -