求助~!一个简单的单片机串口发送字符函数 用的是STC12C4052AD这款 11.0592M的晶振 一直显示乱码 为什么嘞
之前程序在STC12C5A60S2这款上可以正常使用更改了头文件之后程序保持不变换成4052AD就用不了了求大神帮忙看一下~~无比感激~~~#include"intrin...
之前程序在STC12C5A60S2这款上可以正常使用 更改了头文件之后 程序保持不变 换成4052AD就用不了了 求大神帮忙看一下~~无比感激~~~
#include "intrins.h"
#include "STC12C2052AD.H"
#define uchar unsigned char
#define uint unsigned int
unsigned char *str0="*******************\r\n";
unsigned char *str1="The temp is:";
unsigned char *str2="℃\r\n";
//串口初始化函数
void Com_init(void)
{
TMOD = 0x20; //设置波特率为9600和定时器1工作方式
TL1 = 0xFD; //设置初始值
TH1 = 0xFD;
SCON = 0x50; //设置串行口工作方式
PCON = 0x00;
TR1 = 1; //允许发送
//ET0 = 1; //启动定时器
EA = 1;
ES = 1; //串行中断允许
}
//串口接收中断函数
void comm() interrupt 4
{
ES=0;
if(1==RI)
{
RI=0;
}
ES=1;
}
//单个字符发送函数
void send_char(unsigned char ch)
{
SBUF = ch; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(TI==0);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}
//字符串发送函数
void send_data(unsigned char *Value,unsigned char Len) //发送字符串
{
unsigned char i;
for(i=0;i<Len;i++)
{
send_char(*Value);
Value++;
}
}
void main()
{
Com_init();
while(1)
{
//发送
send_data(str0,21);
send_data(str1,12);
send_data(str2,4);
}
} 展开
#include "intrins.h"
#include "STC12C2052AD.H"
#define uchar unsigned char
#define uint unsigned int
unsigned char *str0="*******************\r\n";
unsigned char *str1="The temp is:";
unsigned char *str2="℃\r\n";
//串口初始化函数
void Com_init(void)
{
TMOD = 0x20; //设置波特率为9600和定时器1工作方式
TL1 = 0xFD; //设置初始值
TH1 = 0xFD;
SCON = 0x50; //设置串行口工作方式
PCON = 0x00;
TR1 = 1; //允许发送
//ET0 = 1; //启动定时器
EA = 1;
ES = 1; //串行中断允许
}
//串口接收中断函数
void comm() interrupt 4
{
ES=0;
if(1==RI)
{
RI=0;
}
ES=1;
}
//单个字符发送函数
void send_char(unsigned char ch)
{
SBUF = ch; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(TI==0);// 等特数据传送(TI发送中断标志)
TI = 0;// 清除数据传送标志
}
//字符串发送函数
void send_data(unsigned char *Value,unsigned char Len) //发送字符串
{
unsigned char i;
for(i=0;i<Len;i++)
{
send_char(*Value);
Value++;
}
}
void main()
{
Com_init();
while(1)
{
//发送
send_data(str0,21);
send_data(str1,12);
send_data(str2,4);
}
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询