[STC单片机] 程序在STC89C52RC上不能运行

[复制链接]
 楼主| asd998877 发表于 2017-6-16 15:06 | 显示全部楼层 |阅读模式
本帖最后由 asd998877 于 2017-6-16 15:11 编辑

用蓝牙模块通信,和开发学习板。板子和单片机都没有坏。烧录也成功了。RXT对的单片机的RXT,TXD对单片机的TDXD.ER脚通了VCC的电。用KEil模拟仿真,手机可以的到Success.
可是换成RXD对单片机的RTXD.TXD对单片机的RXD.仿真也没有数据是怎么回事?
刚自学。不知道那有问题。求教各位大神
#include "reg52.h"
#include "intrins.h"

unsigned char SenData,Flag;

char code str1[]="Success";
char code str2[]="Error";

void send_str();
void InitUART(void);
void send_str2();
void delayms(unsigned char ms);
void send_char(unsigned char txd);

void InitUART(void)
{
/*******************设定串口**********************/
SCON=0x50;                        //设置为工作方式1
TMOD=0x20;                        //设置计数器工作方式2
PCON =0x80;                        //波特率加倍
TH1=0xFA;                                //计数器初始值设置,注意波特率是9600的
TL1=TH1;
ES=1;                                                //打开接收中断
EA=1;                                                //打开总中断
TR1=1;                                        //打开计数器
/******************设定中断**********************/
}
void main()  //主函数
{        
InitUART();
while(1){
if(Flag==1)
{
ES = 0;
delayms(50);
//----------------------该段即对接收的数据进行处理
if(SenData==97)//97为字符a的ascii
{
delayms(10);//延时去抖动
send_str();//发送数据
}
else
{
delayms(10);
send_str2();
}
Flag=0;//数据处理完毕后将标志位置0,表示没有新数据要处理
}
ES = 1;
}
}

void ser_int()interrupt 4//接收字符串
{  

if(RI==1)//RI接受中断标志
{
SenData = SBUF ;
RI=0;//清除标志.
Flag =1;//标志位置1表示有新数据进来
}
else
TI = 0;
}


void send_str()//发送字串
{
unsigned char i=0;
while(str1!='\0')
{
SBUF =str1;
while(!TI);//等待数据传送
TI=0;//清除数据传输标志
i++;//下一个字符串
}
}

void send_str2()//发送字串
{
unsigned char i=0;
while(str2!='\0')
{
SBUF =str2;
while(!TI);//等待数据传送
TI=0;//清除数据传输标志
i++;//下一个字符串
}
}



void delayms( unsigned char ms)//延时子程序
{
unsigned char i;
while(ms--)
{
for(i=0;i<120;i++);
}
}

dirtwillfly 发表于 2017-6-16 17:35 | 显示全部楼层
看来mcu没有运行,看看供电是否正常,晶振起振了没有?
用逻辑分析仪观察一下串口io的时序,看是否正常
 楼主| asd998877 发表于 2017-6-16 17:45 | 显示全部楼层
dirtwillfly 发表于 2017-6-16 17:35
看来mcu没有运行,看看供电是否正常,晶振起振了没有?
用逻辑分析仪观察一下串口io的时序,看是否正常 ...

mcu是什么,如果是供电的话。我往单片机里烧其他程序,led灯闪烁的程序,它也执行了
hp34401a 发表于 2017-6-17 11:17 | 显示全部楼层
mcu是什么都不知道,最基本的名词了,如何开发???
fengjumeng 发表于 2017-6-19 08:20 | 显示全部楼层
这里不对  应该是: RX对的单片机的TX,TX对单片机的RX.  交叉连接
yjmdxp 发表于 2017-7-13 16:12 | 显示全部楼层
弄个仿真芯片试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部