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 + -
显示快捷键?