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

📄 board_test.c

📁 用PIC单片机制作的网线测试仪
💻 C
字号:
 #include <pic.h>
//#include "internet_wire_test.h"//包含定义头文件
//__CONFIG(0x3732);    //配置位
__CONFIG(0x3F72); 
#define		TESTB		RC0
#define   TESTA		RC1
#define uchar unsigned char

const uchar code[]={0x08,0x09,0x0a,0x0b,0x0c};					//A通道扫描码
const uchar code2[]={0x0d,0x0e,0x0f};										//E通道扫描码
const uchar code1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};				//B通道扫描码							
const uchar check_A1[]={0x01,0x02,0x04,0x08,0x30};										//A1通道校验码
const uchar check_A2[]={0x01,0x02,0x04};															//A2通道校验码
const uchar check_B[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};			//B通道校验码
uchar buffer[8];																											//数据缓存

uchar flag1	=	0,flag2=0,flag3=0;count;	


/********************子函数声明**************************/
void delay(uchar x);
void UNITB_TEST();
void error_alarm();
void pass_alarm();
void result();
/*************20M晶振延时大约一毫秒*****************/
void delay(uchar x)
{
	uchar i,j,z;
	for(i=x;i>0;i--)
		for(j=20;j>0;j--)
			for(z=100;z>0;z--);
}

/****************A通道检测*****************************/
void UNITA_TEST()
{
	uchar i=0;
	for(i=0;i<5;i++)
		{
			PORTB	=	code[i];			
			delay(10);
			buffer[i]	=	PORTA ;
			if(buffer[i]!=check_A1[i])
				{
					flag3++;
				}								
		}	
}

void UNITE_TEST()
{
	uchar i;
	for(i=0;i<3;i++)
		{
			PORTB	=	code2[i];
			delay(10);
			buffer[i]	=	PORTE;
			if(buffer[i]!=check_A2[i])
				{
						flag3++;
				}						
		}	
	if(flag3>=1)
		{
			RC4	=	0;	RC6	=	1;
			error_alarm();
			flag3	=	0;		
		}
	else 
			{
				RC6	=	0;	RC4	=	1;			
				pass_alarm();
			}	
}
/*****************B通道检测****************************/
void UNITB_TEST()
{
	uchar i;
	//PORTB	=	code1[0];
		
	for(i=0;i<8;i++)
		{
			PORTB	=	code1[i];
			delay(10);	
			buffer[i]	=	PORTD ;
			if(buffer[i]!=check_B[i])	
				{
					flag2++;
				}
		}
	if(flag2>=1)
		{
			RC5	=	0;	RC7	=	1;
			error_alarm();	
			flag2	=	0;	
		}
	else 
		{
			RC7	=	0;	RC5	=	1;			
			pass_alarm();
		}
	
}

/************错误报警。蜂鸣器滴5声***************/
void error_alarm()
{
	uchar i;
	for(i=8;i>0;i--)
		{
			RC2=~RC2;
			delay(30);
		}	
}

/*************正确报警,蜂鸣器滴2声************************/
void pass_alarm()
{
	uchar i;
	for(i=4;i>0;i--)
		{
			RC2=~RC2;
			delay(30);
		}	
}
void init()
{
	TRISB	=	0X00;	
	TRISC	=	0X03;	
	TRISD =	0XFF;	
	TRISE	=	0X07;				
	PORTC	=	0XF0;
	RC3=0;		
	ADCON1	=	0X06;			
}

void main()
{
	uchar i=0;
	init();
	while(1)
	  {		
		  if(TESTA==1)
		  	{
		  			UNITA_TEST();	
		  			UNITE_TEST();			  	
			  }			  
		  if(TESTB==1)
		  	{
		  			UNITB_TEST();					  	
		  	}
		
	}
}

⌨️ 快捷键说明

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