分享一个问题,STC89C52。

今天使用仿真软件去仿真51单片机的串口,却发现无论怎么设置51单片机计算器串口都无法工作,经过多方面的调试最终发现是keil的原因。可能的原因是:可能程序工程是很早以前创建的,和现在电脑版本的有所区别,编译出来的窗口是不能使用的。

解决方法:当前电脑用什么版本的keil软件,自己用软件创建出一个新的工程。
下面我贴出能够正常工作的仿真图和仿真代码。

另外一个分析:如果用了定时器0,把初始化定时器0的代码放在初始化串口之后。

下面就是我的仿真图:

下面就是我的测试代码:

#include "reg52.h"
#include <intrins.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>/********************************************************************************** 【函 数 名】: void send_cmd(unsigned char dat)* 【功    能】: 串口发送数据命令**********************************************************************************/
void send( unsigned char dat )
{SBUF = dat;     /* 发送指令到SBUF */while ( !TI );       /* 等待发送结束 */TI = 0;         /* 清除结束标志,以便再发送数据 */
}
/********************************************************************************** 【函 数 名】: Print_Str(unsigned char *s)* 【功    能】: 串口发送 一个字符串**********************************************************************************/
void Print_Str( unsigned char *s )
{while ( *s != '\0' ){send( *s++ );}
}
#define FSOC    11059200L                       /* 晶振 */
#define BAUD    9600                            /* 波特率 */
/********************************************************************************** 【函 数 名】: void SerInit(void)* 【功    能】: 串口初始化程序 设置波特率为9600**********************************************************************************/
void SerInit( void )
{SCON   = 0x50;                         /* 010 1 0000B,工作方式1, 8位UART,波特率可变,允许接收 */TMOD    = 0x20;                         /* T1工作于方式2 */TCON = 0x40;                         /* 定时器1开始计数 */TH1  = -(FSOC / BAUD / 12 / 16);     /* T1计数初值 */TL1    = -(FSOC / BAUD / 12 / 16);PCON    = 0x80;                         /* SMOD置1,双倍速率 */RI    = 0;TI = 0;ES = 1;                                 /* 关闭串口中断 */
}unsigned char Txd_data;
void Uart_isr() interrupt 4             /* 中断接收程序 */
{if ( RI )                       /* 判断是否接收完,接收完成后,由硬件置RI位 */{Txd_data = SBUF; /* 读入缓冲区 */RI      = 0;    /* 清标志 */send( Txd_data );}
}void delay_ms( unsigned int t )                 /* 延时xms */
{unsigned char ttt;while ( t-- ){for ( ttt = 0; ttt < 125; ttt++ );}
}
/***********************************************************************************       主函数**********************************************************************************/
void main( void )
{SerInit();EA = 1;delay_ms( 200 );Print_Str( "zheng dian bao shi " );Print_Str( "\r\n" ); /* 发送换行符号 便于看 */while ( 1 ){}
}

proteus 8.9 8.6 串口 无法仿真 仿真不出来 51单片机相关推荐

  1. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  2. c语言设计一个仿真窗口的程序,51单片机C语言实例(350例)Proteus仿真和代码

    100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示D ...

  3. sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表

    请点上面蓝色字    即可免费订阅!  1.简述 本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压 ...

  4. 恒温控制系统单片机仿真c语言,基于51单片机的恒温控制系统

    #include void main()//主函数 { init();//初始化函数 while(1) { temp_control();//控制按键函数 unnormal_proccessing(g ...

  5. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  6. 基于51单片机简易数字示波器Proteus仿真

    功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...

  7. 51单片机全自动洗衣机proteus仿真设计

    51单片机全自动洗衣机proteus仿真设计 目录标题 51单片机全自动洗衣机proteus仿真设计 设计介绍 仿真图 电动机驱动模块电路设计 电源模块电路设计 控制按键 进水阀和排水阀控制继电器 程 ...

  8. 使用proteus仿真51单片机来实现十字路口红绿灯

    一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...

  9. 基于51单片机的多彩霓虹灯控制系统proteus仿真

    仿真电路图: 基于51单片机,8个LED组成流水灯,通过一个按键切换模式 部分代码: #include<reg51.h>void delay(unsigned char ms) //延时函 ...

  10. 51单片机温度检测及串口传输(带时间显示)

    具体实现功能: 1.LCD显示实时时钟:年.月.日.时.分.秒: 2.实时测量温度,LCD更新显示温度值: 3.按键触发存储当前温度和时钟信息(年.月.日.时.分): 4.按键触发串口传输存储的温度和 ...

最新文章

  1. 计算机书籍- 网络爬虫开发实战
  2. 古塔问题matlab,基于 Matlab 对古塔变形趋势探究的数学模型
  3. 极致的线上产品设计与终极数据分析工具,两者缺一不可(中)
  4. [Cake] 2. dotnet 全局工具 cake
  5. 配置springcloud配置中心读取github上的配置文件报错:com.jcraft.jsch.JSchException: Auth fail解决方案
  6. python requests 10041报错_Python:requests高级_模拟登陆
  7. 实验4-1-10 兔子繁衍问题 (15 分)
  8. php memcache 有效期,PHP可以拿到memcache中的key的过期时间吗?
  9. astype()函数
  10. 3、FFmpeg 过滤器
  11. Anaconda安装报错(Failed to create Anaconda menus)
  12. cds云服务器_云探CDS拨测服务全面上线
  13. Cadence学习七:给板子外形倒角
  14. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...
  15. java拼图游戏设计文档_基于JAVA的拼图游戏的设计与实现(含录像)
  16. 一文带你理解前后端分离本质
  17. 画多个矩形c语言,C# winform开发:Graphics、pictureBox同时画多个矩形
  18. l5630鲁大师跑分_鲁大师安卓3D引擎更新,跑分测试精准度再升级
  19. mysql5.7 树遍历_Mysql5.7 存储过程 遍历select结果集并进行其他操作
  20. selenium版本低导致运行报错打不开浏览器问题

热门文章

  1. AI架构师必知必会系列:云计算与AI
  2. SAP 检查跨公司预制发票MIR7
  3. Spaceship Solitaire【Codeforces 1266 E】【思维】
  4. Java权限修饰符、final、常量、枚举、抽象类、接口
  5. Linux命令 - cd命令
  6. 【优化调度】基于粒子群算法求解分布式能源调度优化问题含Matlab源码
  7. 易网客大数据广告将振兴商业WiFi市场
  8. 用C++做一个简单的下课提醒
  9. idea上传git被拒绝_IDEA上传项目到gitee被拒绝,解决方式
  10. 黑眼圈:缓解/防止方法