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

📄 omloncommon.c

📁 一个测试程序,已经通过实验验证,并且做出了实际的电路,装入设备使用
💻 C
字号:

//建立文件头机制确保程序设计,调试维护,以及更新,
//最主要的是便于文件管理,以及版本号的确认,如果
//我们长久养成如此之习惯,那么程序编写者和维护者
//可以很快的进入状态,便于交叉合作之项目得以开展
//以及程序编写者自己追溯,防止同一程序众多的版本
//难以区分有用无用信息以及记录调试信息,标准是这
//样的,先是机种信息、版本信息、在是测试步促。

/***********************************************/
/*                                             */
/*      omlon-10point-FCT-TEST-program         */
/*                                             */
/*       author  :     liangbo                 */
/*       data    :     2007/01/16              */
/*     vindicate :     liangbo                 */
/*       维护日期:     2007/01/16              */
/*       查看日期:    2007/02/06              */
/*       调试日期:    2007/03/20              */
/*                                             */
/***********************************************/
/*
编号	步凑	测试内容	相关继电器	相关P点
1   	step1	还原设置	   K1-K6      P37
2	    step2	短路测试		        P1-P2
3	    step3	点灯测试 	         P0-P3
4	    step4	关闭通道
*/
	
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <stdio.h>
#define BYTE unsigned char
//所有点位等待接线确认
//严禁对P1口进行整体写入操作
sbit RY      =P3^7; 
sbit KP      =P3^2;      //电路图上有变更
sbit LD1     =P0^0;    
sbit LD2     =P0^1;    
sbit LD3     =P0^2;    
sbit LD4     =P0^3;    
sbit LD5     =P0^4;
sbit LD6     =P0^5;
sbit LD7     =P0^6;
sbit LD8     =P0^7;
sbit LD9     =P3^0;
sbit LD10    =P3^1;
sbit CN12    =P1^3;
sbit CN13    =P2^0; 
sbit CN14    =P1^4; 
sbit CN15    =P2^1; 
sbit CN16    =P1^5; 
sbit CN17    =P2^2;    
sbit CN18    =P1^6;
sbit CN19    =P2^3;
sbit CN110   =P1^7;
sbit CN111   =P2^4;
sbit CN11    =P2^5;   //  COMMON
sbit pr15    =P3^3;    
sbit pr12    =P3^4;    
sbit pr10    =P3^5;    
sbit pr5     =P3^6;    
sbit REDG    =P1^0;    
sbit REDR    =P1^1;
sbit Limit   =P2^6;
sbit Start   =P2^7;
/*-                   -*/
/*-                   -*/
char code group=1;     //bbtd-hpat1与bbtd-hlf为一组LED,group指示LED组数。
char code voltage=15;   //15v,12v,10v,5v.电压选择
void delay1(unsigned char n);
void port_init(void);
void choice_voltage (void);
char short_check(void);
char function_test (void);
//========================================================================

//Sleep Function  STRAT

void delay1(unsigned char n)
{
	unsigned int k,j;
	for(k=0;k<n;k++)
		for(j=0;j<209;j++)
		_nop_();	
}

void nc(int n)
{
	unsigned int i;
	for(i=0;i<n;i++)
		_nop_();
}

void port_init(void)//MCU PROT INIT
{
    P0=0xFF;
    P1=0xFF;
    P2=0xFF;
	P3=0xFF;
}

 char short_check(void)
{
    char buf,zreo=0,one=1; 
    unsigned char vor,check;
    bit bl,bj;
//	while(Limit);
	bj=1;
	while(bj==1)
	{
		REDR=bl;
		bl=~bl;
		if((Start==0)&(Limit==0))
		{
			delay1(10);
			if((Start==0)&(Limit==0))
				bj=0;
		}
		delay1(20);
	}
    REDR=0;
	delay1(2);
	RY=0;
	_nop_();
	KP=0;      //关闭产品电源
	REDG=1;    //绿灯亮
	delay1(2);
    buf  =group;
    _nop_();
    CN12 =1;
    CN14 =1;
//  CN16 =1;
    CN18 =1;
    CN110=1;
    CN11 =1;
    _nop_();
    _nop_();
    _nop_();
    vor=P2;
    P2=P2&0xc0;    //FF   P2口置低 1100,0000
    vor=P2;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    //////////////////////////////
    check=P1;
    _nop_();
	delay1(1);
    check=check&0x38;      //0011,1000
    _nop_();
    _nop_();
    _nop_();
    if(check!=0x38)
	{	nc(1);
		P2=0xff;
		nc(10);
		return(0);
	}
	_nop_();
	P2=0xff;
	_nop_();
	_nop_();
	P1=P1&0x07;       // 0000,0111
	_nop_();
	_nop_();
	delay1(10);
	check=P2;
	_nop_();
    check=check&0x3f;     //0011,1111
    _nop_();
    _nop_();
	if (check!=0x3f)
	{
		_nop_();
		P1=0xff;
		nc(1);
		return(0);
	}
	_nop_();
	P1=0xff;
	_nop_();
	P2=0xea;   // 1110,1010
	_nop_();
	nc(10);
	check=P2;
	nc(10);
    check=check&0x2a;
	_nop_();
	if (check!=0x2a)
	{
		_nop_();
		P2=0xff;
		_nop_();
		return(0);
	}
    _nop_();
    return(1);
}

