?? chengxu.c
字號:
/********************************************************************
匯誠科技
實現功能:串口控制繼電器程序
使用芯片:AT89S52
晶振:11.0592MHZ
波特率:9600
編譯環境:Keil
作者:zhangxinchunleo
網站:www.ourhc.cn
淘寶店:匯誠科技 http://shop36330473.taobao.com
【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
*********************************************************************/
/********************************************************************
單片機與PC機采用9針串口,MAX232通訊,波特率默認為9600.
單片機接收PC機發送的十六進制碼表如下:
01、全開:PC發送0xFF;
02、全關:PC發送0X00;
03、第一路開:PC發送0x01;
04、第二路開:PC發送0x02;
05、第三路開:PC發送0x03;
06、第四路開:PC發送0x04;
07、第五路開:PC發送0x05;
08、第六路開:PC發送0x06;
09、第七路開:PC發送0x07;
10、第八路開:PC發送0x08;
11、第一路關:PC發送0xFE;
12、第二路關:PC發送0xFD;
13、第三路關:PC發送0xFC;
14、第四路關:PC發送0xFB;
15、第五路關:PC發送0xFA;
16、第六路關:PC發送0xF9;
17、第七路關:PC發送0xF8;
18、第八路關:PC發送0xF7;
*********************************************************************/
#include<reg52.h> //庫文件
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
/********************************************************************
初始定義
*********************************************************************/
unsigned char dat; //用于存儲單片機接收發送緩沖寄存器SBUF里面的內容
/*定義八位出為單片機P2口*/
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit K5=P2^4;
sbit K6=P2^5;
sbit K7=P2^6;
sbit K8=P2^7;
/*定義八位入為單片機P1口*/
sbit SB1=P1^0;
sbit SB2=P1^1;
sbit SB3=P1^2;
sbit SB4=P1^3;
sbit SB5=P1^4;
sbit SB6=P1^5;
sbit SB7=P1^6;
sbit SB8=P1^7;
/********************************************************************
延時函數
*********************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
/********************************************************************
功能:串口初始化,波特率9600,方式1
*********************************************************************/
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/********************************************************************
主函數
*********************************************************************/
void main()
{
Init_Com();//串口初始化
while(1)
{
if ( RI ) //掃描判斷是否接收到數據,
{
dat = SBUF; //接收數據SBUF賦與dat
RI=0; //RI 清零。
//SBUF = dat; //在原樣把數據發送回去
}
/********************************************************************
接收數據判斷函數
*********************************************************************/
switch(dat) //接收數據判斷
{
uchar k;
k=10;
case 0xff: P2=0X00;delay(k);break; // 全開
case 0x00: P2=0XFF;delay(k);break; // 全關
case 0x01: K1=0;delay(k);break; // 第一路開
case 0x02: K2=0;delay(k);break; // 第二路開
case 0x03: K3=0;delay(k);break; // 第三路開
case 0x04: K4=0;delay(k);break; // 第四路開
case 0x05: K5=0;delay(k);break; // 第五路開
case 0x06: K6=0;delay(k);break; // 第六路開
case 0x07: K7=0;delay(k);break; // 第七路開
case 0x08: K8=0;delay(k);break; // 第八路開
case 0xFE: K1=1;delay(k);break; // 第一路關
case 0xFD: K2=1;delay(k);break; // 第二路關
case 0xFC: K3=1;delay(k);break; // 第三路關
case 0xFB: K4=1;delay(k);break; // 第四路關
case 0xFA: K5=1;delay(k);break; // 第五路關
case 0xF9: K6=1;delay(k);break; // 第六路關
case 0xF8: K7=1;delay(k);break; // 第七路關
case 0xF7: K8=1;delay(k);break; // 第八路關
default:break; // 跳出
}
}
}
/********************************************************************
結束
*********************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -