stc单片机能下载程序但是用串口通信程序给电脑发字符。收不到。该 程 序在仿真软件中用C51单片机仿真成功
4个回答
展开全部
测试通过的!!
#include <STC12C56.h>
#include "UART.h"
#define RELOAD_COUNT 0xFD // 11.0592MHz, 12T, 9600BTR
void UART_Init(void)
{
SCON = 0x40; // 8位UART,波特率可变,禁止接收
PCON &= 0x3F; // 波特率不加倍
AUXR = 0x00;
TMOD |= 0x20;
TH1 = RELOAD_COUNT;
//EA = 1;
}
/***********************************************************************************
* Description: 从串口发送一个字节数据
* Input: chr, 发送的数据
* Output: none
* Return: none
* Note:
************************************************************************************/
void UART_SendByte(UINT8 dat)
{
TL1 = TH1;
TR1 = 1;
TI = 0;
SBUF = dat;
while (!TI);
TI = 0;
TR1 = 0;
}
/***********************************************************************************
* Function: Uart0_SendString
* Description: 从串口发送一个字符串数据
* Input: *ptr, 发送字符串数据块指针
* Output: none
* Return: none
* Note:
************************************************************************************/
void Uart0_SendString (unsigned char *ptr)
{
while(*ptr)
{
UART_SendByte(*ptr++); // 发送数据
}
}
#include <STC12C56.h>
#include "UART.h"
#define RELOAD_COUNT 0xFD // 11.0592MHz, 12T, 9600BTR
void UART_Init(void)
{
SCON = 0x40; // 8位UART,波特率可变,禁止接收
PCON &= 0x3F; // 波特率不加倍
AUXR = 0x00;
TMOD |= 0x20;
TH1 = RELOAD_COUNT;
//EA = 1;
}
/***********************************************************************************
* Description: 从串口发送一个字节数据
* Input: chr, 发送的数据
* Output: none
* Return: none
* Note:
************************************************************************************/
void UART_SendByte(UINT8 dat)
{
TL1 = TH1;
TR1 = 1;
TI = 0;
SBUF = dat;
while (!TI);
TI = 0;
TR1 = 0;
}
/***********************************************************************************
* Function: Uart0_SendString
* Description: 从串口发送一个字符串数据
* Input: *ptr, 发送字符串数据块指针
* Output: none
* Return: none
* Note:
************************************************************************************/
void Uart0_SendString (unsigned char *ptr)
{
while(*ptr)
{
UART_SendByte(*ptr++); // 发送数据
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您这样,先用STC提供的示例程序来试,调通之后,再用您自己的程序,要先用STCISP下载软件上的比特率计算器算一下误码率,小于2%就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void UART_SendByte(UINT8 dat)
{
TL1 = TH1;
TR1 = 1;
TI = 0; <---
SBUF = dat;
while (!TI); <----
TI = 0; <----
TR1 = 0;
}
检查下三个箭头所指位置代码是否都无误!!
另外,UART代码没有,看不出其它问题。
{
TL1 = TH1;
TR1 = 1;
TI = 0; <---
SBUF = dat;
while (!TI); <----
TI = 0; <----
TR1 = 0;
}
检查下三个箭头所指位置代码是否都无误!!
另外,UART代码没有,看不出其它问题。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 如果程序没错,显然你单片机没有带串口,stc型号是什么,贴下吧,
2,stc用isp技术烧写的,没串口也能烧进程序的。
2,stc用isp技术烧写的,没串口也能烧进程序的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询