程序有误,为什么Keil却没有报错

2019-05-20来源: eefocus关键字:程序有误  Keil  报错

这两天在整1602,程序都写完后用Keil编译,有报错,但后来都一一解决了,于是烧进单片机,可不管怎么调1602就是不显示,首先我可以确定硬件电路是没有问题的,因为我用另外一个程序往1602里面写一个字符串,就可以显示。最后我只得对照书上的源程序,一个字母一个字母比对,比较了有3次,问题依然没有找到,都有点灰心了,花了我一天半时间于是就放一边了。今天下班后再一次找错,总与知道错在了哪里,


/*********************************

函数功能:写数据

*********************************/

void WriteData(unsigned char y)

{

while(BusyTest()==1);

RS=1;       //此处错误,RS写成了ES,可为什么检查不出来呢

RW=0;

E=0;

P0=y;

_nop_();

_nop_();

_nop_();

_nop_();

E=1;     

_nop_();

_nop_();

_nop_();

_nop_();

E=0;          //当E由高电平跳变成低电平时,液晶模块开始执行命令

}


在向1602写数据的时候,RS=1误写成了ES=1,当然肯定写不进去了,但Keil为啥不报错呢?只是因为没有语法错误吗?


其实,在写不进去的时候我就应该好好检查一下WriteData这个函数是否正确,找问题的时候不进行分析可能出错的地方,到头来耽误的还是自己的时间。

关键字:程序有误  Keil  报错 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic462280.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STC12C5A32S2单片机之1602渐入显示
下一篇:Keil4出现contains an incorrect path的提示

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Keil C51 中使用Printf()进行串口输出
如何使用printf在串口显示信息,有两种办法,因为在keil C51中 printf函数是调用putchar进行数据传送的,而putchar应该是先判断TI是否为1,不为1则等待为1。 如果为1则清0,然后送出一个字符。因此如果你直接使用printf函数,你的程序就会在putchar函数中等待TI为1。这时你的程序就相当于直接死掉了。你可以通过改写putchar函数实现自己的目的。TI相当于是初始化不给赋初值就不干活。所以第一种办法就是在初始化的时候,给TI赋值为1,比如void uart_init() {    PCON &= 0x7F; //波特率不倍速 SCON
发表于 2020-03-08
Keil C51单片机集成开发环境编程与调试教程
同 VC 之类的通用 C 语言集成开发环境(IDE)一样,Keil 也采用“工程”(Project)的方式管理源代码及相关文件,这种管理方式为由多个源代码文件组 成的大型程序开发提供了方便。不管是最简单的 C51程序,还是复杂的多文件 程序都需要以下步骤:1)先建立新的工程文件;2)在工程中新建源代码文件,或是将已经存在的源代码文件加入工程;3)编译;4)调试,修正错误再编译;5)将生成的二进制文件*.hex 烧入单片机。 本教程重点介绍上述前 4 个步骤。二、Keil中新建工程的步骤1. 单击菜单“Project——New uVision Project……” 出现新建工程对话框:在此对话框中选择存放工程各类文件的路径和文
发表于 2020-03-03
Keil C51单片机集成开发环境编程与调试教程
使用KEIL、Atmel studio将数组定义在Flash区
简介:在进行51或AVR单片机程序开发时如果需要定义较大的数组或字符串时,一般定义将会把这些占用内存较大的变量放置到RAM中,因此RAM吃紧,严重的话将导致程序崩溃,面对这种情况我们可以将这些占用内存较大的变量定义到Flash中以释放一定的RAM空间,保障程序的流畅运行。在进行51或AVR单片机程序开发时如果需要定义较大的数组或字符串时,一般定义将会把这些占用内存较大的变量放置到RAM中,因此RAM吃紧,严重的话将导致程序崩溃,面对这种情况我们可以将这些占用内存较大的变量定义到Flash中以释放一定的RAM空间,保障程序的流畅运行。方法/步骤1——51单片机KEIL编译环境一、很多单片机爱好者都知道“摇摇棒”和“旋转LED
发表于 2020-03-03
使用KEIL、Atmel studio将数组定义在Flash区
s3c2440 ads程序移植到keil中(三) 初步完成
如果我把参数配置发生改变呢然后再一次编译 要包错误如下所示其实我们到这里离 在s3c2440 ads程序移植到keil中(二)中看到这个网友不值提供了方法 而且提供了几个文件的下载地址http://download.csdn.net/detail/googlemi/5176844 我直接下载下来了 把其中的2440init.s文件直接拷贝复制替代我工作中的2440init.s 该错误消失了但是出现了这一个错误 反正修改就能解决然后 提示了一个错误 意思 就nand.c和nand.h 没有加上去 让后加上去了 编译成功没有错误这种方式到此结束
发表于 2020-03-02
s3c2440 ads程序移植到keil中(三) 初步完成
s3c2440 ads程序移植到keil中(二) 初步完成
如果我把参数配置发生改变呢然后再一次编译 要包错误如下所示错误如下这个错误解决不了最后查看了网上网友的方法 又可以修改 但是引入了nand文件最后反正知道了2440init.s文件要修改许多 所以我就不再这里继续整了 浪费时间直接运用网上网友的东西即可网友编写的地址https://blog.csdn.net/hannibaychty/article/details/44873327从买板子到现在,想想也有2个月啦,开始就想跑裸奔的,可是工程都是在ADS下,win7系统根本不能用,于是就想着怎么在MDK跑,可是MDK上s3c2440的启动文件是不完整的,因此不推荐使用,为此蛋疼聊好长一段时间,查了很多资料都不成功,可能是我太笨啦,为此
发表于 2020-03-02
s3c2440 ads程序移植到keil中(二) 初步完成
s3c2440 ads程序移植到keil中(一) 初步完成
1 与其他工程一直一样 直接加入工程进行编译2440init.s(8): error: A1023E: File "option.inc" could not be opened: 等错误 直接把option.inc  Memcfg.inc 2440addr.inc 直接放在2440init.s的目录中然后编译 当前记过错误消失出现 .led.axf: Error: L6238E: 2440init.o(Init) contains invalid call from '~PRES8 (The user did not require code to preserve 8-b
发表于 2020-03-02
s3c2440 ads程序移植到keil中(一) 初步完成
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved