📄 ef8681.h
字号:
//---------------------------------------------------------------------------------------------------
// 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 + -