upsd.h
来自「税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案」· C头文件 代码 · 共 1,062 行 · 第 1/2 页
H
1,062 行
sbit ENI1 = S1CON^6;
sbit STA = S1CON^5;
sbit STO = S1CON^4;
sbit ADDR = S1CON^3;
//sbit AA = S1CON^2;
sbit CR1 = S1CON^1;
sbit CR0 = S1CON^0;
/* S1STA */
//sbit GC = S1STA^7;
//sbit STOP = S1STA^6;
//sbit INTR = S1STA^5;
//sbit TX_MD = S1STA^4;
//sbit BBUSY = S1STA^3;
//sbit BLOST = S1STA^2;
//sbit ACK_R = S1STA^1;
//sbit SLV = S1STA^0;
/* S2CON */
//sbit CR2 = S2CON^7;
//sbit EN1 = S2CON^6;
//sbit STA = S2CON^5;
//sbit STO = S2CON^4;
//sbit ADDR = S2CON^3;
//sbit AA = S2CON^2;
//sbit CR1 = S2CON^1;
//sbit CR0 = S2CON^0;
/* S2STA */
//sbit GC = S2STA^7;
//sbit STOP = S2STA^6;
//sbit INTR = S2STA^5;
//sbit TX_MD = S2STA^4;
//sbit BBUSY = S2STA^3;
//sbit BLOST = S2STA^2;
//sbit ACK_R = S2STA^1;
//sbit SLV = S2STA^0;
/* UISTA */
sbit SUSPND = UISTA^7;
//sbit STOP = UISTA^6;
sbit RSTF = UISTA^5;
sbit TXD0F = UISTA^4;
sbit RXD0F = UISTA^3;
sbit RXD1F = UISTA^2;
sbit EOPF = UISTA^1;
sbit RESUMF = UISTA^0;
sbit CARD_IO =P4^0;
sbit CARD_IO_SAM =P4^4;
/////////////////////////////////////
#define CMD_OK 0x90
#define CMD_ER 0x92
#define CMD_ER1 0x94
#define CMD_SH 0X96
/////////////////////////////////////
#define CMD_PARA 0x8f
#define CMD_YIN 0x6f
#define CMD_STRIP 0x5f
////////////////////////////////////
#define CMD_SALE 0x80
#define CMD_SALE_VOID 0x81
#define CMD_REFUND 0x82
#define CMD_AUTH 0x83
#define CMD_AUTH_CANCEL 0x84
#define CMD_AUTH_COMPLETE 0x85
#define CMD_COMPLETE_VOID 0x86
#define CMD_POS_ON 0x87
#define CMD_POS_OFF 0x88
#define CMD_POS_REPORT 0x89
#define CMD_ROLL 0x8a
#define CMD_PARA_YIN 0x8b
////////////////////////////////////////
#define CMD_KEY 0xa0
#define CMD_PARA1 0xa1
#define CMD_PARA2 0xa2
#define CMD_CLR_RECORD 0xa3
#define CMD_PRE_PRINT 0xa4
#define CMD_DET_PRINT 0xa5
#define CMD_CUR_QUERY 0xa6
#define CMD_ALL_QUERY 0xa7
#define CMD_WORK_STATE 0xa8
#define CMD_ROLL_VOID 0xa9
#define CMD_READ_PARA1 0xaa
#define CMD_READ_PARA2 0xab
/////////////////////////////////////////
/* UIEN */
//sbit SUSPNDIE = UIEN^7;
//sbit STOP = UIEN^6;
//sbit RSTF = UIEN^5;
//sbit TXD0IE = UIEN^4;
//sbit RXD0IE = UIEN^3;
//sbit RXD1IE = UIEN^2;
//sbit EOPIE = UIEN^1;
//sbit RESUMIE = UIEN^0;
/* UCON0 */
//sbit TSEQ0 = UCON0^7;
//sbit STALL0 = UCON0^6;
//sbit TX0E = UCON0^5;
//sbit RX0E = UCON0^4;
//sbit TP0SIZ3 = UCON0^3;
//sbit TP0SIZ2 = UCON0^2;
//sbit TP0SIZ1 = UCON0^1;
//sbit TP0SIZ0 = UCON0^0;
/* UCON1 */
//sbit TSEQ1 = UCON1^7;
//sbit EP12SEL = UCON1^6;
//sbit TX0E = UCON1^5;
//sbit FRESUM = UCON1^4;
//sbit TP1SIZ3 = UCON1^3;
//sbit TP1SIZ2 = UCON1^2;
//sbit TP1SIZ1 = UCON1^1;
//sbit TP1SIZ0 = UCON1^0;
/* UCON2 */
//sbit TSEQ1 = UCON2^7;
//sbit EP12SEL = UCON2^6;
//sbit TX0E = UCON2^5;
//sbit SOUT = UCON2^4;
//sbit EP2E = UCON2^3;
//sbit EP1E = UCON2^2;
//sbit STALL2 = UCON2^1;
//sbit STALL1 = UCON2^0;
/* USTA */
//sbit RSEQ = USTA^7;
//sbit SETUP = USTA^6;
//sbit IN = USTA^5;
//sbit OUT = USTA^4;
//sbit RP0SIZ3 = USTA^3;
//sbit RP0SIZ2 = USTA^2;
//sbit RP0SIZ1 = USTA^1;
//sbit RP0SIZ0 = USTA^0;
/* UADR */
//sbit USBEN = UADR^7;
//sbit UADDR6 = UADR^6;
//sbit UADDR5 = UADR^5;
//sbit UADDR4 = UADR^4;
//sbit UADDR3 = UADR^3;
//sbit UADDR2 = UADR^2;
//sbit UADDR1 = UADR^1;
//sbit UADDR0 = UADR^0;
/* -----------------------------------
Interrupt Vectors:
Interrupt Address = (Number * 8) + 3
------------------------------------ */
#define RESET_VECTOR_ADDR 0 // Reset Address = 0
#define IE0_VECTOR 0 // 0x03 External Interrupt 0
#define IEO_VECTOR_ADDR 0x03
#define TF0_VECTOR 1 //0x0B Timer 0
#define TF0_VECTOR_ADDR 0x0B
#define IE1_VECTOR 2 //0x13 External Interrupt 1
#define IE1_VECTOR_ADDR 0x13
#define TF1_VECTOR 3 //0x1B Timer 1
#define TF1_VECTOR_ADDR 0x1B
#define SIO_VECTOR 4 //0x23 Serial Port 0
#define SIO_VECTOR_ADDR 0x23
#define TF2_VECTOR 5 //0x2B Timer 2
#define TF2_VECTOR_ADDR 0x2B
#define USB_VECTOR 6 //0x33 USB
#define USB_VECTOR_ADDR 0x33
#define DDC_VECTOR 7 //0x3B DDC
#define DDC_VECTOR_ADDR 0x3B
#define I2C_VECTOR 8 //0x43 I2C
#define I2C_VECTOR_ADDR 0x43
#define SIO1_VECTOR 9 //0x4B Serial Port 1
#define SIO1_VECTOR_ADDR 0x4B
sbit PrnCS=P1^5;
sbit POINTPULSEPIN=P1^6;
sbit PRN_LIFT_RIGHT=P1^7;
sbit PRN_D9=P3^5;//////////////////
typedef struct{
uchar head1;
uchar head2;
uchar cla;
uchar id;
uchar len;
uchar commbuf[233];
} COMMDATA;
typedef struct PASSWORD
{
unsigned char no[2]; /*数据域长度*/
unsigned char password[12];/*实际长度(如果是变长)*/
} PASSWORD;
typedef struct KEY
{
unsigned char index; /*数据域长度*/
unsigned char databuff[16];/*实际长度(如果是变长)*/
} KEY;
typedef struct TPDU
{
unsigned char source[2]; /*数据域长度*/
unsigned char dest[2];/*实际长度(如果是变长)*/
} TPDU;
#define MAXLEN 10
/*税控数据定义*/
#define MAXWARE 8
typedef struct{
uchar customer_name[20];
uchar dept[MAXWARE];
float units_price[MAXWARE];
float number[MAXWARE];
float subtotal[MAXWARE];
uchar vcode[10];
uchar ware_name[4][16];
uchar units[4][4];
}INVOICE_N;
typedef struct{
uchar id;
U32 total;
}TAX_DAY;
typedef struct{
uchar date[4]; //开票时间,bcd码
uchar type; //HEX,01-正常票,02-退票,03-废票
U32 id; //发票(打印)的后8位,hex码
TAX_DAY tax0[6];
U32 invoice_total; //单位 分,HEX,例如:0X186A0表示1000。00元
uchar fiscal_code[8]; //
U32 old_id; //退票处理时应保存所退发票号码,正常发票时为0
uchar resver[2]; //保留
INVOICE_N invoice;
}INVOICE_PRN_INFO;
typedef struct{
uchar vcode[10]; //发票代码 //
U32 start_id; //
U32 end_id;
uchar zc_count;
uchar tp_count;
uchar fp_count;
U32 invoice_total;
U32 tp_total;
uchar start_time[4];
uchar end_time[4];
}INVOICE_VOL;
typedef struct{
uchar vcode[10];
U32 start_id;
U32 end_id;
uchar mac[4];
}INVOICE_INFO;
typedef struct{
U32 cur_id;
U32 end_id;
uchar f_first;
}INVOICE_CUR_INFO;
typedef struct{
uchar index;
INVOICE_INFO invoice_info[20];
}INVOICE_INPUT;
typedef struct{
U32 total;
U32 tp_total;
}TAX_DAY1;
typedef struct{
uchar date[4];
uint zc_count;
uint tp_count;
uint fp_count;
uchar id[6];
TAX_DAY1 tax1[6];
uchar sign_code[128];
}INVOICE_DAY;
typedef struct{
uchar id[8];
uchar time[4];
uchar hversion[18];
uchar sversion[18];
}MACHINE;
typedef struct{
uchar file_index;
uchar sam_id[8];
uchar sam_password[8];
uchar start_time[4];
uchar valid_time[4];
uchar user_name[40];
uchar user_id[8];
uchar fiscal_id[20];
uchar mag_id[4];
uchar send_mode;
uchar end_time[4];
uchar machine_id[8];
uchar tax_id[6];
U32 one_top;
U32 zc_total_top;
U32 tp_total_top;
}USER;
typedef struct{
U32 total;
U32 tp_total;
}TAX_DAY2;
typedef struct{
U32 zc_count;
uint tp_count;
uint fp_count;
uchar id[6];
TAX_DAY2 tax2[6];
uchar st_date[4];
uchar ed_date[4];
uchar cur_date[4];
U32 zc_total_top;
U32 tp_total_top;
}SPAN;
typedef struct{
uchar tax_id;
uchar tax_code[4];
uchar tax_count[2];
uchar sale_cn_name[20];
uchar sale_en_name[20];
}TAX;
typedef struct{
uchar sam_id[8];
uchar st_date[4];
uchar ed_date[4];
U32 zc_count;
uint tp_count;
uint fp_count;
uchar id[6];
U32 total[6];
U32 tp_total[6];
U32 zc_total_sam;
U32 tp_total_sam;
uchar status;
uchar mac[4];
uchar sign_data[128];
uchar lrc;
}DECLARE_DATA;
typedef struct{
uchar date[4];
uchar user_id[8];
uchar mach_code[8];
uchar type;
uchar buff[212];
}FISCAL_CK;
typedef struct{
U32 index1;
U32 index2;
uint n;
uchar cur;
uint t;
}FISCAL_CK_INDEX;
#define STX 0x02
#define ETX 0x03
#define CMD_SC_POWER_ON 0x6C
#define CMD_SC_POWER_OFF 0x4C
#define CMD_SC_ISO_IN 0xCA
#define CMD_SC_ISO_OUT 0xCB
#define CMD_SAM_POWER_ON 0x6D
#define CMD_SAM_POWER_OFF 0x4D
#define CMD_SAM_ISO_IN 0xDA
#define CMD_SAM_ISO_OUT 0xDB
#define CMD_CONNECT 0x01
#define CMD_GET_INIT_DATA 0x10
#define CMD_GET_ONE_DAILY 0x11
#define CMD_GET_SPAN_DAILY 0x12
#define CMD_GET_ID_VOL 0x13
#define CMD_GET_SPAN_VOL 0x14
#define CMD_GET_ID_PRN 0x15
#define CMD_GET_SPAN_PRN 0x16
#define CMD_GET_UPDATE_DATA 0x17
#define CMD_SET_UPDATE_DATA 0x18
#ifndef _UPSD_XREG_
#define _UPSD_XREG_
// Modified by William Chin for uPSD3234 from ST Microelectronics
// ******************* New SFR **********************
// * *
// ****************************************************
//sfr P1SFS = 0x91;
#define bADC0 0x10
#define bADC1 0x20
#define bADC2 0x40
#define bADC3 0x80
//sfr ACON = 0x97;
#define bADEN 0x20
#define bADS1 0x08
#define bADS0 0x04
#define bADST 0x02
#define bADSF 0x01
//sfr IEA = 0xa7;
#define bEDDC 0x80
#define bES2 0x10
#define bEI2C 0x02
#define bEUSB 0x01
//sfr UDT1 = 0xe6;
//sfr UDT0 = 0xe7;
//sfr UISTA = 0xe8;
#define uSUSPENDF 0x80
#define uRSTF 0x20
#define uTXD0F 0x10
#define uRXD0F 0x08
#define uTXD1F 0x04
#define uEOPF 0x02
#define uRESUMEF 0x01
//sfr UIEN = 0xe9;
#define uSUSPNDIE 0x80
#define uMCUR 0x40
#define uRSTF 0x20
#define uTXD0IE 0x10
#define uRXD0IE 0x08
#define uTXD1IE 0x04
#define uEOPIE 0x02
#define uRESUMIE 0x01
//sfr UCON0 = 0xea;
#define uTSEQ0 0x80
#define uSTALL0 0x40
#define uTX0E 0x20
#define uRX0E 0x10
#define uTP0SIZ3 0x08
#define uTP0SIZ2 0x04
#define uTP0SIZ1 0x02
#define uTP0SIZ0 0x01
//sfr UCON1 = 0xeb;
#define uTSEQ1 0x80
#define uEP12SEL 0x40
#define uTX1E 0x20
#define uFRESUM 0x10
#define uTP1SIZ3 0x08
#define uTP1SIZ2 0x04
#define uTP1SIZ1 0x02
#define uTP1SIZ0 0x01
//sfr UCON2 = 0xec;
#define uSOUT 0x10
#define uEP2E 0x08
#define uEP1E 0x04
#define uSTALL2 0x02
#define uSTALL1 0x01
//sfr USTA = 0xed;
#define uRSEQ 0x80
#define uSETUP 0x40
#define uIN 0x20
#define uOUT 0x10
#define uRP0SIZ3 0x08
#define uRP0SIZ2 0x04
#define uRP0SIZ1 0x02
#define uPR0SIZ0 0x01
//sfr UADR = 0xee;
#define uUSBEN 0x80
//sfr UDR0 = 0xef;
//sfr SCON2 = 0x9a;
#define b_TI 0x02
#define b_RI 0x01
#define b_REN 0x10
//sfr SBUF2 = 0x9b;
//sfr WDKEY = 0xae;
#define WD_OFF 0x55
#endif
#define ENGLISH 00 //---|
#define HZ_CHAR 10 // |____ INPUT_STATE
#define HZ_PY 11 // |
#define HZ_WB 12 //---|
#define HZ_QW 13
#define PSD_REG_ADDR 0x200 // uPSD PSD Register I/O base addr
#define ST_PRN_ADR 0x0000
#define ED_PRN_ADR 0x1fffff //正常发票32 block 8190 张
#define ST_VOL_ADR 0x200000 //发票卷,4 block最大768~1024卷
#define ED_VOL_ADR 0x23ffff
#define ST_DCL_ADR 0x300000 //报税记录,4 Block 最大768~1024
#define ED_DCL_ADR 0x33ffff
#define ST_DAY_ADR 0x240000 //2400个日累计
#define ED_DAY_ADR 0x2fffff
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?