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

📄 testbedforcs5463.c

📁 test bed for cs5463 you write into cs5463 and read from it and configurit
💻 C
字号:
/* TEST BED FOR TESTING SINGLE PHASE ENERGY MEASUREMENT IC CS5463 IN HYPER TERMINAL*/ 
/* CREATED BY B.M.S.C.E FROM BANGALORE */
#include <stdio.h>
#include <string.h>
#include <reg8253.h>
 sbit led1=P2^3;				   /* indication start of programme execution*/
 void serialsend(unsigned long value6);
 unsigned char value1,buffer[10],index,value4,state,SEND1[4],BUFFER1[4];
 unsigned long value2,value3,temp8;
 	 
 void msdelay(unsigned int itime)
 {
 	unsigned int i,j;	                                                                                                                               
 	for(i=0;i<itime;i++)
 	for(j=0;j<1275;j++);
 } 
 masterio(unsigned char SENDDATA)
{	  	unsigned char RECEDATA;	
 		SPDR = SENDDATA;
	   	while ((SPSR & 0x80) == 0);
		RECEDATA=SPDR;
		return(RECEDATA);
}

void send_l(unsigned long dd)
{
	unsigned long temp;
	int I;
		temp=dd&0xff000000;
		temp=temp>>24;
		SEND1[0]=temp;
		temp=dd&0x00ff0000;
		temp=temp>>16;
		SEND1[1]=temp;
		temp=dd&0x0000ff00;
		temp=temp>>8;
		SEND1[2]=temp;
		temp=dd&0x000000ff;
		SEND1[3]=temp;
	for(I=0;I<4;I++)	 
	masterio(SEND1[I]);				/* reads the data from cs5463 to buffer*/
}
unsigned long read_l(unsigned char value4)
 { unsigned long int temp;
 unsigned char I;
  						    
unsigned char value5;
		 temp=0x00000000;
				value5=0x00;
				value5=value4<<1;
				value5=value5&0x3e;
				SEND1[0]=value5;
				SEND1[1]=0xFF;
				SEND1[2]=0xFF;
				SEND1[3]=0xFF;
	for(I=0;I<4;I++)	 
	BUFFER1[I]=masterio(SEND1[I]);	/* reads the data from cs5463 to buffer*/
	temp=(BUFFER1[0]*16777216)+ (BUFFER1[1]*65536)+ (BUFFER1[2]*256)+BUFFER1[3];
	return(temp);
   }
/*---------------- main-------------------*/   
void main()
{
	char m;
	SPCR = 0x53;
	SCON=0x50;EA=1;ES=1;
	TMOD=0x25;TL0=0x00;
	TH0=0x00;TH1=0xFD;TR1=1;
	TR0=1;
	index=0;state=0; 		
			masterio(0xFF);
			masterio(0xFF);
			masterio(0xFF);
			masterio(0XFE);
			for(m=0;m<100;m++);
			send_l(0x40000001);
			send_l(0x64000060);
			send_l(0x74000004);	
			masterio(0xE8);
		  	state=0;   
  
while(1)
{
switch (state)

{   case 0 :led1=0;
			msdelay(2);
			led1=1;
		 	break;								 
 	case 1: masterio( value1);
	        state=0;
			break;
	case 2: send_l (temp8);
	        state = 0;
			break;
	case 3: value3=read_l(value4);
	        state=0;
			serialsend(value3);
			break;
	case 4: masterio(0xFF);
			masterio(0xFF);
			masterio(0xFF);
			masterio(0XFE);
			masterio(0X80);
			msdelay(3);
			send_l(0x40000001);
			send_l(0x64000060);
			send_l(0x74000004);		
			masterio(0xE8);
		  	state=0;
			break;
	default: break;
	}
	}
} 

 void serialsend(unsigned long value6)
 { unsigned long temp4,temp5;
   unsigned char i,j,buf[8];
    temp4=value6;
	j=0;
	temp5=0x0000000f;

	for (i=0;i<8;i++)
	   { buf[j]=(temp4&temp5);
	     temp4=temp4>>4;
		 if (buf[j]<10) buf[j]= (buf[j]+0x30);
		   else	  buf[j]= (buf[j]+0x37);
		   j++;
		   }
	for (i=8;i>0;i--)
	   {  ES=0;TI=0;
	      SBUF=buf[i-1];
		  while (!TI);TI=0;
		  ES=1;
		}
		}

void serial (void) interrupt 4
 { 
 unsigned char temp7,i;
 if (TI) 
   TI=0;
  if (RI)
  	{RI=0;
	temp7=SBUF;
	SBUF=temp7;
    buffer[index]=temp7;
		if (temp7=='z')
	   	{ switch ( buffer[0])
	     	{	case 'a' :	 if  (buffer[1]>0x41)
							 buffer[1]=buffer[1]-0x57;
						 	 else buffer[1]=buffer[1]-0x30; 
							    		  
							  if  (buffer[2]>0x41)
							   buffer[2]=buffer[2]-0x57;
							  else  buffer[2]=buffer[2]-0x30;

							  buffer[1]=buffer[1]<<4;
							  value1=buffer[1]+buffer[2];
							  index=0; state=1;
							break;
		  		case 'b': for(i=1;i<9;i++)
							 {if (buffer[i]>0x41)
						     buffer[i]=buffer[i]-0x57;
						  else buffer[i]=buffer[i]-0x30;
								 
							 buffer[i]=buffer[i]&0x0f;
			                   	}
							 temp8=0x00000000;
							for(i=1;i<8;i++)			
			                 { temp8=temp8 | buffer[i];
							   temp8=temp8<<4;
							  }
							temp8=temp8|buffer[8];
							value2=temp8;
							state=2;
							index=0;
					   		break;
			 	case  'c':  buffer[1]=buffer[1]&0x0f;
				            buffer[2]=buffer[2]&0x0f;
							value4= buffer[1]*10+buffer[2];
							state=3;
							index=0;
							break;
				case 'r':  state=4;
						   index=0;
						   break;
			 }	
		}
		else index++;
		}
}

 					 

					 

⌨️ 快捷键说明

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