📄 main.c
字号:
//程序功能描述:做为主控发送命令及数据。
//通信协议:开始码:EB 90,数据长度2字节,高位在前,地址码 0XFFFF,命令码:0X00,数据:即灯的控制数据。
//通信波特为50,000,用定时器T2做为发生器。
//作者:刘孝峰, 07-5-26
//#include <W77C32.h>
#include <AT89X55.h>
#include <string.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define YES 1
#define NO 0
#define RS485_ENABLE P3_2
//************通信宏定义***********
#define HEAD1 0Xeb
#define HEAD2 0x90
sfr WDREST = 0xa6;
sbit P3_2=P3^2;
/*sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_6=P2^6;
*/
#define MODE_ON 0
#define MODE_OFF 1
#define MODE1 P1_4
#define MODE2 P1_5
#define MODE3 P1_6
#define MODE4 P1_7
#define QUICK_ENABLE P2_6
//#define LED_ENABLE P1_7
//**********定时中断TO的时间变量定义***
uchar time20ms;
//**********通信变量定义************
uchar idata Send_Buf[24];
uchar idata ucRemoteAdd;//远端地址,256个最大受控对象
uint Data_Length;//发送数据长度
uchar ucQuick;
uchar code CODE1[24]={255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
uchar code CODE2[24]={0,255,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
uchar code CODE3[24]={0,0,255,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
uchar code CODE4[24]={255,0,0,255, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
uchar code CODE5[24]={255,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
//****************************图形********************
uchar code PIC1[23][24]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //1,三角形
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //2
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //3
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //4
0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, //5
0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, //6
0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, //7
0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, //8
0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, //9
0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, //10
0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, //11
0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, //12
0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //13
0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //14
0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, //15
0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, //16
0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, //17
0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, //18
0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, //19
0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, //20
0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, //21
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, //22
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, //23
};
uchar code PIC2[23][24]={ 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //1,三角形
0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //2
0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //3
0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //4
0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, //5
0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, //6
0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, //7
0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, 0,255, 0, 0,255, 0, 0, 0, 0, 0, //8
0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, //9
0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255, 0,255, 0, 0, 0, 0, 0, //10
0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, //11
0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, //12
0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //13
0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, //14
0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, //15
0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, //16
0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, //17
0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, //18
0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, //19
0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, //20
0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, //21
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255, //22
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255, //23
};
uchar code PIC3[23][24]={ 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255, //2
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
0,255, 0,255, 0, 55, 0,255, 0,255, 0, 255, 0,255, 0,255, 0,255, 0,255, 0, 255, 0, 255,
255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0,255, 0, 255, 0,255, 0, 255,0, 255, 0, //1,三角形
};
//**************函数的定义**********
void SYS_Init(void);//初始化函数
void SCON_Init(void);//串口初始化函数
void Send_Data(uchar ucRemoteAdd);//发送数据子函数
void Clear_Buf(void);//清发送缓冲区函数
//void REST_WDT(void);
void Delay_Time(uint TimeCount);
void mode1(void);
void mode2(void);
void mode3(void);
void mode4(void);//模式变化函数
void deal_quick(void);
//******主函数***************
void main(void)
{
uchar temp;
SYS_Init();
SCON_Init();
while(1)
{
temp=P1;
deal_quick();
if(MODE1==MODE_ON){ mode1();}
if(MODE2==MODE_ON){ mode2();}
if(MODE3==MODE_ON){ mode3();}
if(MODE4==MODE_ON){ mode4();}
}
}
void deal_quick(void)
{
uchar temp;
QUICK_ENABLE=0;
Delay_Time(50);
temp=P0;//读取速度变化位
if(!P0_0){ucQuick=1;return;}
if(!P0_1){ucQuick=4;return;}
if(!P0_2){ucQuick=10;return;}
if(!P0_3){ucQuick=26;return;}
if(!P0_4){ucQuick=60;return;}
if(!P0_5){ucQuick=120;return;}
ucQuick=100;
QUICK_ENABLE=1;
}
//***********系统初始化函数**************
void SYS_Init(void)
{
// uchar i;
time20ms=0;
Data_Length=0;
ucRemoteAdd=0xff;
}
//***********串口初始花函数**************
void SCON_Init(void)
{
PSW=0;
TMOD=0X01; //TMR0 WORK 1 16BIT
T2MOD=0X00;
TH0=0xff;//100us
TL0=0X38;
TCON=0X10;
PCON=0;//波特例不加倍。SMOD=0;
C_T2=0;
RCLK=1;
TCLK=1;
TF2=0;
RCAP2H=0XFF;
RCAP2L=0XF1;//@24MH,50,000BP
// RCAP2H=0XFF;
// RCAP2L=0XDC;//@24MH,50,000BP
SCON=0X50;
TR2=1;
IE=0X82; //不用串口中断
RS485_ENABLE=YES; //允许接收 以发送为主 RS485_ENABLE=1
}
//************看门狗涵数********
/*void REST_WDT(void)
{
WDREST=0x1e;
WDREST=0xe1;
} */
//***********清发送缓冲区函数****
void Clear_Buf(void)
{
memset(Send_Buf, 0x00, sizeof(Send_Buf));
}
//*********发送数据子函数*********
void Send_Data(uchar ucRemoteAdd)
{
uint i;
RS485_ENABLE=YES;
Data_Length=sizeof(Send_Buf)+3;
SBUF=HEAD1;
while(TI==0);
TI=0;
// REST_WDT();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -