新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2014-10-3
- 在线时间
- 4 小时
|
发表于 2014-10-12 16:26:03
|
显示全部楼层
51的开发板和15的开发板不一样,15的开发板运算速度更快,适当调一下波特率试一下。
例程:
/*-------------------------------------
UART1测试:使用波特率9600发送到单片机上
单片机将收到的程序发回PC。
可采用STC下载软件自带串口调试助手观察
---------------------------------------*/
#include "STC15F2K.h"
#include <intrins.H>
typedef unsigned char uchar;
typedef unsigned int uint;
bit busy;
bit Flag;
uchar GetC;
void InitUART(void);
void SendData(uchar dat);
void SendString(uchar *s);
void main()
{
P2=0x01;
InitUART();
SendString("IAP15F2K61S2\r\nUart Test !\r\n");
while(1)
{
if(Flag)
{
SendString("IAP15F2K61S2\r\nUart Test !\r\n");
SendData(GetC);
Flag=0;
}
}
}
/*----------------------------
UART1初始化
-----------------------------*/
void InitUART(void)
{
SCON = 0x50; //8位可变波特率
AUXR1= AUXR1 & 0x3F;
AUXR = 0x40; //定时器1为1T模式
TMOD = 0x20; //定时器1为模式2(8位自动重载)
TL1 = 0xDC; //设置波特率重装值
TH1 = 0xDC;
TR1 = 1; //定时器1开始工作
ES = 1; //使能串口中断
EA = 1;
}
/*----------------------------
UART 中断服务程序
-----------------------------*/
void Uart() interrupt 4 using 1
{
if (RI)
{
RI = 0; //清除RI位
GetC = SBUF; //P0显示串口数据
Flag=1;
}
if (TI)
{
TI = 0; //清除TI位
busy = 0; //清忙标志
}
}
/*----------------------------
发送串口数据
----------------------------*/
void SendData(uchar dat)
{
while (busy); //等待前面的数据发送完成
busy = 1;
SBUF = dat; //写数据到UART数据寄存器
}
/*----------------------------
发送字符串
----------------------------*/
void SendString(uchar *s)
{
while (*s) //检测字符串结束标志
{
SendData(*s++); //发送当前字符
}
} |
|