资源描述
______________________________________________________________________________________________________________
#include<reg52.h> //52系列单片机头文件
#include<intrins.h> // 使用到空指令
/*****************************************************************************/
#define uint unsigned int //用简写符号表示无符号整型数据类型
#define uchar unsigned char //简写符号表示无符号字符型数据类型
#define FOSC 12000000 //晶振大小值设定,便于计算波特率
#define BAUD 9600
sbit PWM=P1^1; //控制信号输出口定义
uchar a,b,y,i,j,s[4];
/*******************************串口初始化程序********************************/
void InitUART(void)
{
unsigned int iTmpBaud;
unsigned long lTmpBaud;
iTmpBaud = 0;
//首先选定定时器2作为波特率发生器,16位定时器,自动装载
SCON = 0x50; //SM0 SM1 SM2 REN TB8 RB8 TI RI //0 1 0 1 0 0 0 0
PCON = 0x00; //PCON的地址是87H,这里SMOD =0
T2CON = 0x30; //TF2 EXF2 RCLK TCLK EXEN2 TR2 C(/T2) CP(/RL2) //0 0 1 1 0 0 0 0
/* T2MOD = 0x00; // / / / / / / T2OE DCEN //0 0 0 0 0 0 0 0*/
lTmpBaud = FOSC/BAUD;
lTmpBaud /= 32; //12T-mode
iTmpBaud = lTmpBaud & 0xFFFF;
iTmpBaud = 65536 - iTmpBaud;
RCAP2H = (iTmpBaud>>8) & 0x0FF;
RCAP2L = iTmpBaud & 0x0FF;
RI = 0; //清除接收中断标志
REN = 1; //允许串行接收
ES = 1; //允许串行中断
TR2 = 1; //启动定时器1
EA=1;//开总中断
}
//************************************通过串口将接收到数据发送给PC端**************************************
void R_S_Byte(uchar R_Byte)
{
SBUF = R_Byte;
while( TI == 0 ); //查询法
TI = 0;
}
//*********************************串口收到数据****************************************
void UARTRead(void) interrupt 4 //接收上位机发送的控制指令
{
if(RI) //判断接收标志
{
s[i]=SBUF; //接收到的数据放入数组a
}
RI=0;
i++;
if(i==4)
{
i=0;
for(j=0;j<4;j++)
{
R_S_Byte(s[j]);
}
}
}
//*********************************主程序***************************************
void main(void)
{
InitUART();
while(1)
{
}
}
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文