void choice_voltage (void)
{	
    if(voltage==5)
		{
			pr15=0;
			_nop_();
			pr12=0;
			_nop_();
			pr10=0;
			_nop_();
			pr5 =1;
		}
	if(voltage==10)
		{
			pr15=0;
			_nop_();
			pr12=0;
			_nop_();
			pr5 =0;
			_nop_();
			pr10=1;
		}
	if(voltage==12)
		{
			pr15=0;
			_nop_();
			pr10=0;
			_nop_();
			pr5 =0;
			_nop_();
			pr12=1;
		}
	if(voltage==15)
		{
			pr15=1;
			_nop_();
			pr12=0;
			_nop_();
			pr10=0;
			_nop_();
			pr5 =0;
		}	
	delay1(50);   //spilth 
}

char function_test (void)
{
	char bbuf,i,j=20;      //j为闪灯时间设置现设置为25,实际时间约为0.5,,在07年5月11号由25变为20
	bit bJ,bL;
	bbuf=group;
    delay1(10);
    RY=1;
    delay1(10);
    KP=1;
    delay1(10);
	switch (bbuf)
	{
		case 10:
		{
			LD10=1;
	        for(i=0;i<j;i++)
	        delay1(5);
	        delay1(1);
        	LD10=0;
   		}
		case 9:
		{
			LD9=1;
	        for(i=0;i<j;i++)
	        delay1(5);
        	LD9=0;
        	delay1(1);
		}
		case 8:
		{
			LD8=1;
	        for(i=0;i<j;i++)
	        delay1(5);
        	LD8=0;
        	delay1(1);			
		}
		case 7:
		{
			LD7=1;
	        for(i=0;i<j;i++)
	        delay1(5);
        	LD7=0;
        	delay1(1);
		}
		case 6:
		{
			LD6=1;
	        for(i=0;i<j;i++)
	        delay1(5);
        	LD6=0;
        	delay1(1);
		}
		case 5:
		{
			LD5=1;
			for(i=0;i<j;i++)
			delay1(5);
			LD5=0;
			delay1(1);
		}
		case 4:
		{
			LD4=1;
			for(i=0;i<j;i++)
			delay1(5);
			LD4=0;
			delay1(1);
		}
		case 3:
		{
			LD3=1;
			for(i=0;i<j;i++)
			delay1(5);
			LD3=0;
			delay1(1);
		}
		case 2:
		{
			LD2=1;
			for(i=0;i<j;i++)
			delay1(5);
			LD2=0;
			delay1(1);
		}
		case 1:
		{
			LD1=1;
			for(i=0;i<j;i++)
			delay1(6);
			LD1=0;
//			delay1(0);
		}	
	}
	for(i=0;i<j;i++)
	delay1(6);
    P0  =0xff;
    LD9 =1;
    LD10=1;
    for(i=0;i<j;i++)
    delay1(6);
    bJ=1;
    bL=1;
	while(bJ==1)
	{
		REDR=bL;
		bL=~bL;
		if(Limit!=0)
		return(0);
		if((Start==0)&(Limit==0))
		{
			delay1(10);
			if((Start==0)&(Limit==0))
				bJ=0;
		}
		delay1(10);
	}
	REDR=0;
	REDG=1;
	P0  =0x00;
    LD9 =0;
    LD10=0;
    delay1(10);
    RY=0;
    delay1(200);
    delay1(10);
    return(1);
}

void main(void)
{
    unsigned char ret,tt,i;
    bit	bI;
	port_init(); 
	P0=0x00;    
	LD9 =0;
    LD10=0;
    delay1(1);	
	choice_voltage();
	bI=0;
	RY=0;
	for(i=1;i<11;i++)
	{
		REDR=~bI;
		REDG=~bI;
		bI=~bI;
		delay1(100);
	}
	REDR=1;
	REDG=1;     
	while(1)
	{
	   while(Limit);
	   ret=short_check();	 
	   if (ret==0)
		{
			   REDR=1;
               REDG=0;
			   while(!Limit);		             
		}
	   if (ret==1)
		{
			   tt=function_test();
               if(tt==1)
			{
		    	REDG=1;
			    REDR=0;	
			}
			   if(tt==0)
			{
				REDR=1;
                REDG=1;
	            P0  =0x00;
                LD9 =0;
                LD10=0;
                delay1(10);
                RY=0;
                delay1(25);
                KP=0;
                delay1(10);
			}
			   while(!Limit);		             
		}
	      while(!Limit);
	      delay1(20);
	      REDR=0;
	      REDG=0;
	}	
	for(;;);
}

⌨️ 快捷键说明

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