📄 omloncommon.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 + -