📄 main.h
字号:
/*
* Copyright (c) 2004,成都港顺科技发展有限公司
* All rights reserved.
*
* 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
* 工程名称:POS-Test.UV2
* 文件名称:Main.h
* 摘 要:所有 结构体--变量宏定义---数据存储地址定义 以及 函数申明
*
* 单 片 机:uPSD3254
* 当前版本:0.8
* 作 者:李凯
* 完成日期:2004-12-7 14:45
*/
#include "string.h"
#include "absacc.h"
#include "intrins.h"
#include "Upsd3200.h"
extern PSD_REGS PSD_REG; //CSIOP申明,其定义在Main.C中,结构体PSD_REGS的定义在uPSD3200.H中
//#define OSC 24000000L
#define OSC 22118400L //系统时钟定义,使用USB通讯时时钟必须是24MHz或12MHz
#define PSD_REG_ADDR 0x0200 //CSIOP(PSD Register)地址定义
//----------------------------------------------------------------------------------------------
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define PrintBusy PSD_REG.DATAIN_C & 8 //打印机忙信号
typedef union
{
unsigned long dat;
unsigned char str[4];
} gyt4;
typedef union
{
unsigned int dat;
unsigned char str[2];
} gyt2;
typedef struct
{//时间数据结构-----------共8字节
unsigned char Cent; //世纪
unsigned char Year; //年
unsigned char Mon; //月
unsigned char Date; //日
unsigned char Week; //星期
unsigned char Hour; //时
unsigned char Min; //分
unsigned char Sec; //秒
} TimeDetail;
typedef struct
{//单卷发票使用汇总数据-----------------------共37字节
uchar invcode[10]; //发票代码 10 BCD
ulong invhead; //起始号 4 HEX
ulong invend; //终止号 4 HEX
uchar natural; //正常发票份数 1 HEX
uchar untread; //退票份数 1 HEX
uchar invalid; //废票份数 1 HEX
ulong naturalsum; //正常发票总金额 4 HEX
ulong untreadsum; //退票总金额 4 HEX
ulong datehead; //开票起始时间 4 BCD
ulong dateend; //开票截止时间 4 BCD
} TomeDetail;
typedef struct
{//发票打印数据结构-------------------------------共27字节
ulong date; //开票日期 4 BCD
ulong invno; //发票号 4 BCD
uchar type; //开票类型 1 HEX
ulong sum; //开票总金额 4 HEX
uchar taxcode[8]; //税控码 8 HEX
ulong original; //原发票号 4 BCD
uint reserve; //保留 2 BCD
} InvoiceDetail;
typedef struct
{//日交易数据结构--------------------------------共192字节
ulong date; //当天日期 4 BCD
uint natural; //正常发票份数 2 HEX
uint untread; //当天退票份数 2 HEX
uint invalid; //当天废票份数 2 HEX
uchar index[6]; //税种税目索引号 6 HEX
ulong naturalsum1; //正常发票分类累计金额 24 HEX
ulong naturalsum2;
ulong naturalsum3;
ulong naturalsum4;
ulong naturalsum5;
ulong naturalsum6;
ulong untreadsum1; //退票分类累计金额 24 HEX
ulong untreadsum2;
ulong untreadsum3;
ulong untreadsum4;
ulong untreadsum5;
ulong untreadsum6;
uchar Sign[128]; //电子签名 128 HEX
} DailyDetail;
typedef struct
{//申报备份数据结构-----------------------------------共83字节
ulong datehead; //申报数据起始日期 4 BCD
ulong dateend; //申报数据截止日期 4 BCD
ulong natural; //正常发票份数 4 HEX
uint untread; //退票份数 2 HEX
uint invalid; //废票份数 2 HEX
uchar index[6]; //税种税目索引号 6 HEX
ulong naturalsum1; //正常发票分类累计金额 24 HEX
ulong naturalsum2;
ulong naturalsum3;
ulong naturalsum4;
ulong naturalsum5;
ulong naturalsum6;
ulong untreadsum1; //退票分类累计金额 24 HEX
ulong untreadsum2;
ulong untreadsum3;
ulong untreadsum4;
ulong untreadsum5;
ulong untreadsum6;
ulong fiscalsum1; //税控卡正常发票总累计金额 4 HEX
ulong fiscalsum2; //税控卡退票总累计金额 4 HEX
uchar state; //状态字 1 HEX
uchar mac[4]; //MAC1 4 HEX
} DeclareDetail;
typedef struct
{
unsigned char bytlow : 4;
unsigned char bytHigh : 4;
}
YJB;
typedef union
{
unsigned char bt;
YJB swap;
}
GS;
//-----------------------宏定义---------------------------------------------------------------------------
#define Timer1Baudrate (OSC/(12*32)) //12*32=384
#define Timer2Baudrate (OSC/32)
//------PA-PC端口定义----------------------------------------------------------
#define PAO PSD_REG.DATAOUT_A //PA口输出寄存器
#define PAI PSD_REG.DATAIN_A //PA口输入寄存器
#define PBO PSD_REG.DATAOUT_B //PB口输出寄存器
#define PBI PSD_REG.DATAIN_B //PB口输入寄存器
#define PCO PSD_REG.DATAOUT_C //PC口输出寄存器
#define PCI PSD_REG.DATAIN_C //PC口输入寄存器
#define PDO PSD_REG.DATAOUT_D //PD口输出寄存器
//--------------------------------------------------------------------------------------//
#define DebugSim 1 //是否操作SIM卡 为0是不操作,1要操作
#define DebugLock 0 //是否需要键盘锁 为0是不操作,1要操作
#define FlashDatM25P80 0 //1:使用M25P80存放;0:使用M45PE80存放-》商品信息、日交易数据、单卷发票使用汇总数据 ?????????????
#define FlashInvoM25P80 0 //1:使用M25P80存放;0:使用M45PE80存放-》发票打印数据 ?????????????
#define RS485 0
#define Flashziku 0x13 //25p80 ?????????????
#define FlashInvo 0x03 //M45PE80:高4位是0;M25P80:高4位是1 ?????????????
#define FlashDat 0x04 //45p80 ?????????????
//每片25P80容量:1048576字节=1 MByte
//--------------------------------------------------------------------------------------//
//第3片M25P80存放内容: 发票打印数据 //循环存储时必须擦除整片内容,否则速度太慢
//adr:0-----1048576 每片25P80容量:1048576字节=1 MByte
#define InvoPrintMax 38836
//#define InvoPrintMax 5757 //海量测试专用
#define InvoPrintDat 0 //发票打印数据(27×38836=1048572 Byte)存放开始地址
#define InvoListLimit1 0 //发票打印数据存放的开始地址
#define InvoListLimit2 1048572 //发票打印数据存放的结束地址,(27×38836=1048572 Byte
//开票日期 4 BCD
//发票号 4 BCD
//开票类型 1 HEX
//开票总金额 4 HEX
//税控码 8 HEX
//原发票号 4 BCD
//保留 2 BCD
//------------------共27字节
//--------------------------------------------------------------------------------------//
//第4片M25P80地址空间:0-----1048576(1个64K:0)
//单卷发票使用汇总数据使用地址空间:0-65535
#define InvoStatMax 1771
//#define InvoStatMax 303 //海量测试专用
#define InvoStatDat 0 //单卷发票使用汇总数据(37×1771卷=65527 Byte)存放开始地址
#define InvoStatBegin InvoStatDat //单卷发票使用汇总数据存放的开始地址
#define InvoStatEnd 65526 //单卷发票使用汇总数据存放的结束地址 37×1771卷=65527 Byte
//发票代码 10 BCD
//起始号 4 HEX
//终止号 4 HEX
//正常发票份数 1 HEX
//退票份数 1 HEX
//废票份数 1 HEX
//正常发票总金额 4 HEX
//退票总金额 4 HEX
//开票起始时间 4 BCD
//开票截止时间 4 BCD
//------------------共37字节
//--------------------------------------------------------------------------------
//日交易数据使用地址空间:(要求存放超过6.5年)65536-524287(7个64K:1-7)共448K //分页技术64K
#define DailyTradeMax 2389
//#define DailyTradeMax 1835 //海量测试专用
#define DailyTradeDat 65536 //日交易数据(192×2389天(6.5年)=458688 Byte)存放开始地址
#define DailyTradeBegin 65536 //日交易数据据存放的开始地址
#define DailyTradeEnd 524287 //日交易数据据存放的结束地址
//当天日期 4 BCD
//正常发票份数 2 HEX
//当天退票份数 2 HEX
//当天废票份数 2 HEX
//税种税目索引号 6 HEX
//正常发票分类累计金额 24 HEX
//退票分类累计金额 24 HEX
//电子签名 128 HEX
//----------------------共192字节
//--------------------------------------------------------------------------------
//项目信息(50个,33×50=1650 Byte)使用地址空间:524288-525937(8个64K:8-15)//分页技术64K
#define ItemAdr 524288
#define ItemName ItemAdr //项目名称:8个汉字,16字节【两个字节一组】
#define ItemPriceIn ItemAdr+16 //项目进货价格: 4字节【unsigned long】
#define ItemPriceOut ItemAdr+20 //项目销售价格: 4字节【unsigned long】
#define ItemStockNum ItemAdr+24 //项目库存数量: 4字节【unsigned long】
#define ItemSaleNum ItemAdr+28 //项目已经销售数量: 4字节【unsigned long】
#define ItemTaxIndex ItemAdr+32 //所属税种税目索引号1字节
// .
// .
// .
//以上是第一个项目信息,后面还有49个项目信息
// .
// .
// .
//商品信息(13400个,39×13400=522600)使用地址空间:525938-1048538=39×13400=522600
#define WareAdr 525938
#define WareName WareAdr //商品名称:8个汉字 ,16字节【两个字节一组】
#define WarePriceIn WareAdr+16 //商品进货价格: 4字节【unsigned long】
#define WarePriceOut WareAdr+20 //商品销售价格: 4字节【unsigned long】
#define WareStockNum WareAdr+24 //商品库存数量: 4字节【unsigned long】
#define WareSaleNum WareAdr+28 //商品已经销售数量:4字节【unsigned long】
#define WareTaxIndex WareAdr+32 //所属税种税目索引号1字节
#define WareBarCode WareAdr+33 //条形码: 6字节【unsigned int(条形码高4位) + unsigned long(条形码低9位)】
// .
// .
// .
//以上是第一个商品信息,后面还有13399品信息
// .
// .
// .
//........................................................................................
//以下是24C256存放内容: //8K Byte:0--8191;
#define MacInfo 0
#define MachineAdr MacInfo //机器出厂数据(48 Byte)
#define MachineNo MacInfo //机器编号 8 BCD
#define MachineTime MacInfo+8 //生产日期 4 BCD CCYYMMDD
#define HardwareVer MacInfo+12 //硬件版本号 18 ASC
#define SoftwareVer MacInfo+30 //软件版本号 18 ASC
//......................................................................................
#define UserInfo MacInfo+48 //用户信息(105 Byte)
#define FiscalCardNo MacInfo+48 //税控卡编号 8 BCD
#define FiscalPwd MacInfo+56 //税控卡口令 8 HEX
#define AppStartTime MacInfo+64 //应用启用日期 4 BCD CCYYMMDD
#define AppValidTime MacInfo+68 //应用有效日期 4 BCD CCYYMMDD
#define TaxpayerName MacInfo+72 //纳税人名称 40 ASC
#define TaxpayerNo MacInfo+112 //纳税人编码 8 BCD
#define TaxNumber MacInfo+120 //税号 20 ASC
#define ManagerCode MacInfo+140 //主管分局代码 4 BCD
#define DeclareMode MacInfo+144 //申报方式 1 HEX
#define InvoiceEndData MacInfo+145 //开票截止日期 4 BCD CCYYMMDD
#define SingleQuota MacInfo+149 //单张发票金额限额 4 HEX 单位:元。例:0x10000表示65536元
#define AddUpQuota MacInfo+153 //发票累计金额限额 4 HEX 单位:元。例:0x10000表示65536元
#define UntreadQuota MacInfo+157 //退票累计金额限额 4 HEX 单位:元。例:0x10000表示65536元
//......................................................................................
#define IndexItems MacInfo+161 //税种税目索引号 6 HEX
#define MingXiKeyFlg MacInfo+167 //明细申报标志与税控码密钥标识符 1 HEX
//......................................................................................
#define TaxItemsInfo MacInfo+168 //税种税目信息(47×6=282 Byte)
#define TaxItemsIndex MacInfo+168 //税种税目索引号 1 HEX
#define TaxItemsCode MacInfo+169 //税种项目代码 4 BCD
#define TaxRate MacInfo+173 //税率 2 HEX
#define ChineseName MacInfo+175 //经营项目中文名称 20 ASC
#define EnglishName MacInfo+195 //经营项目英文名称 20 ASC
// .
// .
// .
//以上是第一个税种税目信息,后面还有五个税种税目信息
// .
// .
// .
//........................................................................................
//443--499:保留字节
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -