📄 main.c
字号:
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
case 1://绿色亮
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=ON;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
// delay();
if(ut10sTimer<50)
{ if(Is_change==1)
{
Is_change=0;
}
}
else {
Is_change=0;
ut10sTimer=0;
tt++;
j=0;
}
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
case 2://蓝色亮
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=ON;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
// delay();
if(ut10sTimer<50)
{ if(Is_change==1)
{
Is_change=0;
}
}
else {
Is_change=0;
ut10sTimer=0;
tt++;
j=0;
}
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
case 3://红绿亮
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=ON;
SCLK595=1;
SCLK595=0; //绿
SDATA595=ON;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
// delay();
if(ut10sTimer<50)
{ if(Is_change==1)
{
Is_change=0;
}
}
else {
Is_change=0;
ut10sTimer=0;
tt++;
j=0;
}
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
case 4://红蓝亮
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=ON;
SCLK595=1;
SCLK595=0; //红
SDATA595=ON;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
// delay();
if(ut10sTimer<50)
{ if(Is_change==1)
{
Is_change=0;
}
}
else {
Is_change=0;
ut10sTimer=0;
tt++;
j=0;
}
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
case 5://绿蓝亮
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=ON;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=ON;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
// delay();
if(ut10sTimer<50)
{ if(Is_change==1)
{
Is_change=0;
}
}
else {
Is_change=0;
ut10sTimer=0;
tt=0;
j=0;
}
SLATCH595=0;
for(i=0;i<=JUMP_NUMBER_MAX;i++)
{
SCLK595=0; //蓝
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //红
SDATA595=OFF;
SCLK595=1;
SCLK595=0; //绿
SDATA595=OFF;
SCLK595=1;
}
SCLK595=0;
SLATCH595=1;
SLATCH595=0;
//delayrgb();
break;
default :
for(i=0;i<24;i++)
{ //ucdot[i]=0;
}
tt=0;
break;
}
}
//*********** 通信接收处理函数***************
void RECV_Deal(void)
{
uint TempAdd;
Recv_Wait_Time=0;//接收等待计时
RecvBuf[ RECV_Point]=SBUF;
if( Recv_LightData_Flag==NO )
{
switch( RECV_Point)
{
case 0: if( RecvBuf[0]!=HEAD1)
{
Clear_RecvBuf();
return;
}
else
{
Recv_WaitTime_Flag=YES;
NO_RecvFlag=NO;
ut20s=0;
}
break;
case 1: if( RecvBuf[ 1]!=HEAD2)
{
Clear_RecvBuf();
return;
}
break;
case 3:
Recv_DataLeng=((uint) RecvBuf[2]<<8)|RecvBuf[3];
break;
case 5: TempAdd= ((uint) RecvBuf[4]<<8)|RecvBuf[5];
if(TempAdd!=0xffff)
{
Clear_RecvBuf();
return;
}
break;
case 6:
// P1_2=0; 测试用
if( RecvBuf[6]!=0x00)
{
Clear_RecvBuf();
return;
}
break;
}
if( RECV_Point<6)
{
RECV_Point++;
}
else
{
Clear_RecvBuf();
Light_Point=0;
LightCount=0;
Recv_LightData_Flag=YES;
Recv_WaitTime_Flag=NO;
}
}
else
{
// if( LightCount>= (SelfAdd-1)*6)
if(Light_Point<6)
{
LightData[ Light_Point++]=SBUF;
// P1_3=0;
if(Light_Point==6)
{
Light_Point=0;
LightCount=0;
Recv_LightData_Flag=NO;
Clear_RecvBuf();
return;
}
}
LightCount++;
}
}
//*********清接收缓冲区***************
void Clear_RecvBuf(void)
{
uchar i;
for(i=0;i<RECV_Point;i++)
{
RecvBuf[i]=0;
}
RECV_Point=0;
}
//***********通信超时处理函数*********
void Com_Deal(void)
{
if( Recv_OverTime_Flag==YES)
{
Recv_Wait_Time=0;
Recv_OverTime_Flag=NO;
Clear_RecvBuf();
}
}
//-----
/*EEPROM读N个字节函数,
入口参数:n-字节数;*buffer-存放缓冲地址
返回值:操作成功标志
*/
/*static bit EE_RNB(unsigned char n,unsigned char *buffer)
{
IIC_Start();
IIC_Byte_W(EE_R_ADDR);
if(!IIC_ACK()) //等待接收器应答信号
return FALSE;
Read_N_Bytes(n,buffer);
return TRUE;
}
*/
//----------
/*EEPROM写地址函数,
描述:EEPROM读写前都应该写地址
入口参数:地址值
返回值:操作成功标志
*/
/*static bit EE_W_Addr(unsigned int ui_Addr_Value)
{
IIC_Start();
IIC_Byte_W(EE_W_ADDR);
if(!IIC_ACK()) //等待接收器应答信号
return FALSE;
IIC_Byte_W(ui_Addr_Value>>8); //向总线发送接收器地址
if(!IIC_ACK()) //等待接收器应答信号
return FALSE;
IIC_Byte_W((unsigned char)ui_Addr_Value); //向总线发送接收器地址
if(!IIC_ACK()) //等待接收器应答信号
return FALSE;
return TRUE;
}
*/
//----------
/*IIC总线启动函数
描述:启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变
入口参数:无
返回值:无
*/
/*static void IIC_Start()
{
SDA=1;
SCL=1;
Delay(DELAY_TIME);
SDA=0;
Delay(DELAY_TIME);
SCL=0;
Delay(DELAY_TIME);
} */
//-------------
/*IIC总线终止函数
描述:终止I2C总线,当SCL为高电平时使SDA产生一个正跳变
入口参数:无
返回值:无
*/
/*static void IIC_Stop()
{
SDA=0;
SCL=1;
Delay(DELAY_TIME);
SDA=1;
Delay(DELAY_TIME);
SCL=0;
Delay(DELAY_TIME);
}
*/
//-------------------
/*IIC总线上发送一个位0函数
描述:发送0,在SCL为高电平时使SDA信号为低
入口参数:无
返回值:无
*/
/*static void SEND_0()
{
SDA=0;
SCL=1;
Delay(DELAY_TIME);
SCL=0;
Delay(DELAY_TIME);
}
*/
//-----------------------------------
/*IIC总线上发送一个位1函数
描述:发送1,在SCL为高电平时使SDA信号为高
入口参数:无
返回值:无
*/
/*
static void SEND_1()
{
SDA=1;
SCL=1;
Delay(DELAY_TIME);
SCL=0;
Delay(DELAY_TIME);
}
*/
//-------------
/*
描述:IIC总线发送完一个字节后检验设备的应答信号
入口参数:无
返回值:成功标志
*/
/*
static bit IIC_ACK()
{
bit Temp1;
SDA=1;
SCL=1;
Delay(DELAY_TIME/2);
Temp1=SDA; //sda is '0'//
Delay(DELAY_TIME/2);
SCL=0;
Delay(DELAY_TIME);
if(Temp1==1)
return FALSE;
return TRUE;
}
*/
//-----------
/*
描述:向IIC总线写一个字节
入口参数:要写的值
返回值:无
*/
/*static void IIC_Byte_W(unsigned char b)//reentrant
{
unsigned char i;
for(i=0;i<8;i++)
{
if((b<<i)&0x80)
SEND_1();
else
SEND_0();
}
}
*/
//-----------------
/*
描述:向IIC总线写N个字节
入口参数:*buffer-要写的值的缓冲的地址,n-写个个数
返回值:无
*/
/*static bit Write_N_Bytes(unsigned char *buffer,unsigned char n)//reentrant
{
//向I2C总线写n个字节
unsigned char i;
for(i=0;i<n;i++)
{
IIC_Byte_W(buffer[i]);
Delay(DELAY_TIME);
if(!IIC_ACK())
{
IIC_Stop();
return FALSE;
}
}
return TRUE;
}
*/
//---------
/*
描述:从I2C总线读一个字节
入口参数:无
返回值:读取的值
*/
/*
static unsigned char IIC_Byte_R(void)//reentrant
{
//从I2C总线读一个字节
bit Temp1;
unsigned char b=0,i;
for(i=0;i<8;i++)
{
SDA=1; //释放总线
SCL=1; //接受数据
Delay(DELAY_TIME/2);
Temp1=SDA;
Delay(DELAY_TIME/2);
SCL=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -