AT89S52串口程序

论坛 期权论坛 脚本     
匿名技术用户   2021-1-9 07:34   32   0
/***************************************
*函数:main.c
*描述:
* 串口通讯协议标准测试:发送01234567
*时间:
*编写:
*版本:V1.0
****************************************/


#include <reg52.h>
#include <intrins.h>
#include <stdio.h>


#define uchar unsigned char
#define uint unsigned int


#define FSOC 11059200L //晶振
#define BAUD 9600 //波特率




uchar RevBuf; //保存串口接收到的数据,数据缓冲区




void SerialInit(void) //串口初始化
{
EA = 0;
SCON = 0x50; //SCON0:mode0,8-Bit,UART,Enable RXD
PCON |= 0x80; //SMOD00 =1;
TMOD = 0x20 ; //TMOD:timer1,mode2,8-bit relaod
TH1 = -(FSOC/BAUD/12/16); //set Timer1 reload value for baudrate
TL1 = -(FSOC/BAUD/12/16); //set Timer1 reload value for baudrate
TR1 =1;//start Timer1
//ES = 1; //enable UART0 interupt
EA = 1;




}


/*
//Reeive Char "串口中断方式接受数据"
//功能:接收到数据之后再发回去
void UART_INTR_SVC(void)interrupt 4 using 3
{
if(RI==1)
{
RI =0;
RevBuf =SBUF;
SBUF = RevBuf;

}
else
{
TI = 0;
}


}
*/


void main(void)
{


uchar m,n; //定义循环变量
SerialInit(); //初始化串口
//send('a');
for(m=0;m<10;m++)
{
SBUF = m+0x30;
while(TI!=1);
TI=0;
} //向电脑发送数据0123456789

SBUF = 0x0A; //换行符号的ASCII码
while(TI!=1);
TI=0;


for(n=0;n<10;n++)
{
SBUF = 0x40; //@的ASCII码
while(TI!=1);
TI=0;
}

SBUF = 0x0A;
while(TI!=1);
TI=0;


for(;;)
{
while(RI!=1);
RI=0;
RevBuf = SBUF; //查询方法接收数据


SBUF = RevBuf; //原数据发回
while(TI!=1);
TI=0;
}
}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP