📄 mvp.h
字号:
//#define kRCAP2 65530 //9600
//#define kRCAP2 65535 //57600
//#define kUSEC (2-1)
//#define kMSEC (1843-1)
//#define kACLK (2-1)
//#define kRCAP2 65500 //9600
//#define kRCAP2 65530 //57600
//#define kUSEC (11-1)
//#define kMSEC (11059-1)
//#define kACLK (11-1-3)
//#define kRCAP2 65458 //9600
#define kRCAP2 65523 //57600
#define kUSEC (24-1)
#define kMSEC (24000-1)
#define kACLK (24-1-16)
// Slave and Aux CPU Timing Scaling
#define SCALE 1 // Set PSEN to SysClk for CPUA & CPUS
//#define SCALE 4 // Set PSEN to SysClk/4 for CPUA & CPUS
#define cUSEC (((kUSEC+1)/SCALE)-1)
#define cMSEC (((kMSEC+1)/SCALE)-1)
// Firmware version
#define FWVer 0x11
#define START 0x10 // Flash sfr init starting address
#define END 0x30 // Flash sfr init ending address
// Parallel Flash Programming Commands
#define FRD (0) // flash read command
#define FWR (1) // flash write command
#define FME (2) // flash mass erase command
#define FPE (3) // flash page erase command
#define SRD (6) // sfr read command
#define SWR (7) // sfr write command
#define CPUA 0x80
#define CPUS 0x40
#define CPUBOTH 0xc0
#define P0IDLE 0x0000
#define P0OUT 0x0000
#define P1OUT 0x0000
// Parallel CPU Interface
sbit ALE = P2^0;
sbit REQA = P2^1;
sbit ACKA = P2^2;
sbit CP = P2^3;
sbit REQS = P2^4;
sbit ACKS = P2^5;
sbit VDDEN = P2^6;
sbit MRST = P2^7;
sbit PASSS = P3^2;
sbit TONE = P3^3;
sbit PASSA = P3^4;
sbit CMD0 = P3^5;
sbit CMD1 = P3^6;
sbit CMD2 = P3^7;
sfr id = 0x80;
sfr al = 0x90;
sfr ah = 0x90;
#define sP0 0x80 //
#define sSP 0x81 //
#define sDPL 0x82 //
#define sDPH 0x83 //
#define sDPL0 0x82 //
#define sDPH0 0x83 //
#define sDPL1 0x84 //
#define sDPH1 0x85 //
#define sDPS 0x86 //
#define sPCON 0x87 //
#define sTCON 0x88 //
#define sTMOD 0x89 //
#define sTL0 0x8A //
#define sTL1 0x8B //
#define sTH0 0x8C //
#define sTH1 0x8D //
#define sCKCON 0x8E //
#define sMWS 0x8F //
#define sP1 0x90 //
#define sEXIF 0x91 //
#define sMPAGE 0x92 //
#define sCADDR 0x93 //
#define sCDATA 0x94 //
#define sMCON 0x95 //
#define sSCON 0x98 //
#define sSCON0 0x98 //
#define sSBUF 0x99 //
#define sSBUF0 0x99 //
#define sSPICON 0x9A //
#define sSPIDATA 0x9B //
#define sSPIRCON 0x9C //
#define sSPITCON 0x9D //
#define sSPISTRT 0x9E //
#define sSPIEND 0x9F //
#define sP2 0xA0 //
#define sPWMCON 0xA1 //
#define sPWMLOW 0xA2 //
#define sPWMHI 0xA3 //
#define sPAI 0xA5 //
#define sAIE 0xA6 //
#define sAISTAT 0xA7 //
#define sIE 0xA8 //
#define sBPCON 0xA9 //
#define sBPL 0xAA //
#define sBPH 0xAB //
#define sP0DDRL 0xAC //
#define sP0DDRH 0xAD //
#define sP1DDRL 0xAE //
#define sP1DDRH 0xAF //
#define sP3 0xB0 //
#define sP2DDRL 0xB1 //
#define sP2DDRH 0xB2 //
#define sP3DDRL 0xB3 //
#define sP3DDRH 0xB4 //
#define sLDCON 0xB5 //
#define sDACCON0 0xB5 //
#define sDACCON1 0xB6 //
#define sDACSEL 0xB7 //
#define sIP 0xB8 //
#define sSCON1 0xC0 //
#define sSBUF1 0xC1 //
#define sEWU 0xC6 //
#define sT2CON 0xC8 //
#define sRCAP2L 0xCA //
#define sRCAP2H 0xCB //
#define sTL2 0xCC //
#define sTH2 0xCD //
#define sPSW 0xD0 //
#define sOCL 0xD1 //
#define sOCM 0xD2 //
#define sOCH 0xD3 //
#define sGCL 0xD4 //
#define sGCM 0xD5 //
#define sGCH 0xD6 //
#define sADMUX 0xD7 //
#define sEICON 0xD8 //
#define sADRESL 0xD9 //
#define sADRESM 0xDA //
#define sADRESH 0xDB //
#define sADCON0 0xDC //
#define sADCON1 0xDD //
#define sADCON2 0xDE //
#define sADCON3 0xDF //
#define sACC 0xE0 //
#define sSSCON 0xE1 //
#define sSUMR0 0xE2 //
#define sSUMR1 0xE3 //
#define sSUMR2 0xE4 //
#define sSUMR3 0xE5 //
#define sODAC 0xE6 //
#define sLVDCON 0xE7 //
#define sEIE 0xE8 //
#define sHWPC0 0xE9 //
#define sHWPC1 0xEA //
#define sHWID 0xEB //
#define sFMCON 0xEE //
#define sFTCON 0xEF //
#define sB 0xF0 //
#define sPDCON 0xF1 //
#define sPASEL 0xF2 //
#define sACLK 0xF6 //
#define sSRST 0xF7 //
#define sEIP 0xF8 //
#define sSECINT 0xF9 //
#define sMSINT 0xFA //
#define sUSEC 0xFB //
#define sMSECL 0xFC //
#define sMSECH 0xFD //
#define sHMSEC 0xFE //
#define sWDTCON 0xFF //
extern unsigned int t0,t1,t2;
extern char rx_byte_echo(void);
extern void tx_byte(char);
extern void tx_hex(char);
extern void putprompt(void);
extern void putcr(void);
extern void putok(char);
extern void putspace1(void);
extern void putspace2(void);
extern void putspace3(void);
extern void putspace4(void);
extern void putstr(char code * data msg);
extern unsigned char rx_hex_echo(void);
extern unsigned int rx_hex_word_echo(void);
extern unsigned int rx_hex_double_echo(void);
extern char read_and_write_intel_hex(unsigned char);
extern char faddr_data_read(char);
extern unsigned char fpm(unsigned char cmd, unsigned int a, unsigned char pd);
extern unsigned char afpm(unsigned char cmd, unsigned int a, unsigned char pd);
extern unsigned char sfpm(unsigned char cmd, unsigned int a, unsigned char pd);
extern unsigned char util(unsigned char cpu, unsigned char k);
extern char sfr_rd(char);
extern void sfr_wr(char,char);
//bake
extern void modeswitch(void);
#define FDM 1
#define FPM 0
extern char write_flash_chk (int faddr, char fdata, char fdm);
extern char page_erase (int faddr, char fdata, char fdm);
// Console
#define RED 'R' // Red LED
#define GREEN 'G' // Green LED
sbit tone = P3^3;
extern void led(unsigned char color, unsigned char onoff);
extern void beep (unsigned int, unsigned int);
extern unsigned char high(unsigned char k);
extern void display(unsigned char cpu, unsigned char c, unsigned int i);
extern void nokey(void);
// ADC
extern unsigned char k1,k2,k3,vdds;
// Serial 0
#define RX_BEG ((unsigned char xdata*)0)
#define RX_END ((unsigned char xdata*)16)
#define TX_BEG ((unsigned char xdata*)16)
#define TX_END ((unsigned char xdata*)32)
extern unsigned char xdata *rx_hdptr;
extern unsigned char xdata * rx_tailptr;
extern unsigned char xdata * tx_hdptr;
extern unsigned char xdata * tx_tailptr;
extern bit txmt, rxmt, txfull, rxfull;
// Device info
enum PART {MSC1210, MSC1211, MSC1212};
typedef struct {
char exist;
unsigned char HWPC1;
unsigned char HWPC0;
unsigned char HWID;
unsigned char kbyte;
enum PART part;
unsigned char y,secure;
} SLAVE;
extern SLAVE target;
extern unsigned char blackout(unsigned int i);
enum OnOff {On, Off};
enum Dest {None, Master, Target, Both};
enum YesNo {Yes, No};
//Bake
#define ONE 0xaa
#define ZERO 0x55
enum Mode {Bake, Program};
//NV Variables
typedef struct {
unsigned char cpu;
enum YesNo valid; // 0xaa is valid
enum Dest hexdlto;
enum OnOff speaker;
enum Dest mem;
unsigned char memaddrh;
unsigned char memaddrl;
enum Dest forcesecure;
enum Mode mode;
} NV;
extern void nvnew(void);
extern NV ping, pong;
extern NV xdata * data nvcp; //NV Variable current pointer
extern NV xdata * data nvnp; //NV Variable next pointer
#define SET 1
#define CLEAR 0
#define ON '1'
#define OFF '0'
// General
#define SPACE ' '
//PASEL values
#define PSEN_PSEN 1
#define PSEN_CLK 2
#define PSEN_MODCLK 3
#define PSEN_LOW 4
#define PSEN_HIGH 5
#define ALE_ALE 6
#define ALE_LOW 7
#define ALE_HIGH 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -