📄 diss_s.c
字号:
#include "upsd.h"
#include <absacc.h>
#include "zhd.h"
#include "dis1_1.h"
#include <intrins.h>
#include "ssxandicc.h"
#include "string.h"
#include "stdio.h"
#include "mag.h"
#define ENGLISH 00 //---|
#define HZ_CHAR 10 // |
#define HZ_PY 11 // |____ INPUT_STATE
#define HZ_WB 12 //---|
#define HZ_QW 13 // |
#define HZ_SX 14 //---|
//uchar xdata fft[256] _at_ 0x7f00;
//uchar xdata x32[32];
/**********************/
/* 汉字,汉字行显示模块*/
/* 完成日期2005-1-10,ease to us DisHz */
/* no hzdm change */
/*使用要注意显示缓存与编译模式的关系*/
/************************************/
// 19264
// CS3---A4
// CS2---A3
// CS1---A2
// R/~W--A1 +++--control --+
// D/~I--A0 + +--WR |
// E-----------+++--RD ;if read E must is high,if write E must high to low +-->
// start adr of buffer which store information of hzdm
#define CS1STATE_R XBYTE[0x31a] // | E--must be high
#define CS2STATE_R XBYTE[0x316] // |=>read chip state DB.7=1 busy; DB.5=1 on; DB.4=1 Rst
#define CS3STATE_R XBYTE[0x30e] // |
#define CS1COM_W XBYTE[0x318] // + + write chip command include 'ON=0x3f,OFF=0x3e';setup startline with ddram C0h~FFH
#define CS2COM_W XBYTE[0x314] // +==>+ setup row_adr "40h~7Fh,(64row)/CS,total 3*64row " NOT: row_adr auto +1 if write_data
#define CS3COM_W XBYTE[0x30c] // + + setup Col_adr "B8h~BFh,(8col)/cs,(8dot/col),total 8col,because 16dot/hz so max dis(8/2)row hz
#define CS1DATA_W XBYTE[0x319] // |
#define CS2DATA_W XBYTE[0x315] // |=>write HZDM information to display at row/col setup by command_W
#define CS3DATA_W XBYTE[0x30d] // | write data then row_adr auto +1;
#define CS1DATA_R XBYTE[0x313] // + 31B
#define CS2DATA_R XBYTE[0x317] // +==>read chip data to Data_bus ,read row auto +1
#define CS3DATA_R XBYTE[0x30f] // +
/*
*/
extern uint crcbuf(uint len, uchar *buf);
extern FISCAL_DATA_INDEX xdata fiscal_data_index;
SPAN xdata span1;
extern void InvoicePrint();
void fiscalcheck();
void check();
void base_info();
void fiscal();
uchar xdata LineNumber _at_ 0x537;
uchar xdata jinechaoxian _at_ 0xddc;
extern uchar daily_collect_sign(void);
extern ulong bcd_to_long (uchar *bcd_buf, uchar lgBcd);
//void input_inv_pro();
void fiscal_chk();
extern void InvVolCHK();
extern void DeclareCHK();
extern void DailyCHK();
extern uchar * declare_chk(void);
extern void daily_chk(void);
extern void DailyCollectOrDeclareDuty(uchar n);
uchar InvoiceStatus();
void InvGet();
extern uchar xdata fiscal_id1;
//U32 xdata TuiPiaoTemp[3] _at_ 0x538;//tuipiaocunqian
uchar xdata InvNumber _at_ 0x520; //6zhangjishuqi
uint xdata AutInvIndex _at_ 0x521; //fapiaozhizhen
uchar xdata LastDay _at_ 0x550; //Yuemofapiaojishuqi
//extern xdata float aaaa,bbbb,cccc,dddd,eeee,ffff;
//extern uchar * TimeCHK(uchar *p);
extern INVOICE_PRN_INFO xdata inv_prn_cur_old_info;
extern INVOICE_DAY xdata inv_tmp_day;
extern uchar update_control(void);
extern DECLARE_DATA xdata declare_tmp_data ;
uchar fiscal_check(void);
uchar fiscal_check_getadr(uchar n);
extern FISCAL_CK xdata fiscal_ck_dat;
extern uchar get_volume_info(uchar* str);
extern INVOICE_VOL xdata inv_tmp_vol;
extern FISCAL_CK_INDEX xdata fiscal_ck_index;
extern void StrToHex1(uchar *src, uchar *dest, uchar len);
extern void HexToStr(uchar *src, uchar *dest, uchar len);
extern void distribute_invoice();
extern uchar declare_fiscal(void);
void DailyCollect();
//extern void Prn_HPaper(unsigned char n);
extern INVOICE_PRN_INFO xdata inv_prn_tmp_info;
extern uchar long_to_asc (uchar *ascii_buf, uchar lgAsc, ulong *ptSrc);
extern void SelfCHK1(void);
void DisAsc(uchar *p_dm,uchar col,uchar row);
void fnLCMInit(void);
extern uchar fiscal_check_auth(void);
uchar xdata prn_page_buf[34][36] _at_ 0x900;
//extern void InvoiceGenerate1(void);
extern void Prn_Sp(uchar *phzline);
void DisHzYm(uchar *p_dm,uchar col,uchar row);
void DisHzLinYm(uchar *p_hzline,uchar col);
extern uchar ExeIcc(uchar *src,bit mode);
uchar xdata databuf[10] _at_ 0x60a;
extern void InvoiceFullIn();
uchar xdata ID_byte[3];
//extern void rd_id(uchar *buf);
void Start_format();
extern uchar getstr(uchar keynum,uchar * keybuff,uchar col);
//extern void INVCHK (void);
extern void Delay1(void);
void BlankREC(void);
uchar xdata flash_temp[256] _at_ 0x800;
extern code void upsd_i2c_init (void);
extern code void upsd_i2c_xmit (uchar i2c_address, uchar start_address, uchar data_len);
extern code void upsd_i2c_rcv (uchar i2c_address, uchar start_address, uchar data_len);
extern code void i2c_wait_for_int (void);
extern INVOICE_PRN_INFO xdata inv_prn_cur_info;
void com_process(void);
extern void AutoInvoiceCHK(void);
INVOICE_INPUT xdata invoice_input1;
extern uchar xdata i2c_xmit_buf[20];
extern uchar xdata i2c_rcv_buf[20];
extern bit ERROR;
xdata COMMDATA chCommData;
uchar xdata F_rs232=0;
extern uchar xdata AutoInvoiceNumber;
ulong xdata TimeControlCard;
ulong xdata SeaInvoice;
//void InvDisCHKandPrnDate();
//void InvDisCHKandPrnNum();
extern void rd_buf1(ulong adr);
code uchar * Err_CHK1[7] = {
" CPU正常",
" ROM累加和为0x1d, 正常",
" RAM写读正常",
" 发票税控存储器",
" 串口环线已经连接",
" 串口环线没有连接",
" 自检正常"
};
void HzHsCHG(void);
uchar fiscal_fei();
void ModifyPassWord(uchar n);
uchar PassWord(uchar n);
uchar data g_temp ;
uchar data keyc ;
uchar code *p_cb ;
uchar xdata *p_xb ;
extern uchar xdata Hz_Record[40] ;
TIME xdata sys_time;
uint xdata timebit _at_ 0x508;
uchar xdata Invoice_Mode _at_ 0x5dd;
uchar xdata HZResult_col;
uchar xdata HZResult_row;
uchar xdata HZInput_max;
uchar code *xdata p_team[24];
extern uchar code ASC_Xing;
//-------------------------------------------------------------------//
uchar xdata input_state;
uchar fiscal_declare(void);
extern void DisplayTime();
extern uchar fun_digitinput(uchar col);
extern uchar fiscal_tui(void);
uchar * Readtime1(void);
extern void Prn_Paper1(uchar n);
extern void InvoiceDisCHKandPrn(uchar mode);
//-------------------------------------------------------------------//
extern void PRN(uchar n);
void QingMiMa();
void DisAsc(uchar *p_dm,uchar col,uchar row);
void DisAscPush(uchar *p_dm,uchar col,uchar end_row);
void DisAscPop(uchar col,uchar end_row);
void DisHz(uchar *p_dm,uchar col,uchar row);
void ClsLin(uchar col);
extern uchar xdata InvoicePrintIndex;
void PTeamInit(uchar *p_dm,uchar col);
extern void GetKey();
extern code void InvokeCal(uchar col);
extern code void DL(void);
extern code void HzInput(void);
void Writetime1(void);
extern uint code *p_cword;
void cls(void);
extern void init_shui(void);
extern uchar xdata sw1,sw2,stat,length;
extern uchar xdata icc_buff[250];
extern FISCAL_CK_INDEX xdata fiscal_ck_index;
extern code void Result(uchar col);
void DisAsc(uchar* p_dm,uchar row,uchar col);
extern void rs232_s(void);
extern void rs232_2s(uchar *d_data,uchar data_len);
extern void Com_Init2(void);
extern void Com_Init(void);
extern void rs232_send_byte (uchar da);
extern void rs232_ss(void);
extern PSD_REGS UPSD_xreg;
/*****************************************************************************************/
uchar xdata gCurRow,gCurCol; // 当前行、列存储,行高16点,列宽8点
extern uchar xdata f_shouxie;
extern void Poslogin(void);
extern xdata PASSWORD sys_man;
extern xdata PASSWORD manager;
extern void icc_init() ;
extern void icc_init_sam();
extern void issue_invoice(void);
extern uchar input_invoice();
extern uchar xdata icctemp[16];
extern uchar xdata icctemp1[4];
xdata uchar Mac_Code[8] _at_ 0x5c00;
extern FISCAL_CK_INDEX xdata fiscal_ck_index;
extern INVOICE_DAY xdata inv_cur_day;
extern INVOICE_VOL xdata inv_cur_vol;
extern INVOICE_PRN_INFO xdata inv_prn_cur_info;
extern xdata INVOICE_CUR_INFO inv_cur_info;
DECLARE_DATA xdata declare_data _at_ 0x7380;
INVOICE_INPUT xdata invoice_input _at_ 0x1000;
extern USER xdata user;
extern TAX xdata tax[6];
uchar xdata Temp_All[8] _at_ 0x6f0;
uchar xdata Init_Flag _at_ 0x510;
uchar xdata Fit_Flag _at_ 0x511;
uchar xdata timeinput _at_ 0x513;
uchar xdata cal _at_ 0x518;
extern void er_buck(void);
extern void er_sector(ulong addr);
extern void rd_buf(ulong addr);
extern void wr_page(ulong addr);
extern uchar update_user();
float CalDataInput(uchar col);
extern void ModifyTime();
void PRN_CHK(void);
uchar xdata InvoiceMode _at_ 0x512 ;
//extern code void TimeInvoiceTotal();
extern code void SingleInvoiceTotal();
extern void ElectrBackup();
extern SPAN xdata span;
void LCD_CHK(void);
void QX_CHK(void);
extern void timer0_init (void);
uchar xdata icctempp[32];
void AUTO_CHK();
void UserBaseInfo();
void ISO7816_CHK();
//uchar xdata InvoiceIndex _at_ 0x524;
//U32 xdata InvoiceTemp _at_ 0x519;
uchar xdata GLZpassword[10] _at_ 0x6fc;
uchar xdata YYYpassword[10] _at_ 0x5fa;
uchar xdata colnumber _at_ 0xdcf;
uchar xdata pp;
uchar xdata *p11;
uchar xdata declare_temp[4];
void time_input(void);
void HzHsCHG(void);
uchar PassWord1(void);
void main()
{
//uchar *p;
float zzzz;
uint asz=0x1234;
zzzz=((float)asz)/100;
UPSD_xreg.DIRECTION_A=0xff;
UPSD_xreg.DATAOUT_A=0x0f;
UPSD_xreg.DIRECTION_D=6;
UPSD_xreg.DATAOUT_D=2;
WDKEY=0x55;
f_shouxie=0;
input_state=HZ_PY;
Com_Init();
Com_Init2();
EA=1;
upsd_i2c_init();
cal=0;
HzHsCHG();
memcpy(span.id,user.tax_id,6);
UPSD_xreg.DIRECTION_C=0x80;
UPSD_xreg.DATAOUT_C=0x00;
UPSD_xreg.DATAOUT_D=6;
fnLCMInit();
time_input();
rs232_2s("欢迎使用博通税控收款机,谢谢",28);
if(Init_Flag!=1)
{
cls();
DisHzLinYm(" 本机初始化? Y/N?",Col2);
GetKey();
if(keyc=='y')
{
INIT_PRO:
DisHzLinYm(" 请装好税控卡,用户卡",Col2);
GetKey();
CARD_IO=1;
CARD_IO_SAM=1;
P4_2=0;
P4_6=0;
if((CARD_IO==1)&&(CARD_IO_SAM==1))
{
P4_2=1;
P4_6=1;
icc_init() ;
icc_init_sam();
icc_reset_sam();
if(length<4)
{
DisHzLinYm("税控卡无响应,初始化,Y/N?",Col2);
GetKey();cls();
if(keyc=='y')goto INIT_PRO;
else Init_Flag=0;goto INIT_PRO_END;
}
icc_reset();
if(length<4)
{
DisHzLinYm(" 用户卡无响应,初始化?Y/N?",Col2);
GetKey();cls();
if(keyc=='y') goto INIT_PRO;
else Init_Flag=0;goto INIT_PRO_END;
}
}
else
{
cls();
if(CARD_IO==0)DisHzLinYm(" 用户卡故障",Col2);
if(CARD_IO_SAM==0)DisHzLinYm(" 税控卡故障",Col2);
DisHzLinYm(" 重新初始化,Y/N?",Col2);
GetKey();
if(keyc=='y')goto INIT_PRO;
else Init_Flag=0;goto INIT_PRO_END;
}
init_shui();
if(stat!=0)
{
cls();
if(stat==1) DisHzLinYm(" 税控卡不匹配",Col2);
else if(stat==2) DisHzLinYm(" 用户卡不匹配",Col2);
else
{
DL();
DisHzLinYm(" 非法的初始化",Col2);
DL();
goto INIT_PRO_END;
}
DL();
DisHzLinYm(" 重新初始化,Y/N?",Col2);
GetKey();
if(keyc=='y')goto INIT_PRO;
else Init_Flag=0;goto INIT_PRO_END;
}
DisHzLinYm(" 正在初始化,请稍候...",Col2);
update_user();
Init_Flag=1;
Fit_Flag=1;
memset(&inv_cur_day,0,sizeof(inv_cur_day));
p11=Readtime1();
inv_cur_day.date[0]=32;
inv_cur_day.date[1]=sys_time.year;
inv_cur_day.date[2]=sys_time.month;
inv_cur_day.date[3]=sys_time.date;
memcpy(span.st_date,user.start_time,4);
memcpy(span.ed_date,user.start_time,4);
invoice_input.index=0;
//memcpy(inv_cur_day.date,p11,4);
for(pp=0;pp<6;pp++)inv_cur_day.id[pp]=tax[pp].tax_id;
er_buck();
}
else Init_Flag=0;goto INIT_PRO_END;
}
else
{
Fit_Flag=1;
icc_init() ;
icc_init_sam();
icc_reset_sam();
if(length<4)Fit_Flag=0;
goto INIT_PRO_END;
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
icc_buff[0]=0x00;//读税控机注册号
icc_buff[1]=0xb0;//READ EF02
icc_buff[2]=0x82;
icc_buff[3]=0x0a;
icc_buff[4]=8;
icc_sam_out();
if(memcmp(icc_buff,Mac_Code,8)!=0)Fit_Flag=0;
} //sys_man.no[0]='8';sys_man.no[1]='8';for(loop=0;loop<6;loop++) sys_man.password[loop]='8';
INIT_PRO_END:
pp=1;
cls();
//memset(&inv_cur_info,0,sizeof(inv_cur_info));
if(LineNumber)
{
//memset(&prn_page_buf,'H',31*32);
DisHzLinYm(" 票据打印,请稍候...",Col2);
LineNumber=LineNumber-1;
memset(&prn_page_buf[LineNumber][0],32,31+colnumber);
BfLine();BfLine();
Prn_Paper1(34);
cls();
}
/*
while(pp)
{
LineNumber=0;
//if(LineNumber)
//{
memset(&prn_page_buf,'H',31*32);
//DisHzLinYm(" 票据打印,请稍候...",Col4);
//LineNumber=LineNumber-1;
//memset(&prn_page_buf[LineNumber][0],32,31+colnumber);
//BfLine();BfLine();
Prn_Paper1(34);
//pp++;
//cls();
//}
} */
DisHzLinYm(" 有了您的纳税", Col1);
DisHzLinYm("才有了中华民族的伟大复兴", Col3);
DisHzLinYm(" 华博税控SY-A6伴您成功", Col4);
GetKey();
do
{
cls();
DisHzLinYm("1.税控销售 2.税控管理",Col1);
DisHzLinYm("3.基本信息 4.机器检验",Col2);
DisHzLinYm("5.历史信息 6.退货处理",Col3);
DisHzLinYm("7.废票处理 8.税控稽查",Col4);
//DailyCollect();
GetKey();
cls();
switch(keyc)
{
case 1:
if(PassWord(2))break;
do
{
if(InvoiceStatus()==0)
{
memset(&inv_prn_cur_info,0,sizeof(inv_prn_cur_info));
memset(&inv_tmp_day.tax1,0,48);
memset(&span1,0,sizeof(span1));
inv_prn_cur_info.type=1;
DailyCollect();
InvoiceFullIn();
if(InvoicePrintIndex==0)InvoicePrint();
jinechaoxian=0;
}
else keyc=0x1b;
}while(keyc!=KEY_ESC);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -