C#: 串口(定时)控制下位机开关
作者:互联网
1. 下位机
/********************************************************************************************* 出品: 杜洋工作室 DoYoung Studio 程序名: DB1-011 电脑控制电源插座 编写人: 杜洋 编写时间: 2013年01月17日 硬件支持: DB1(PCB1) 修改日志: 1-2013011723 完成开发,4路开关控制+全局开关 2-2013011900 加入5到11路的扩展项目 /********************************************************************************************* 说明: 请使用DBC软件进行控制。 DB1端串口波特率4800,每次接收2个字节的数据(数据头码+控制项目序号) /*********************************************************************************************/ #include <reg52.h> //头文件 #define HEAD 0x00//数据头码 sbit J1 = P1 ^ 3;//控制器接口定义 sbit J2 = P3 ^ 2;// sbit J3 = P1 ^ 4;// sbit J4 = P1 ^ 5;// sbit J5 = P1 ^ 7;//5-11路没有使用(第12路用作了全局开关) sbit J6 = P1 ^ 7;// sbit J7 = P1 ^ 7;// sbit J8 = P1 ^ 7;// sbit J9 = P1 ^ 7;// sbit J10 = P1 ^ 7;// sbit J11 = P1 ^ 7;// /*********************************************************************************************/ void DELAY_MS (unsigned int a){//毫秒级延时 unsigned int i; while( a-- != 0){ for(i = 0; i < 600; i++); } } /*********************************************************************************************/ void UART_init (void){//UART串口初始化函数 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**********************************************************************************************/ void main (void){ unsigned char UART_data1,UART_data2; //定义串口接收数据变量 unsigned int s; // DELAY_MS(1000);//延时防止下载时死机 UART_init();//串口初始化(查寻) while(1){ if (RI == 1){ //接收中断标志位为1时//接受数据头码 UART_data1 = SBUF; //接收数据 SBUF 为单片机的接收发送缓冲寄存器 RI = 0; //令接收中断标志位为0(软件清零) s=0; while (s<2000&&UART_data1==HEAD){//判断头码是否正确,等待时间过长时跳出。 s++; if (RI == 1){//开始接受控制数据 UART_data2 = SBUF;// RI = 0; switch (UART_data2){ case 0x01:J1=0;break;//第1路开 case 0x81:J1=1;break;//第1路关 case 0x02:J2=0;break; case 0x82:J2=1;break; case 0x03:J3=0;break; case 0x83:J3=1;break; case 0x04:J4=0;break; case 0x84:J4=1;break; case 0x05:J5=0;break; case 0x85:J5=1;break; case 0x06:J6=0;break; case 0x86:J6=1;break; case 0x07:J7=0;break; case 0x87:J7=1;break; case 0x08:J8=0;break; case 0x88:J8=1;break; case 0x09:J9=0;break; case 0x89:J9=1;break; case 0x0A:J10=0;break; case 0x8A:J10=1;break; case 0x0B:J11=0;break; case 0x8B:J11=1;break; case 0x0C:J1=0;J2=0;J3=0;J4=0;J5=0;J6=0;J7=0;J8=0;J9=0;J10=0;J11=0;break;//全局开关 case 0x8C:J1=1;J2=1;J3=1;J4=1;J5=1;J6=1;J7=1;J8=1;J9=1;J10=1;J11=1;break; default://冗余语句 break; } } } } } } /**********************************************************************************************/ //杜洋工作室 DoYoung Studio /*********************************************************************************************/
2. 上位机界面
// TODO: P10
标签:P1,C#,void,unsigned,下位,UART,串口,sbit 来源: https://www.cnblogs.com/JasperZhao/p/16113758.html