?? main.c.bak
字號(hào):
/*-------------------------------------------------------------
功能:主函數(shù):上電初始化、自檢
說明:符合國(guó)家標(biāo)準(zhǔn)GB18240.1-2003和GB18240.2-2003的稅控機(jī)軟件
日期:2003年6月12日
---------------------------------------------------------------*/
#include "include.h"
extern void test();
//===============================================================================
void Display_allgrass(void)
{
uchar xdata c_buf[32],i,x,j;
memset (c_buf,0xff,32);
x=0xb8;
while(x<0xc0)
{
for(i=0;i<3;i++)
{
select_p(i);
wrt_lcd_cmd(0xc0);
wrt_lcd_cmd(x);
wrt_lcd_cmd(0x40);
}
for(i=0;i<32;i++)
{
for(j=0;j<3;j++)
{
select_p(j);
wrt_lcd_data(0x55);
}
for(j=0;j<3;j++)
{
select_p(j);
wrt_lcd_data(0xaa);
}
}
x++;
}
}
//===================================================================
/*uchar Check_init_machine(uchar len,uchar *buf) //判斷機(jī)器是否要初始化
{
uchar i;
for(i=0;i<len;i++){if((buf[i]!=0)||(buf[i]!=0xff))break;}
if(i==len)return 1;
else return 0;
}
*/
//=====================================================================
uchar Format_File(void)
{
//uchar rlt;
uchar xdata buf[200];
// uchar j;
uint i;
struct record_addr_struct xdata record_addr;
struct invoice_roll_addr_struct xdata invoice_roll_addr;
struct day_addr_struct xdata day_addr;
struct delare_addr_struct xdata declare_addr;
struct branch_struct xdata branch;
// struct plu_struct xdata plu;
struct receiver_report_struct xdata receiver_report;
struct day_report_struct xdata day_report;
struct month_report_struct xdata month_report;
#ifdef C8_VER
struct trade_report_struct xdata trade_report;
#endif
struct parameter_struct xdata parameter;
struct money_add_struct xdata money_add;
struct menu_struct xdata menu[MAX_MENU_NUM];
struct invoice_roll_struct xdata invoice_roll;
struct day_struct xdata day;
struct distribute_invoice_struct xdata distribute_invoice;
ulong lnum;
EX1 = 0;
//EEPROM中的其他值做初始化
clear_lcd(0,MAX_LCD_NUM);
strcpy(buf,"注冊(cè)完成!!");
lcd_disp(0,0,buf);
strcpy(buf,"正在格式化文件,請(qǐng)稍候...\r已完成:");//開始初始化
lcd_disp(1,0,buf);
display_progress(0);
//發(fā)票卷暫存
set_value0(&invoice_roll,(uint)sizeof(invoice_roll));
invoice_roll.invoice_start_add=RECORD_START_ADDR;
invoice_roll.lrc=lrcdata((uint)sizeof(invoice_roll)-1,1,&invoice_roll);
if(write_eeprom(INVOICE_ROLL,(uint)sizeof(invoice_roll),&invoice_roll))
{
return(WRITE_EEPROM_FAIL);
}
//send_char(0);
//日記錄暫存
set_value0(&day,(uint)sizeof(day));
read_rtc(buf);
day.date[0]=buf[0];
day.date[1]=buf[1];
day.date[2]=buf[2];
for(i=0;i<CATALOG_NUM;i++)
day.tax_item_code[i]=g_tax_catalog[i].tax_item;
day.lrc=lrcdata((uint)sizeof(day)-1,1,&day);
if(write_eeprom(DAY,(uint)sizeof(day),&day)) //共64個(gè)字節(jié)
{
return(WRITE_EEPROM_FAIL);
}
//send_char(1);
//電子票根當(dāng)前筆地址
record_addr.record_addr=RECORD_START_ADDR;
record_addr.record_sector=RECORD_SECTOR[0];
record_addr.start_sector=record_addr.record_sector;
record_addr.crc=crcxdata((uint)sizeof(record_addr)-2,&record_addr);
if(write_eeprom(RECORD_ADDR1,(uint)sizeof(record_addr),&record_addr)) //共7字節(jié)
{
return(WRITE_EEPROM_FAIL);
}
//send_char(2);
if(write_eeprom(RECORD_ADDR2,(uint)sizeof(record_addr),&record_addr)) //共7字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(3);
//單卷發(fā)票的當(dāng)前卷地址
invoice_roll_addr.invoice_roll_addr=INVOICE_ROLL_START_ADDR;
invoice_roll_addr.invoice_roll_sector=INVOICE_ROLL_SECTOR[0];
invoice_roll_addr.crc=crcxdata((uint)sizeof(invoice_roll_addr)-2,&invoice_roll_addr);//共8字節(jié)
if(write_eeprom(INVOICE_ROLL_ADDR1,(uint)sizeof(invoice_roll_addr),&invoice_roll_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(4);
if(write_eeprom(INVOICE_ROLL_ADDR2,(uint)sizeof(invoice_roll_addr),&invoice_roll_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(5);
//日記錄的當(dāng)前日地址結(jié)構(gòu)
day_addr.day_addr=DAY_START_ADDR;
day_addr.day_sector=DAY_SECTOR[0];
//day_addr.day_num=0;
if(low_pwr) return(POWER_OFF);
day_addr.crc=crcxdata((uint)sizeof(day_addr)-2,&day_addr);//共8字節(jié)
if(write_eeprom(DAY_ADDR1,(uint)sizeof(day_addr),&day_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(6);
if(write_eeprom(DAY_ADDR2,(uint)sizeof(day_addr),&day_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(7);
//申報(bào)數(shù)據(jù)的當(dāng)前期地址結(jié)構(gòu)
declare_addr.delare_addr=DECLARE_START_ADDR;
declare_addr.delare_num=0;
declare_addr.crc=crcxdata((uint)sizeof(declare_addr)-2,&declare_addr);//共8字節(jié)
if(write_eeprom(DECLARE_ADDR1,(uint)sizeof(declare_addr),&declare_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(8);
if(write_eeprom(DECLARE_ADDR2,(uint)sizeof(declare_addr),&declare_addr))
{
return(WRITE_EEPROM_FAIL);
}//send_char(9);
//display_progress(10);
//收款員報(bào)表結(jié)構(gòu)
set_value0(&receiver_report,(uint)sizeof(receiver_report));
receiver_report.lrc=lrcdata((uint)sizeof(receiver_report)-1,1,&receiver_report);
for (i=0;i<MAX_RECEIVER_NUM;i++)
{
if(write_eeprom(RECEIVER_ADDR+i*(uint)sizeof(receiver_report),//112BYTE
(uint)sizeof(receiver_report),&receiver_report))
{
return(WRITE_EEPROM_FAIL);
}
if(low_pwr) return(POWER_OFF);
}//send_char(10);
//日?qǐng)?bào)表結(jié)構(gòu)
set_value0(&day_report,(uint)sizeof(day_report));
day_report.lrc=lrcdata((uint)sizeof(day_report)-1,1,&day_report);
if(write_eeprom(DAY_ADDR,(uint)sizeof(day_report),&day_report))//共107個(gè)字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(11);
//月報(bào)表結(jié)構(gòu)
set_value0(&month_report,(uint)sizeof(month_report)); //共107個(gè)字節(jié)
month_report.lrc=lrcdata((uint)sizeof(month_report)-1,1,&month_report);
if(write_eeprom(MONTH_ADDR,(uint)sizeof(month_report),&month_report))
{
return(WRITE_EEPROM_FAIL);
}//send_char(12);
#ifdef C8_VER
//營(yíng)業(yè)員報(bào)表結(jié)構(gòu)
set_value0(&trade_report,(uint)sizeof(trade_report));
trade_report.lrc=lrcdata((uint)sizeof(trade_report)-1,1,&trade_report);
for (i=0;i<MAX_TRADE_NUM;i++)
{
if(write_eeprom(TRADE_ADDR+i*(uint)sizeof(trade_report),
(uint)sizeof(trade_report),&trade_report))
{
return(WRITE_EEPROM_FAIL);
}
if(low_pwr) return(POWER_OFF);
}
#endif
//報(bào)稅標(biāo)志
i=0;
if(write_eeprom(DECLARE_TAX_ADDR,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(13);
//是否已錄入了一卷新發(fā)票的標(biāo)志
if(write_eeprom(NEW_INVO_ROLL,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(14);
//從用戶卡分發(fā)的發(fā)票卷暫存
set_value0(&distribute_invoice,(uint)sizeof(distribute_invoice));
for (i=0;i<MAX_DISTRIBUTE_NUM;i++)//一次從用戶卡分發(fā)的最大發(fā)票卷數(shù)
{
if(write_eeprom(DISTRIBUTE_INVOICE_ADDR+i*(uint)sizeof(distribute_invoice),//23BYTE
(uint)sizeof(distribute_invoice),&distribute_invoice))
{
return(WRITE_EEPROM_FAIL);
}
if(low_pwr) return(POWER_OFF);
}//send_char(15);
//參數(shù)結(jié)構(gòu)
parameter.fix_discount=0;
parameter.fix_service=0;
for(i=0;i<4;i++)
parameter.bit_rate[i]=100;
parameter.crc=crcxdata((uint)sizeof(parameter)-2,¶meter);
if(write_eeprom(PARAMETER,(uint)sizeof(parameter),¶meter)) //共12字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(16);
lnum=MAX_PLU_NUM;
buf[0]=lnum>>8;
buf[1]=lnum;
if(write_eeprom(PLU_NUM,2,buf)) //共2字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(17);
// return(WRITE_EEPROM_FAIL);
set_value0(buf,60);
if(write_eeprom(AUTHORITY_FLG,3,buf))//營(yíng)業(yè)員的權(quán)限默認(rèn)為普通 1-10
{
return(WRITE_EEPROM_FAIL);
}
//單位地址
if(write_eeprom(CO_ADDRESS,60,buf))//共60字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(18);
//單位電話
set_value0(buf,12);
if(write_eeprom(CO_PHONE_NUMBER_ADDR,12,buf)) //共12字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(19);
//報(bào)稅電話
set_value0(buf,36);
if(write_eeprom(DECLARE_PHONE,36,buf)) //共36字節(jié)
{
return(WRITE_EEPROM_FAIL);
}//send_char(20);
//金額累加
money_add.add_money=0;
money_add.retreat_money=0;
money_add.crc=crcxdata((uint)sizeof(money_add)-2,&money_add);//共10字節(jié)
if(write_eeprom(MONEY_ADD,(uint)sizeof(money_add),&money_add))
{
return(WRITE_EEPROM_FAIL);
}//send_char(21);
//收款員號(hào)
i=0;
if(write_eeprom(RECEIVER_NO,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(22);
if(low_pwr) return(POWER_OFF);
//display_progress(20);
strcpy(buf,"888888"); //超級(jí)密碼
if(write_eeprom(SUPERPASSWORD,6,buf))
return(WRITE_EEPROM_FAIL);
//收款員密碼
for(i=0;i<MAX_RECEIVER_NUM;i++)
{
strcpy(buf,"999999");
if(write_eeprom(LOGON_PASSWORD+i*6,6,buf))
{
return(WRITE_EEPROM_FAIL);
}
}//send_char(23);
//收款員中文名稱清零
memset(buf,0,100);
if(write_eeprom(RECEIVER_CHINESE_NAME,100,buf))
return(WRITE_EEPROM_FAIL);
//黑標(biāo)定位
i=0;
if(write_eeprom(INVOICE_LOCATE_ADDR,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(24);
//庫(kù)存允許
i=0;
if(write_eeprom(STOCK_ADDR,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(25);
//PDA選擇
i=0;
if(write_eeprom(PDA_SELECT,1,&i))
{
return(WRITE_EEPROM_FAIL);
}//send_char(26);
i=0;
if(write_eeprom(SELE_PRINTER_FLAG,1,&i)) //報(bào)表打印機(jī)的選擇內(nèi)置
{
return(WRITE_EEPROM_FAIL);
}//send_char(26);
//部門/PLU快捷鍵切換
i=0;
if(write_eeprom(BRANCH_PLU_SWITCH_ADDR,1,&i))
return(WRITE_EEPROM_FAIL);//send_char(27);
//報(bào)表日期(YYMMDDHHMM)
read_rtc(buf);
for(i=0;i<3;i++)
{
if(write_eeprom(REPORT_DATE+i*5,5,buf))
return(WRITE_EEPROM_FAIL);
}
if(low_pwr) return(POWER_OFF);
//send_char(28);
display_progress(10);
//擦除Flash
/*memset(buf,0,50);
if(write_eeprom(FAU_Quantity,2,buf))return(WRITE_EEPROM_FAIL);//審計(jì)記錄數(shù)清零
if(write_eeprom(CLEAR_FAU_Quantity,8,buf))return(WRITE_EEPROM_FAIL); //清除審計(jì)記錄清除的記錄
for(i=4;i<8;i++){ //4-7扇區(qū)//審計(jì)記錄清零
if(flash_sector_erase(i)) return(ERASE_FLASH_FAIL);
if(low_pwr) return(POWER_OFF);
}
*/
for(i=28;i<32;i++)
{ //審計(jì)記錄清零
if(flash_sector_erase(i)) return(ERASE_FLASH_FAIL);
}
for(i=0;i<(uchar)sizeof(RECORD_SECTOR);i++)//8-25扇區(qū)
{
if(flash_sector_erase(RECORD_SECTOR[i]))
return(ERASE_FLASH_FAIL);
display_progress(10+i);
if(low_pwr) return(POWER_OFF);
}//send_char(29);
//display_progress(20);
for(i=0;i<(uchar)sizeof(DAY_SECTOR);i++)//26-31扇區(qū)
{
//send_char(DAY_SECTOR[i]);
if(flash_sector_erase(DAY_SECTOR[i]))
return(ERASE_FLASH_FAIL);
display_progress(40+i);
if(low_pwr) return(POWER_OFF);
}//send_char(30);
for(i=0;i<(uchar)sizeof(INVOICE_ROLL_SECTOR);i++)//32-33扇區(qū)
{
//send_char(INVOICE_ROLL_SECTOR[i]);
if(flash_sector_erase(INVOICE_ROLL_SECTOR[i]))
return(ERASE_FLASH_FAIL);
display_progress(50+i);
if(low_pwr) return(POWER_OFF);
}//send_char(31);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -