⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.bak

📁 税控收款机源码:拼音输入法,LCD,VFD驱动,IC卡驱动,税控国标
💻 BAK
📖 第 1 页 / 共 3 页
字号:
	
	    	
		//读税控卡的监控管理文件//保存用户信息到EEPROM等任务
		rlt=read_control_msg(0);
		
		if(rlt)
		{
			return(rlt);
		}
	
		rlt=Format_File();
		if(rlt)
			return(rlt);
		
		rlt=check_pin();
		
		if(rlt)
			return(rlt);
		if(Write_FAU_data(SYSINTI,0))return 1;
			
	}
	else //比较税控卡使用口令
	{

		clear_lcd(0,MAX_LCD_NUM);
		strcpy(buf,"机器机卡验证工作状态\r请稍候...");
		lcd_disp(1,0,buf);
		rlt=check_pin();
		if(rlt){return(rlt);}
		rlt=init_var();      //初始化全局变量
		if(rlt)return(rlt);
				

	}
	return(0);

}

//extern void TestCOM();
extern void TestUsb();

/*--------------------------------------------------------------
功能:主循环,捕捉方式锁
输入:NO
----------------------------------------------------------------*/
main()
{
	#define  IS_CHOOSED	0x1	             //选定某项菜单
	code uchar home_menu[7]={EXCHANGE,READ_REPORT,REPORT_TAX,SETUP,EXERCITATION,FAUCLASS,0};
	uchar cur_line,tmp_line,menu_num;
	uchar error,old_error,rlt;
	uchar sw;                               //方式锁
	uchar key_tmp;
	uchar xdata buf[200];
	uchar Mach_initialed,page_displayed;    //机器已初始化,主页已显示
	uchar i;

  	P1_1=0;

	//Back_pwrflg=0;
	delayms(10);
	receiver_log=0;//收款员登录标志
	InitialPrinter();
	initial_system();                //硬件初始化
		
	Writ_cpld(Backlight,1);lighton=1;//开背光
	SetupPortD(Bat_cnt,0);            //关法拉电
	
	for(i=0;i<12;i++)
	{
		DisplayVFD(i,8);
	}
	// card_vcc(1);//卡上电//
	cur_line=1;
	tmp_line=1;
	menu_num=strlen(home_menu);
	page_displayed=0;
	error=0;                               //初始化成无错误
	old_error=0;
	key_tmp=0;
	
	g_tax_pin_pass=0;
	sw=SWNUM;                                //开关位置数 =5
	
	if(!NO_Paperflg) open_Nopaper_Printing_light(1);//装好纸
	else             open_Nopaper_Printing_light(2);//缺纸
	//open_Nopaper_Printing_light(1);   //初始化指示灯
	open_Nopaper_Printing_light(4);   //
	
	
	InitialLCD();
	Display_allgrass();
	delayms(5000);
	clear_lcd(0,MAX_LCD_NUM);                //清最大显示行数4行
	//Display_allgrass();
	strcpy(buf,"   欢迎使用税控收款机\r");

	lcd_disp(0,0,buf);
	strcpy(buf,"===竭诚为中国税务服务===\r");
	lcd_disp(3,0,buf);	
	
	delayms(5000);
			
	clear_lcd(0,MAX_LCD_NUM);
	strcpy(buf,"是否运行器件检测程序\r     按[确定]键运行");
	lcd_disp(0,0,buf);
	
	CH375LibInit( );  /* 初始化CH375程序库和CH375芯片,操作成功返回0 */
	counter=150; //150*50 MS

	while(1)                              //自检程序
	{
		delayms(200);
		if(!counter)break;
		key_tmp = get_key();
		
        if(!key_tmp) continue;
		if(key_tmp==VOID)
			break;
		if(key_tmp==CASH)
			self_test();
        break;
	}

	if(read_eeprom(PIN_TMP1,10,buf)) error=READ_EEPROM_FAIL;
	//if(Check_init_machine(8,buf)) 
	if((buf[0]==0|| buf[0]==0xFF) && (buf[1]==0  || buf[1]==0xFF) &&
		(buf[2]==0  || buf[2]==0xFF) && (buf[3]==0  || buf[3]==0xFF) &&
		(buf[4]==0  || buf[4]==0xFF) && (buf[5]==0  || buf[5]==0xFF) &&
		(buf[6]==0  || buf[6]==0xFF) && (buf[7]==0  || buf[7]==0xFF))
	{
		Mach_initialed=0;        //机器未初始化
	}
	else Mach_initialed=0x01;  //机器已初始化

	init_var();         //得到出厂信息,包括税控机编号

	//显示产品信息  
	display_producer();
	delayms(30000);
    //if(read_eeprom(RECEIVER_CHINESE_NAME,100,buf)) error=READ_EEPROM_FAIL;
	//send_str(100,buf);
	Writ_cpld(Bat_cnt,1);   //开法拉电
	error=init_machine_card();
	Writ_cpld(Bat_cnt,0);
	clear_lcd(0,MAX_LCD_NUM);
	if(error)
	{
		if(!Mach_initialed)Write_FAU_data(SYSINTI,1);//初始化失败
		if(error==MAX_FAU_ERR)g_tax_pin_pass=0;
		catch_error_display(error,0);
		strcpy(buf,"请检查错误,开机再试\r按[取消]键继续");
		lcd_disp(0,0,buf);
		beep(250);

		while(1)
		{
			delayms(200);
			if(get_key()==VOID)break;
		}
	}
	else
	{
		strcpy(buf,"机器验证通过!!");
		lcd_disp(2,0,buf);
		delayms(5000);
		if(read_eeprom(FORMATFILE,5,buf)) 
			error=READ_EEPROM_FAIL;
		if(buf[0]==0xaa &&buf[1]==0xaa && buf[2]==0xaa && buf[3]==0xaa && buf[4]==0xaa)
			error=Format_File();
	}
	if(read_eeprom(PIN_TMP1,10,buf)) error=READ_EEPROM_FAIL;
	//if(Check_init_machine(8,buf)) 
	if((buf[0]==0|| buf[0]==0xFF) && (buf[1]==0  || buf[1]==0xFF) &&
		(buf[2]==0  || buf[2]==0xFF) && (buf[3]==0  || buf[3]==0xFF) &&
		(buf[4]==0  || buf[4]==0xFF) && (buf[5]==0  || buf[5]==0xFF) &&
		(buf[6]==0  || buf[6]==0xFF) && (buf[7]==0  || buf[7]==0xFF))
	{
		Mach_initialed=0;        //机器未初始化
	}
	else Mach_initialed=0x01;  //机器已初始化

	  	
	if((g_tax_pin_pass)&&(!error))
	{
		buf[0]=0;
		rlt=write_eeprom(RECEIVER_NO,1,buf);//1070地址 清登录标志//收款员号清0
	}
/*-------------扫描方式琐主循环----------------*/
	clear_lcd(0,MAX_LCD_NUM);
	InitialLCD(); //防止关过电重新初始化键盘

	//清VFD
	ClrVFD();
	
	while(1)
	{
		if(!NO_Paperflg) open_Nopaper_Printing_light(1);//装好纸
		else             open_Nopaper_Printing_light(2);//缺纸
		
		if((low_pwr)||(error==POWER_OFF)) 
		{
			error=0;
			old_error=0;
			shut_bat(1);
			while(1)
			{
				delayms(50);
				if(!low_pwr)//重新上电
				{
					InitialLCD();
					page_displayed=0;          
			        Last_line=0xff;
	                dismode=0;
                    break;
				}
			}//while(1); 
		}                   //主循环检测到交流掉电
		openbacklight();
		//检查是否到了新的一天并保存数据
		rlt=save_day_data();
		if(rlt) error=rlt;
    

/*------------------------读方式开关-------------------------------*/
	if(error)
	{
		//if((error==POWER_OFF)&&(!low_pwr)){error=0;old_error=0;shut_bat(1);}//掉电又来电
		if(error!=old_error)
		{
			 beep(255);
	         catch_error_display(error,0);
			 old_error=error;
		}
		if(get_key()==VOID){error=0;old_error=0;}
	    else  continue;
	}

	while(1)//主菜单选择
	{
		if(low_pwr) 
		{
			shut_bat(1);
			while(1)
			{
				delayms(50);
				if(!low_pwr)//重新上电
				{
				    InitialLCD();
					page_displayed=0;
			        Last_line=0xff;
	                dismode=0;
                    //shut_bat(0);
                    break;
				}
			}
		} //如果断电了
        //else if(!Back_pwrflg){SetupPortD(Bat_cnt,1);Back_pwrflg=1;}//
      	if(!NO_Paperflg)open_Nopaper_Printing_light(1);  //装好纸
        else open_Nopaper_Printing_light(2);            //缺纸
		
		openbacklight();
	    key_tmp =get_key();
	    
		if(key_tmp==PAPER1)
		{
			Fast_feed_paper_hang(120);
			continue;
		}
	    #ifdef HYS620
	    else if(key_tmp==BACK_PAPER) //响应C8上的退纸键
	    { 
			back_on_dot(120);
			continue;
	    }
		#endif
		
	    if((!page_displayed)||(page_displayed==2))//||(page_displayed==1))
		{
			//display_menu_page(HOME,0,home_menu,cur_line);//主菜单
			get_menu_name_hm(cur_line,page_displayed);
			page_displayed=1;
		}
		
		rlt =choose_home_menu(key_tmp,&cur_line);// choose_menu_line(key_tmp,menu_num,&cur_line);//选择菜单项,当前行将移到新位置;
		
		if((key_tmp>'0')&&(key_tmp<'7')&&(tmp_line==cur_line))cur_line=key_tmp&0x0f;//数字选择菜单
		
		if(rlt==IS_CHOOSED)
		{ 
			sw=home_menu[cur_line-1];
			break;
		}
		
        if(tmp_line!=cur_line) 
		{
			page_displayed=2;
			tmp_line=cur_line;
		}
	/*
	while(1)//循环写CPLD 测试CPLD用
	{
		bit databit;
		uchar i;
		uint add;
		add=0x8100;
		for(i=0;i<19;i++)
		{
			delayms(500);
			Writ_cpld(add+i,databit);
		}
		databit=!databit;
	}
	*/
	}
        
	switch(sw)
	{
	case EXCHANGE:          	//正常营业
		if(g_tax_pin_pass)//口令已通过
		{	
			error=exchange_function(YES);
			cur_line=1;
		}
		else
		{
			clear_lcd(0,MAX_LCD_NUM);
			strcpy(buf,"口令未通过或机器未初始化\r或锁机日期到按任意键退出");
			lcd_disp(0,0,buf);
			while(1)
			{
				delayms(200);
				if(get_key())break;
			}
		}
		//清VFD
		ClrVFD();
		break;
		
	case READ_REPORT:           //查询
		if(!receiver_log){error=POWER_FAIL_1;break;}
		error=query(Mach_initialed);
		if(!Mach_initialed) error=MACH_NO_INITIALED;
		cur_line=2;
		break;
		
	case REPORT_TAX:           //报表/税
		if((!receiver_log)&&(g_tax_pin_pass)){error=POWER_FAIL_1;break;}
		error = declare();
		if(!Mach_initialed) error=MACH_NO_INITIALED;
		cur_line=3;
		break;
		
	case SETUP:               	//编程
		if((!receiver_log)&&(g_tax_pin_pass))
		{
			error=POWER_FAIL_1;
			break;
		}
		error = setup(Mach_initialed);
		cur_line=4;
		break;
		
	case EXERCITATION:          //培训操作
		error=exchange_function(NO);
		cur_line=5;
		//清VFD
		ClrVFD();
		break;
		
	case  FAUCLASS:          //安全审计类
		Safety_function();
		cur_line=6;
		break;
		
	default:
		break;
	}
	page_displayed=0;          
	Last_line=0xff;
	dismode=0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -