📄 diss_s.c
字号:
p_chip=&CS2DATA_W;
*p_chip=*(p_dm++);
p_chip=&CS2STATE_R;
while(0xff==*p_chip);
}
col++;
}
}
if(row>=17&&row<=24)
{
for(j=1;j<=2;j++)
{
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
p_chip=&CS3COM_W;
*p_chip=col; //write LINE_adr b8,ba,bc,be
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
p_chip=&CS3COM_W;
switch(row)
{
case 17: *p_chip=0x40;break; // row_start_adr/hz
case 18: *p_chip=0x48;break;
case 19: *p_chip=0x50;break;
case 20: *p_chip=0x58;break;
case 21: *p_chip=0x60;break; // row_start_adr/hz
case 22: *p_chip=0x68;break;
case 23: *p_chip=0x70;break;
case 24: *p_chip=0x78;break;
}
for(i=0;i<=7;i++)
{
p_chip=&CS3DATA_W;
*p_chip=*(p_dm++);
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
}
col++;
}
}
}
void DisHz(uchar *p_dm,uchar col,uchar row)
{
uchar xdata *p_chip;
uchar data temp,*p;
uchar data i,j;
uchar xdata x32[32],y[8];
if(row>=1&&row<=7)
{
for(j=1;j<=2;j++)
{
p_chip=&CS1STATE_R;
while(0xff==*p_chip);
p_chip=&CS1COM_W;
*p_chip=col; //write LINE_adr b8,ba,bc,be
p_chip=&CS1STATE_R;
while(0xff==*p_chip);
p_chip=&CS1COM_W;
switch(row)
{
case 1: *p_chip=0x40;break; // row_start_adr/hz
case 2: *p_chip=0x48;break;
case 3: *p_chip=0x50;break;
case 4: *p_chip=0x58;break;
case 5: *p_chip=0x60;break; // row_start_adr/hz
case 6: *p_chip=0x68;break;
case 7: *p_chip=0x70;break;
case 8: *p_chip=0x78;break;
}
for(i=0;i<=15;i++)
{
p_chip=&CS1DATA_W;
temp=*(p_dm++);
*p_chip=temp;
p_chip=&CS1STATE_R;
while(0xff==*p_chip);
}
col++;
}
}
if((row%8)==0)
{
for(i=0;i<32;i++)
{
temp=*(p_dm++);
x32[i]=temp;
}
memcpy(y,&x32[8],8);
memcpy(&x32[8],&x32[16],8);
memcpy(&x32[16],y,8);
p=x32;
DisAsc(p,col,row);
memcpy(x32,&x32[16],16);
p=x32;
DisAsc(p,col,row+1);
}
if(row>=9&&row<=15)
{
for(j=1;j<=2;j++)
{
p_chip=&CS2STATE_R;
while(0xff==*p_chip);
p_chip=&CS2COM_W;
*p_chip=col;
p_chip=&CS2STATE_R;
while(0xff==*p_chip);
p_chip=&CS2COM_W;
switch(row)
{
case 9: *p_chip=0x40;break; // row_start_adr/hz
case 10: *p_chip=0x48;break;
case 11: *p_chip=0x50;break;
case 12: *p_chip=0x58;break;
case 13: *p_chip=0x60;break; // row_start_adr/hz
case 14: *p_chip=0x68;break;
case 15: *p_chip=0x70;break;
case 16: *p_chip=0x78;break;
}
for(i=0;i<=15;i++)
{
p_chip=&CS2DATA_W;
temp=*(p_dm++);
*p_chip=temp;
p_chip=&CS2STATE_R;
while(0xff==*p_chip);
}
col++;
}
}
if(row>=17&&row<=23)
{
for(j=1;j<=2;j++)
{
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
p_chip=&CS3COM_W;
*p_chip=col; //write LINE_adr b8,ba,bc,be
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
p_chip=&CS3COM_W;
switch(row)
{
case 17: *p_chip=0x40;break; // row_start_adr/hz
case 18: *p_chip=0x48;break;
case 19: *p_chip=0x50;break;
case 20: *p_chip=0x58;break;
case 21: *p_chip=0x60;break; // row_start_adr/hz
case 22: *p_chip=0x68;break;
case 23: *p_chip=0x70;break;
case 24: *p_chip=0x78;break;
}
for(i=0;i<=15;i++)
{
p_chip=&CS3DATA_W;
temp=*(p_dm++);
*p_chip=temp;
p_chip=&CS3STATE_R;
while(0xff==*p_chip);
}
col++;
}
}
}
void PRN_OneLine(uchar line)
{
uchar *p;
DL();
DL();
DL();
p=Err_CHK1[line];
*(p+33)=0;
PrnCS=0;
while(!PRN_LIFT_RIGHT);
Prn_Sp(p);
PrnCS=1;
}
void AUTO_CHK()
{
uchar j;
for(j=0;j<2;j++)
{
PRN_OneLine(0);
PRN_OneLine(1);
PRN_OneLine(2);
PRN_OneLine(3);
DL();
LCD_CHK();cls();
DisHzLinYm(" 正在自检,请稍候...",Col2);
PRN_CHK();
if(P3_0&&P3_1)PRN_OneLine(5);
else PRN_OneLine(4);
cls();
}
PRN_OneLine(6);
DisHzLinYm(" 自检完成,按ESC键退出",Col2);
}
void CPUCHK()
{
PrnCS=0;
FfLine();DL();BfLine();
while(PRN_LIFT_RIGHT);
PrnCS=1;
PRN_OneLine(1);
}
void SelfCHK1(void)
{
uchar i;
cls();
DisHzLinYm(" 按1检测CPU,ESC退出检测",Col1);
do
{
GetKey();
DisHzLinYm(" 按1检测CPU,ESC退出检测",Col1);
switch (keyc)
{
case 1:
DisHzLinYm(" 1. CPU检测...",Col2);
CPUCHK();
DisHzLinYm("OK,按2检测ROM",Col3);
break;
case 2:
cls();
DisHzLinYm(" 2. ROM检测...",Col3);
PRN_OneLine(2);
DisHzLinYm("OK,按3检测RAM",Col3);
break;
case 3:
cls();
DisHzLinYm(" 3. RAM检测...",Col3);
PRN_OneLine(4);
DisHzLinYm("OK,按4检测存储器",Col3);
break;
case 4:
cls();
DisHzLinYm(" 4. 存储器检测...",Col3);
PRN_OneLine(3);
DisHzLinYm("OK,按5检测LCD",Col3);
for(i=0;i<10;i++)FfLine();
break;
case 5:
LCD_CHK();
cls();
DisHzLinYm("OK,按6检测键盘Q键退出",Col1);
break;
case 6:
cls();
DisHzLinYm(" Q键退出",Col2);
i=0;
while(keyc!='q')
{
GetKey();
if(((keyc>=0x20)&&(keyc<=0x7e))||(keyc<=9))
{
if(keyc>=10)DisAsc(&PrnVAsc+(keyc-' ')*0x10,Col2+i/24+i/24,i%24);
else DisAsc(&PrnVAsc+(keyc+0x10)*0x10,Col2+i/24+i/24,i%24);
i++;
}
}
cls();
DisHzLinYm(" 按7,打印测试",Col3);
break;
case 7:
cls();
PRN_CHK();
for(i=0;i<10;i++)FfLine();
cls();
DisHzLinYm(" 请按8,测试钱箱",Col3);
break;
case 8:
QX_CHK();
cls();
DisHzLinYm(" 请按9,串口测试",Col3);
break;
case 9:
cls();
DisHzLinYm(" UART检测...",Col3);
if((P3_0)&&(P3_1))
{
DisHzLinYm(" UART串口线没有连接",Col3);
PRN_OneLine(5);
}
else
{
DisHzLinYm(" UART串口线连接正常",Col3);
PRN_OneLine(4);
}
break;
}
}while(keyc!=KEY_ESC);
}
void LCD_CHK(void)
{
uchar data i,j,k;
for(k=0;k<5;k++)
{
for(j=0;j<4;j++)
{
for(i=0;i<24;i++)
{
if(k==0){DisAsc(&FF,0xb8+j+j,i);DL30MS();}
if(k==1){DisAsc(&PrnVAsc,0xb8+j+j,i);DL30MS();}
if(k==3)DisAsc(&PrnVAsc+16*(0x21+i+j*5),0xb8+j+j,i);
if(k==4)DisAsc(&PrnVAsc+(16+i%10)*16,0xb8+j+j,i);
}
if(k==2)
{
DisHzLinYm(" 国家电子计算机检测中心",0xb8+j+j);
}
DL();
}
}
}
void QX_CHK(void)
{
DisHzLinYm(" Q键退出",Col1);
do
{
UPSD_xreg.DATAOUT_A|=0x20;
DL30MS();
UPSD_xreg.DATAOUT_A&=0x9f;
GetKey();
}while(keyc!='q');
}
void PRN_CHK(void)
{
uchar i;
memset(prn_page_buf,'X',sizeof(prn_page_buf));
prn_page_buf[0][0]=0;
Prn_Paper1(26);
PrnCS=0;
while(PRN_LIFT_RIGHT);
PrnCS=1;
for(i=0;i<5;i++)FfLine();
}
uchar fiscal_declare(void)// 报税 ok
{
uchar data status,i,temp[4];
uchar *p;
ulong ii;
cls();
DisHzLinYm(" 请确认已插入用户卡",Col2);
memcpy(declare_data.st_date,span.st_date,4);
memcpy(declare_data.id,span.id,6);
memcpy(declare_data.sam_id,user.sam_id,8);
GetKey();
declare_data.zc_count= span.zc_count;
declare_data.tp_count= span.tp_count;
declare_data.fp_count= span.fp_count;
for(i=0;i<6;i++)
{
declare_data.total[i]=span.tax2[i].total;
declare_data.tp_total[i]=span.tax2[i].tp_total;
}
reinput:
cls();
DisHzLinYm("请输入报税的开始日期:",Col1);
getstr(8,databuf,Col2);
if(keyc==0x1b)return 1;
for(i=0;i<4;i++)temp[i]=(databuf[i+i]-48)*16+databuf[i+i+1]-48;
memcpy(declare_data.st_date,temp,4);
DisHzLinYm("请输入报税的截止日期:",Col3);
getstr(8,databuf,Col4);
if(keyc==0x1b)return 1;
for(i=0;i<4;i++)temp[i]=(databuf[i+i]-48)*16+databuf[i+i+1]-48;
memcpy(declare_data.ed_date,temp,4);
p=Readtime1();
if(memcmp(&declare_data.ed_date,p,4)>=0)goto reinput;
status=declare_fiscal();
if(status!=0)
{
cls();
if(status==1)DisHzLinYm("用户卡不匹配!",Col4);
else if(status==2)DisHzLinYm("申报数据已汇总!",Col4);
DisHzLinYm("申报失败!",Col2);
DL();
return 1;
}
cls();
DisHzLinYm(" 申报成功!",Col2);
memcpy(declare_temp,declare_data.ed_date,4);
memcpy(flash_temp,&declare_data,sizeof(declare_data));
ii=fiscal_data_index.dcl_index;
ii=ii*256;
ii=ii+ST_DCL_ADR;
if(fiscal_data_index.dcl_index>=1024)fiscal_data_index.dcl_index=0;//1000张报税记录
if(fiscal_data_index.dcl_index%256==0)er_sector(ii);
wr_page(ii);
fiscal_data_index.dcl_index++;
jinechaoxian=2;
DL();
return 0;
}
uchar fiscal_fei()
{
uchar i,*p;
ulong ii;
cls();
p=Readtime1();
memset(&inv_prn_cur_info,0, sizeof(inv_prn_cur_info));
for(i=0;i<6;i++)
inv_prn_cur_info.tax0[i].id=tax[i].tax_id;//i+1;
inv_prn_cur_info.id=inv_cur_info.cur_id;
memcpy(inv_prn_cur_info.invoice.vcode,inv_cur_vol.vcode,10);
memcpy(inv_prn_cur_info.date,p,4);
inv_prn_cur_info.invoice_total=0;
inv_prn_cur_info.type=0x03;
issue_invoice();
if(stat!=0)
{
cls();
DisHzLinYm(" 税控码错误",Col2);
memset(&inv_prn_cur_info,0, sizeof(inv_prn_cur_info));
return 1;
}
inv_cur_info.cur_id++;
inv_cur_vol.fp_count++;
inv_cur_day.fp_count++;
memcpy(&inv_prn_cur_old_info,&inv_prn_cur_info,sizeof(inv_prn_cur_old_info));
memcpy(flash_temp,&inv_prn_cur_info,sizeof(inv_prn_cur_info));
if(fiscal_data_index.prn_h_index>6000)fiscal_data_index.prn_h_index=0; //5719张发票最小7900张
ii=fiscal_data_index.prn_h_index;
ii=ii*256;
if(fiscal_data_index.prn_h_index%256==0)er_sector(ii);
wr_page(ii);
fiscal_data_index.prn_h_index++;
for(i=0;i<10;i++)FfLine();
DisHzLinYm("废掉当前发票成功",Col3);
if(inv_cur_info.cur_id>inv_cur_vol.end_id)
{
memcpy(inv_cur_vol.end_time,inv_prn_cur_info.date,4);
cls();
DisHzLinYm(" 发票卷打印中,请稍等...",Col3);
memcpy(&inv_tmp_vol,&inv_cur_vol,256);
SingleInvoiceTotal();
memset(flash_temp,0,sizeof(flash_temp));
memcpy(flash_temp,&inv_cur_vol,sizeof(inv_cur_vol));
ii=fiscal_data_index.vol_flash_index;
ii=ii*256;
ii=ST_VOL_ADR+ii;
if(fiscal_data_index.vol_flash_index>=1024)fiscal_data_index.vol_flash_index=0; //1800个日交易记录
if(fiscal_data_index.vol_flash_index%256==0)er_sector(ii);
wr_page(ii);
memset(&inv_cur_vol,0,sizeof(inv_cur_vol));
fiscal_data_index.vol_flash_index++;
Prn_Paper1(22);
invoice_input.index=0;
}
memset(&inv_prn_cur_info,0, sizeof(inv_prn_cur_info));
return 0;
}
void input_inv_pro()//分发发票 ok
{
uchar data i;
uchar data sstat,temp[2];
do
{
cls();
DisHzLinYm("1.发票卷分发",Col2);
DisHzLinYm("2.发票录入",Col3);
DisHzLinYm("3.发票卷作废",Col4);
GetKey();
switch(keyc)
{
case 1:
cls();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -