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

📄 untitled.c

📁 一个基于PIC18F单片机的开发的流量计量仪表
💻 C
📖 第 1 页 / 共 5 页
字号:
							CdBnk5Grp[12] = RevBuffer[14];
							CdBnk5Grp[13] = RevBuffer[15];
							CdBnk5Grp[14] = RevBuffer[16];
							CdBnk5Grp[15] = RevBuffer[17];	 
					}
					if(whichbank == 6)
					{
							CdBnk6Grp[0] = RevBuffer[2];
							CdBnk6Grp[1] = RevBuffer[3];
							CdBnk6Grp[2] = RevBuffer[4];
							CdBnk6Grp[3] = RevBuffer[5];
							CdBnk6Grp[4] = RevBuffer[6];
							CdBnk6Grp[5] = RevBuffer[7];
							CdBnk6Grp[6] = RevBuffer[8];
							CdBnk6Grp[7] = RevBuffer[9];
							CdBnk6Grp[8] = RevBuffer[10];
							CdBnk6Grp[9] = RevBuffer[11];
							CdBnk6Grp[10] = RevBuffer[12];
							CdBnk6Grp[11] = RevBuffer[13];
							CdBnk6Grp[12] = RevBuffer[14];
							CdBnk6Grp[13] = RevBuffer[15];
							CdBnk6Grp[14] = RevBuffer[16];
							CdBnk6Grp[15] = RevBuffer[17];

					}
					return 0x01;
				}
		}
		return 0x05;//return read card is error code

}


//*****************************************************************//
//Name 		:WrCdOneBnk
//Input		:uchar whichbank	
//Output	:unsigned char :0x01:ok
//							0x0d:defected
//								
//Function	:
//D.R.P		:QiuHao
//Date		:06.12.04
//*****************************************************************//
unsigned char WrCdOneBnk(unsigned char whichbank)
{
	unsigned char tempa,tempb=0;
	RevBuffer[0] = 0x09;
	RevBuffer[1] = whichbank;
	if(whichbank ==4)
	{
		RevBuffer[2] = CdBnk4Grp[0];
		RevBuffer[3] = CdBnk4Grp[1];
		RevBuffer[4] = CdBnk4Grp[2];
		RevBuffer[5] = CdBnk4Grp[3];
		RevBuffer[6] = CdBnk4Grp[4];
		RevBuffer[7] = CdBnk4Grp[5];
		RevBuffer[8] = CdBnk4Grp[6];
		RevBuffer[9] = CdBnk4Grp[7];
		RevBuffer[10] = CdBnk4Grp[8];
		RevBuffer[11] = CdBnk4Grp[9];
		RevBuffer[12] = CdBnk4Grp[10];
		RevBuffer[13] = CdBnk4Grp[11];
		RevBuffer[14] = CdBnk4Grp[12];
		RevBuffer[15] = CdBnk4Grp[13];
		RevBuffer[16] = CdBnk4Grp[14];
		RevBuffer[17] = CdBnk4Grp[15];
	}
	if(whichbank ==5)
	{
		RevBuffer[2] = CdBnk5Grp[0];
		RevBuffer[3] = CdBnk5Grp[1];
		RevBuffer[4] = CdBnk5Grp[2];
		RevBuffer[5] = CdBnk5Grp[3];
		RevBuffer[6] = CdBnk5Grp[4];
		RevBuffer[7] = CdBnk5Grp[5];
		RevBuffer[8] = CdBnk5Grp[6];
		RevBuffer[9] = CdBnk5Grp[7];
		RevBuffer[10] = CdBnk5Grp[8];
		RevBuffer[11] = CdBnk5Grp[9];
		RevBuffer[12] = CdBnk5Grp[10];
		RevBuffer[13] = CdBnk5Grp[11];
		RevBuffer[14] = CdBnk5Grp[12];
		RevBuffer[15] = CdBnk5Grp[13];
		RevBuffer[16] = CdBnk5Grp[14];
		RevBuffer[17] = CdBnk5Grp[15];
	}
	if(whichbank ==6)
	{
		RevBuffer[2] = CdBnk6Grp[0];
		RevBuffer[3] = CdBnk6Grp[1];
		RevBuffer[4] = CdBnk6Grp[2];
		RevBuffer[5] = CdBnk6Grp[3];
		RevBuffer[6] = CdBnk6Grp[4];
		RevBuffer[7] = CdBnk6Grp[5];
		RevBuffer[8] = CdBnk6Grp[6];
		RevBuffer[9] = CdBnk6Grp[7];
		RevBuffer[10] = CdBnk6Grp[8];
		RevBuffer[11] = CdBnk6Grp[9];
		RevBuffer[12] = CdBnk6Grp[10];
		RevBuffer[13] = CdBnk6Grp[11];
		RevBuffer[14] = CdBnk6Grp[12];
		RevBuffer[15] = CdBnk6Grp[13];
		RevBuffer[16] = CdBnk6Grp[14];
		RevBuffer[17] = CdBnk6Grp[15];
	}
	DsInt;		
	Cmd_process();
	OpInt;
	if((RevBuffer[0]!=0x01) || (RevBuffer[1]!=0x00))
		return 0x0d;
	return 0x01;
}

//********************************************************************//
//Name 		:CardStopOp
//Input		:void				
//Output		:unsigned char :0x01:ok
//							0x20:card stop options defseted	
//Function	:
//D.R.P		:QiuHao
//Date			:06.07.05
//********************************************************************//
unsigned char CardStopOp(void)
{
	unsigned char tempa;
	RevBuffer[0] = 0x01;
	DsInt;
	Cmd_process();
	OpInt; 
	for(tempa=100;tempa>0;tempa--)
	{
		if((RevBuffer[0] == 0x01) && (RevBuffer[1] == 0x00))
			return 0x01;
	}
	return 0x20;

}

//********************************************************************//
//Name 		:DisplayErrCode
//Input		:unsigned char errcode: error code 				
//Function		:display error code in Number address area (35`38)
//D.R.P		:QiuHao
//Date			:06.07.07
//********************************************************************//
void DisplayErrCode(unsigned char errcode)
{
	unsigned char temppa,tempppa;
	temppa = errcode;
	tempppa = errcode;
	tempppa = (tempppa >> 4) & 0x0f;    //high bit number
	temppa = temppa & 0x0f;				//low bit number           
	Wr1BCDNumToLcd(14 , 35);			//E
	Wr1BCDNumToLcd(19 , 36);			//-
	Wr1BCDNumToLcd(tempppa , 37);		//X
	Wr1BCDNumToLcd(temppa , 38);		//X
}

//********************************************************************//
//Name 		:ClearNumDpy
//Input		:unsigned char WhatNumArea (0-4)
//			0:?(S`A?S`6nGx
//			1:5%<[Ih6(A?Gx
//			2:K.A?Gx
//			3:=p6nGx
//			4:@[<FK.A?Gx
//          :unsigned char WhatflagAera(0-4)
//			0:?(S`A?S`6nGx1j<G
//			1:5%<[Ih6(A?Gx1j<G
//			2:K.A?Gx1j<G
//			3:=p6nGx1j<G
//			4:@[<FK.A?Gx1j<G
//Function	:clear some display area 
//D.R.P		:QiuHao
//Date		:06.07.07
//********************************************************************//
void ClearNumDpy(unsigned char WhatNumArea,unsigned char WhatflagAera)
{
	unsigned char temppb=0,temppc=0;
	if(WhatNumArea==0)
	{
		Wr1BCDNumToLcd(21 , 0);
		Wr1BCDNumToLcd(21 , 1);
		Wr1BCDNumToLcd(21 , 2);
		Wr1BCDNumToLcd(21 , 3);
		Wr1BCDNumToLcd(21 , 4);
		Wr1BCDNumToLcd(21 , 5);
		Wr1BCDNumToLcd(21 , 6);
		Wr1BCDNumToLcd(21 , 7);
	}
	if(WhatNumArea==1)
	{
		Wr1BCDNumToLcd(21 , 35);
		Wr1BCDNumToLcd(21 , 36);
		Wr1BCDNumToLcd(21 , 37);
		Wr1BCDNumToLcd(21 , 38);
		Wr1BCDNumToLcd(21 , 39);
	}
	if(WhatNumArea==2)
	{
		Wr1BCDNumToLcd(21 , 8);
		Wr1BCDNumToLcd(21 , 9);
		Wr1BCDNumToLcd(21 , 10);
		Wr1BCDNumToLcd(21 , 11);
		Wr1BCDNumToLcd(21 , 12);
		Wr1BCDNumToLcd(21 , 13);	
	}
	if(WhatNumArea==3)
	{
		Wr1BCDNumToLcd(21 , 29);
		Wr1BCDNumToLcd(21 , 30);
		Wr1BCDNumToLcd(21 , 31);
		Wr1BCDNumToLcd(21 , 32);
		Wr1BCDNumToLcd(21 , 33);
		Wr1BCDNumToLcd(21 , 34);
	}
	if(WhatNumArea==4)
	{
		Wr1BCDNumToLcd(21 , 14);
		Wr1BCDNumToLcd(21 , 15);
		Wr1BCDNumToLcd(21 , 16);
		Wr1BCDNumToLcd(21 , 17);
		Wr1BCDNumToLcd(21 , 18);
		Wr1BCDNumToLcd(21 , 19);
		Wr1BCDNumToLcd(21 , 20);
		Wr1BCDNumToLcd(21 , 21);
		Wr1BCDNumToLcd(21 , 22);
	}
	if(WhatNumArea==5)
	{
		Wr1BCDNumToLcd(21 , 23);
		Wr1BCDNumToLcd(21 , 24);
		Wr1BCDNumToLcd(21 , 25);
		Wr1BCDNumToLcd(21 , 26);
		Wr1BCDNumToLcd(21 , 27);
		Wr1BCDNumToLcd(21 , 28);
	}
	if(WhatflagAera==0)
	{
		UnDPY_CardJEorYL_Area();
	}
	if(WhatflagAera==1)
	{
		UnDPY_DJorSDL_Area();
	}
	if(WhatflagAera==2)
	{
		UnDPY_SL_Area();
	}
	if(WhatflagAera==3)
	{
		UnDPY_JE_Area();
	}
	if(WhatflagAera==4)
	{
		UnDPY_LJSL_Area();
		UnDPY_DateT();
	}
	if(WhatflagAera==5)
	{
		UnDPY_Time_Area();
	}
}

//********************************************************************//
//Name 		:DypWaitSetSDST
//Input		:unsigned char tempdyptype: 
//									0x00:is setting JinE 
//									0x01:is setting ShuiLiang
//          :unsigned char tempdpyst:
//									0x01:on
//									0x00:off
//Function	:when wait to setting value that display  
//D.R.P		:QiuHao
//Date		:06.07.08
//********************************************************************//
void DypWaitSetSDST(unsigned char tempdyptype,unsigned char tempdpyst)
{
	if(tempdpyst)//if this time is display
	{

		if(tempdyptype == 0x00)
		{
			OneLcdFlagSET(43);//SheDinLiang	
			OneLcdFlagSET(73);//'.'
			OneLcdFlagSET(79);//display 'T*' flag	
			OneLcdFlagClear(77);
		}
		else
		{
			OneLcdFlagSET(43);//SheDinLiang	
			OneLcdFlagSET(73);//'.'
			OneLcdFlagSET(77);//display "M2" flag
			OneLcdFlagClear(79);
		}
	//display 6 bit number are '-'
		Wr1BCDNumToLcd( 19 ,35 );
		Wr1BCDNumToLcd( 19 ,36 );
		Wr1BCDNumToLcd( 19 ,37 );
		Wr1BCDNumToLcd( 19 ,38 );
		Wr1BCDNumToLcd( 19 ,39 );
	}
	else//this is not display
	{
		OneLcdFlagClear(43);
		OneLcdFlagClear(73);
		OneLcdFlagClear(79);
		OneLcdFlagClear(77);
		Wr1BCDNumToLcd( 21 ,35 );
		Wr1BCDNumToLcd( 21 ,36 );
		Wr1BCDNumToLcd( 21 ,37 );
		Wr1BCDNumToLcd( 21 ,38 );
		Wr1BCDNumToLcd( 21 ,39 );
	}
}

//********************************************************************//
//Name 		:UserSettingPrice
//Input		:unsigned char settingtype:0x00:JinE
//				:						   0x01:ShuiLiang
//Output		:unsigned char :	          0x00:setting error
//				     						   0x01:setting ok
//Function	:  
//D.R.P		:QiuHao
//Date			:06.07.11
//********************************************************************//
unsigned char UserSettingValue(unsigned char * whichtypedatabuf)
{
	unsigned int temppii = 0;
	unsigned char tempnumaddr = 35;
    	char selectnum=0;
	unsigned char temo=0;
	while(1)
	{
		while(1)  
		{	

			temppii++;
			if(temppii == 12000)
			{
				if(tempnumaddr==35)
				selectnum = (*(whichtypedatabuf))&0x0f;
				if(tempnumaddr==36)
				selectnum = ((*(whichtypedatabuf+1))&0xf0)>>4;
				if(tempnumaddr==37)
				selectnum = ((*(whichtypedatabuf+1))&0x0f);
				if(tempnumaddr==38)
				selectnum = ((*(whichtypedatabuf+2))&0xf0)>>4;
			
				Wr1BCDNumToLcd(selectnum ,tempnumaddr );
			}
			if(temppii == 24000)
				Wr1BCDNumToLcd(21 ,tempnumaddr );

			if(temppii > 24000)
			{
				ReflashLcdTimeDpy(0);
				temppii = 0;
			}

			//setting next number						//KEYSEL
			if(systemflag2 & 0x02)
			{
				systemflag2 &= 0xfd;
				Wr1BCDNumToLcd(selectnum , tempnumaddr);
				selectnum = 0;
				break;	    							//exit this number into next number			
			}     
			//number add 1 KEYUP
			if(systemflag2&0x04)
			{
				systemflag2 &= 0xfb;
				selectnum +=1;
				if(selectnum>9)
					selectnum=0;
				//Record user setting value 
				if(tempnumaddr==35)
				*whichtypedatabuf = selectnum;
				if(tempnumaddr==36)
				{
					temo=(*(whichtypedatabuf+1)&0x0f);	
					*(whichtypedatabuf+1) = ((selectnum<<4)+temo);		
				}					
				if(tempnumaddr==37)
				{
					temo=(*(whichtypedatabuf+1)&0xf0);
					*(whichtypedatabuf+1) = (selectnum+temo);
				}
				if(tempnumaddr==38)
				{
					*(whichtypedatabuf+2) = (selectnum<<4);
				}
			}
			//number DEC 1 KEYDOWN
			if(systemflag2&0x08)
			{
				systemflag2 &= 0xf7;
				selectnum -=1;
				if(selectnum<0)
					selectnum = 9;
				//Record user setting value 
				if(tempnumaddr==35)
				*whichtypedatabuf = selectnum;
				if(tempnumaddr==36)
				{
					temo=(*(whichtypedatabuf+1)&0x0f);	
					*(whichtypedatabuf+1) = ((selectnum<<4)+temo);		
				}					
				if(tempnumaddr==37)
				{
					temo=(*(whichtypedatabuf+1)&0xf0);
					*(whichtypedatabuf+1) = (selectnum+temo);
				}
				if(tempnumaddr==38)
				{
					*(whichtypedatabuf+2) = (selectnum<<4);
				}
			}
			//user turn on the 'ok'key
			if(systemflag2&0x01)
			{
				systemflag2 & 0xfe; 
				Wr1BCDNumToLcd(selectnum , tempnumaddr);
				selectnum = 0;

				if(*whichtypedatabuf==0)
				if(*(whichtypedatabuf+1)==1)
				if(*(whichtypedatabuf+2)<MIXYOULIANG)
				{	
					systemflag2&= 0xf0;
					return 0x02;
				}

				systemflag2&= 0xf0;
				return 0x01;
			}
		}
		tempnumaddr += 1;
		if(tempnumaddr == 39)
		tempnumaddr = 35;				
	}

}

//********************************************************************//
//Name 		:ClearRamValue
//Input		:void
//			:						  
//Output	:void        
//									   
//Function	:clear  
//D.R.P		:QiuHao
//Date		:06.07.11
//********************************************************************//
void ClearRamValue(void)
{	   
	Cardnum[1]=0;
	Cardnum[2]=0;
	DanJ[0]

⌨️ 快捷键说明

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