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

📄 main.h

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 H
📖 第 1 页 / 共 3 页
字号:




#define OriginalPwd		500			//税控机初始化时获得的原始口令 8   BCD
//508--512:保留字节
//----------------------------------------------------------------------------------------------


//申报数据缓冲区:
#define	Declare 		512
#define	DecBeginDate	Declare					//申报数据起始日期	4	BCD
#define	DecEndDate		Declare+4				//申报数据截止日期	4	BCD
#define	DecInvoNum1		Declare+8				//正常发票份数		4	【unsigned long】
#define	DecInvoNum2		Declare+12				//退票份数			2	【unsigned int】
#define	DecInvoNum3		Declare+14				//废票份数			2	【unsigned int】
#define	DecTaxIndex		Declare+16				//税种税目索引号	6	HEX
#define	DecInvoSum1		Declare+22		//正常发票分类累计金额		24	【unsigned long】× 6
#define	DecInvoSum2		Declare+46		//退票分类累计金额			24	【unsigned long】× 6

#define	DeclareFlg		Declare+70		//报税标志:0:“没有申报”或已经“完税”;1:已经申报	或没有“完税”	1	HEX


//当天交易数据缓冲区:
#define	IntradayTime		Declare+71		//当天日期				4	BCD	用于判断是否已经跨越到第2天
#define	IntradayInvoNum		Declare+75		//当天正常发票份数		2	HEX
#define	IntradayUntread		Declare+77		//当天退票份数			2	HEX
#define	IntradayInvalid		Declare+79		//当天废票份数			2	HEX
#define	IntradayIndex		Declare+81		//当天税种税目索引号	6	HEX
#define	IntradaySortSum		Declare+87		//当天正常发票分类累计金额	24	【unsigned long】× 6
#define	IntradayTui			Declare+111		//当天退票分类累计金额		24	【unsigned long】× 6

#define	ElectronicSign		Declare+135		//电子签名				128	HEX
//电子签名未使用,保留128字节

#define	ItemNumber		Declare+263			//当前项目数量		1	HEX
#define	PluNumber		Declare+264			//当前PLU数量		2	HEX
#define	InvoStatNum		Declare+266			//单卷发票使用汇总数据数量		2	【unsigned int】
#define	DailyDatNum		Declare+268			//日交易数据笔数	2	【unsigned int】
#define	InvoPrintNum	Declare+270			//发票打印数据笔数	2	【unsigned int】

#define	BossPwd			Declare+272			//老板密码 4 Byte
#define SalerPwd		Declare+276			//存放12个营业员密码 4×12 =48字节
#define SalerStat		Declare+324			//营业员销售金额累计 4×12 =48字节

#define InvoiceCode		Declare+372		//存放当前卷发票代码	10 字节
#define InvoiceNo		Declare+382		//本卷发票当前发票号	4  字节
#define InvoiceNoEnd	Declare+386		//本卷发票结束号		4  字节

#define	DecAddUp		Declare+390		//一个报税周期内的销售累计金额		4	HEX
#define	DecUntread		Declare+394		//一个报税周期内的退票累计金额		4	HEX

#define UntreadNum		Declare+398		//本卷发票作废发票数量	1	HEX

#define	PwdFlg			Declare+399		//使用口令标志,'00':使用原始口令;'01':使用随机口令

#define	PwrFlgAdr		Declare+400		//掉电中断标志

#define	BlackFlg		Declare+401		//黑标定位标志

#define SalerNum		Declare+402		//营业员数量 1 HEX

//保留3字节

#define InvoStatFull	Declare+406		//单卷发票使用汇总数据已满标志
#define DailyDatFull	Declare+407		//日交易数据已满标志
#define InvoPrintFull	Declare+408		//发票打印数据已满标志
#define DeclareFull		Declare+409		//申报备份数据已满标志

//Declare+410----Declare+416:保留7字节

//单卷发票使用汇总数据缓冲区
#define TomeNum1		Declare+417		//正常发票份数		1	HEX
#define TomeNum2		Declare+418		//退票份数			1	HEX
#define TomeNum3		Declare+419		//废票份数			1	HEX
#define TomeStat		Declare+420		//正常发票总金额	4	HEX
#define TomeUntread		Declare+424		//退票总金额		4	HEX
#define TomeTime		Declare+428		//开票起始时间		4	BCD

#define DistriError		Declare+432		//分发发票时出现异常标志

#define MacState		Declare+433		//税控机当前状态	1	HEX

#define DeclareNum		Declare+434		//申报备份数据文件个数	1	HEX

#define InvoiceNum		Declare+435	//已经分发(剩余)的发票卷数	1	HEX 最多10卷??

#define DistriInvo		Declare+436		//发票分发临时文件 22 HEX   512+436=948
//970--1023:保留字节



//1024--+--*(22×46(卷)=1012字节 )--2035    //已经分发的发票信息文件	22×46(卷)=1012字节  
#define InvoInfo		1024			//已经分发的发票信息文件	22×46(卷)=1012字节
#define InvoCode		InvoInfo		//发票代码	10 	BCD
#define InvoNo1			InvoInfo+10		//起始号	4	HEX
#define InvoNo2			InvoInfo+14		//终止号	4	HEX
#define InvoMAC			InvoInfo+18		//MAC		4	HEX

//2036--2047:保留字节


//2048--3071
#define UntreadAdr		2048			//存放作废发票号码,每卷发票最多256张 4×256=1024


//3072--3211
#define MultiUserInfo	3072			//分户开票编号文件 140 Byte


//8K Byte:0--8191;	8191-3212+1 = 4980 Byte
#define DeclareBak		3212	//存放申报备份数据文件	至少60个	83×60 = 4980 Byte
//申报数据起始日期			4	BCD
//申报数据截止日期			4	BCD
//正常发票份数				4	HEX
//退票份数					2	HEX
//废票份数					2	HEX
//税种税目索引号			6	HEX
//正常发票分类累计金额		24	HEX
//退票分类累计金额			24	HEX
//税控卡正常发票总累计金额	4	HEX
//税控卡退票总累计金额		4	HEX
//状态字					1	HEX
//MAC1						4	HEX
//--------------------------共83字节


//-----------------------------24c256存放空间使用完毕-----------------------------------------------------------------



//------------------------------------------------------------------------------------------------------------------------

#define	DeclareBakMax	60				//申报备份数据最大存储数量
#define	DistriInvoMax	10				//已分发而未使用发票卷最大存储数量
#define	ClassMaxNum		8				//一张发票可以打印的最大的商品种类
#define	WareMaxNum		1000000			//一个商品最大的允许数量暂定为一万(小数点后还有两位)
#define CursorTime 		2000		//等待输入时LCD屏上显示的光标闪烁间隔时间
//--------------------------------------------------------------------------------

//????????????????????????????????????????????????????这些锁和键盘扫描码怎样定义的规则??????????????????????

//锁扫描码(第五版)
#define LockSys		0xFD	//1挡,系统功能
#define LockTime	0xFE	//2挡,时间显示
#define LockCom		0x7F	//3挡,通讯
#define LockSale	0xbF    //4挡,销售
#define LockTax		0xdF    //5挡,税务处理
#define LockRep		0xEF    //6挡,报表
#define LockWare	0xF7    //7挡,商品管理
#define LockChk		0xFB    //8挡,自检
#define LockNull	0xFF    //9挡,保留

//--------------------------------------------------------------------------------------//

// 键盘扫描码
#define K_0				0xAA		//数字键0
#define K_1				0xAB		//数字键1
#define K_2				0xB4		//数字键2
#define K_3				0xBD		//数字键3
#define K_4				0xA4		//数字键4
#define K_5				0xA5		//数字键5
#define K_6				0xBF		//数字键6
#define K_7				0xA6		//数字键7
#define K_8				0xA7 		//数字键8
#define K_9				0xC1 		//数字键9
#define K_00			0xB3 		//数字键00
#define K_DOT			0xBC		//小数点.
#define K_SL			0xAD		//数量、乘号×
#define K_BF			0xAE		//%键




#define K_XM1			0xA8		//项目1
#define K_XM2			0x9F		//项目2
#define K_XM3			0x96		//项目3
#define K_XM4			0x8D		//项目4
#define K_XM5			0x84		//项目5
#define K_XM6			0xA9		//项目6
#define K_XM7			0xA0		//项目7
#define K_XM8			0x97		//项目8
#define K_XM9			0x8E		//项目9
#define K_XM10			0x85		//项目10
#define K_XM11			0xAA		//项目11
#define K_XM12			0xA1		//项目12
#define K_XM13			0x98		//项目13
#define K_XM14			0x8F    	//项目14
#define K_XM15			0x86		//项目15
#define K_XM16			0xAB		//项目16
#define K_XM17			0xA2		//项目17
#define K_XM18			0x99		//项目18
#define K_XM19			0x90		//项目19
#define K_XM20			0x87		//项目20
#define K_XM21			0xA4		//项目21
#define K_XM22			0x9B		//项目22
#define K_XM23			0x92		//项目23
#define K_XM24			0x89		//项目24
#define K_XM25			0x80		//项目25




#define K_HD			0x83		//换档键

#define K_PLU			0xA2 		//PLU键

#define K_JZ			0x8F		//进纸键
#define K_TZ			0x98		//退纸键

#define K_QC			0xC2		//清除键
#define K_LJ			0xC0		//订正键
#define K_TH			0x8A		//退票/废票键
#define K_SR			0x99		//输入切换
#define K_TC			0x9C		//退出/注销键
#define K_DZ			0xB7		//打折
#define K_JF			0xB6		//加费键

#define K_DL			0xB0		//签到/登陆键
#define K_CX			0xB9 		//销售查询键


     #define K_SK			0xAD		//刷卡消费键
     #define K_BZ			0xC3		//帮助键



#define K_SJ			0xA1		//时间键
#define K_GN			0xAF		//系统功能

#define K_TM			0x90		//手工条码键
#define K_XJ			0xC6		//小计键
#define K_HJ			0xC5		//合计/确认键

#define K_UP			0x93		//向上
#define K_DOWN			0x92		//向下
#define K_LEFT			0x89		//向左
#define K_RIGHT			0x9B		//向右



//---------spi-----------------------------------------------------------------------------//
#define SpiReadLenErr	0x51
#define SpiWriteLenErr 	0x52
#define SpiOK          	1
#define SpiErr         	0x54

//-------NumToStr函数转换参数设置--------------------------
#define SwitchInt		0x00	//
#define SwitchFloat		0x01	//
#define SwitchZero		0x02	//
#define SwitchDot		0x04	//
#define SwitchSpace     0x08	//
#define SwitchEnd		0x80	//
//------------------------------------------------------

//-------I2C总线地址设置-------------------------------
#define EepromAdr		0xA0	//24C64地址
#define ClockAdr	 	0xD0	//M41T0和M41ST87的地址都是0xD0
#define ClockChip		0		//0:M41T0;1:M41ST87
#define RfidAdr			0xAE
//------------------------------------------------------


//-------4052的串口通讯通道选择-------------------------------
#define UARTA 		PDO=0			//
#define UARTB	 	PDO=0x02		//
//#define UARTC 		PDO=0x04		//
//#define UARTD 		PDO=0x06		//

#define DisableCs   P47 = 0
//#define DisableCom	P11=1,P10=1
  #define DisableCom	P37=1
 #define COM1CS		P37=0
//#define COM1CS		P11=1,P10=0		//4052片选,为防止两片与外设通讯的4052同时工作,
//#define COM2CS		P10=1,P11=0		//此处必须先禁止另一片4052工作,再选通需要工作的4052
//#define SIMCS		P34=0


//----------UART-串口-----------------------------------------------------------------------------------
#define UART_BUF_SIZE		256		//串口接收和发送缓冲区大小,禁止改变

#define UART0_Mod1_Timer1_9600	UartSet(0,1,1,0,9600)
#define UART0_Mod1_Timer2_19200	UartSet(0,2,1,0,19200)
#define UART0_Mod3_Timer1_9600	UartSet(0,1,3,0,9600)
#define UART0_Mod3_Timer2_19200	UartSet(0,2,3,0,19200)
#define UART1_Mod1_Timer2_19200	UartSet(1,2,1,0,19200)
#define UART1_Mod3_Timer1_9600	UartSet(1,1,3,0,9600)
#define UART1_Mod1_Timer1_9600	UartSet(1,1,1,0,9600)
#define UART1_Mod3_Timer2_19200	UartSet(1,2,3,0,19200)





// ---------------全局变量---------------------------------------------------------------------
extern uchar xdata TxdBuf[];	//Data Buffer for UART1、2 Transmitter
extern uchar xdata RxdBuf[];	//Data Buffer for UART1、2 Receiver
extern uint  xdata TxdLen;		//no. of data to be transimitted
extern uint  xdata TxdNum;		//no. of data transmitted
extern uint  xdata RxdLen;		//no. of data to be received
extern uint  xdata RxdNum;		//no. of data received

extern uchar xdata SimTimeOut,SimFlg;

extern uchar xdata TxdFlg;
extern uchar xdata RxdFlg;

extern uchar xdata PwrFlg;

extern uchar xdata HugeTest;					//海量测试专用

extern gyt4  xdata UntreadCode;					//退票
extern uchar xdata InvoDate[];
extern ulong xdata WareNo;						//当前商品编号

⌨️ 快捷键说明

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