一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: sjz_xj
收起左侧

[51单片机] [求助]单片机码表,程序有问题

[复制链接]
发表于 2014-9-11 21:49 | 显示全部楼层
不知楼主如何测速,什么硬件?
 楼主| 发表于 2014-9-11 21:53 | 显示全部楼层
xiaomage 发表于 2014-9-11 21:49
不知楼主如何测速,什么硬件?

UGN3020取样,经AT89C2051输出到数码管。
发表于 2014-9-11 21:58 | 显示全部楼层
应该是for(P3_0==0;)这句有问题,改为for(P3_0==0;;)似乎可以编译通过。
 楼主| 发表于 2014-9-11 22:11 | 显示全部楼层
kingrobot 发表于 2014-9-11 21:58
应该是for(P3_0==0;)这句有问题,改为for(P3_0==0;;)似乎可以编译通过。

谢谢,我在试试!!!
发表于 2014-9-11 22:16 | 显示全部楼层
sjz_xj 发表于 2014-9-11 21:29
要是知道哪里错了,就不来这里求助了,编程上本人是菜鸟一个……

不是,那个编译软件不是会有一个提示吗??

它会告诉你第几行第几行由于什么什么问题而不能编译通过。

你是用keil c51的吗??
 楼主| 发表于 2014-9-11 22:33 | 显示全部楼层
huchuan987 发表于 2014-9-11 22:16
不是,那个编译软件不是会有一个提示吗??

它会告诉你第几行第几行由于什么什么问题而不能编译通过。 ...


for(3_0==0;)
改成
for(P3_0==0;)

再次DEBUG

Running with Code Size Limit: 2K
Load "D:\\DOWNLOAD\\里程表电路\\lcb\\lcb"
_____^
*** error 56: can't open file


发表于 2014-9-11 22:50 | 显示全部楼层
本帖最后由 huchuan987 于 2014-9-11 22:52 编辑

error 56: can't open file*
这条就是错误信息,某个文件打不开,有可能你的路径改变了,

还有你存放文件的路径文件夹层次尽量少,尽量不要用中文的文件夹名。

Running with Code Size Limit: 2K  这句话说 你的软件为2K代码限制版本,即说明你的破解不完全。
Load "D:\\DOWNLOAD\\里程表电路\\lcb\\lcb"   这句加载文件的路径怎么是双反斜杠,你检查检查一下你的文件路径。
如果可以,把源代码文件发一份上来帮你编译看看。

论坛的代码无法复制,一复制就出现乱码。
 楼主| 发表于 2014-9-11 23:04 | 显示全部楼层
huchuan987 发表于 2014-9-11 22:50
error 56: can't open file*
这条就是错误信息,某个文件打不开,有可能你的路径改变了,

谢谢您对一个菜鸟的帮助!!!

LCB.rar (1.46 KB, 下载次数: 803)

 楼主| 发表于 2014-9-11 23:51 | 显示全部楼层
huchuan987 发表于 2014-9-11 22:50
error 56: can't open file*
这条就是错误信息,某个文件打不开,有可能你的路径改变了,

问题好像还是出在这里

360截图20140911234809195.jpg

发表于 2014-9-12 00:04 | 显示全部楼层
本帖最后由 huchuan987 于 2014-9-12 00:07 编辑

for(P3_0==0;)
这个FOR语句这里用的有点怪!

FOR语句的格式为:for(表达式1;表达式2;表达式3)执行语句
如:for(i=0;i<=100;i++){一大堆执行语句或只有一个;号的空指令}
FOR的执行过程为:
(1)先求解表达式1 。一般为设置变量的初值,如i=0;
(2)求解表达式2,若其值为真(值为非0),则执行{一大堆执行语句或只有一个;号的空指令}这堆东西,然后执行下面第(3)步。
若为假(值为0),则结束循环,转到第(5)步
(3)求解表达式3,
(4)转回上面的第(2)步骤继续执行。
(5)循环结束,执行FOR语句下面的一个语句。

这个FOR中的三个表达式均可以被省略。但两个分号不能省。
如可以写成:
(1)for(;i<=100;i++)//没初值设置,使用时要注意,如果初值发生不确定,程序就会飞了。
(2)for(i=0;;i++)//这个是没有条件判断,使用时要注意在执行语句里加入退出循环的条件判断,否则程序就会死循环。
(3) for(;i<=100;)//这个是没有初值和变量自增减变化。
(4)for(;;)//这个是省略全部的表达式,相当于while(1),就是无限循环。

所以你的原程序for(P3_0==0;),少了一个分号,我不知道应该把它放哪好了。
我现在给你两程序形式,你自己慢慢试。
(1)for(P3_0==0;;)这个我有点拿不准,只是因为它也能够通过编译罢了
因为P3_0==0是一个条件测试指令,它不是个赋值指令,把它放在表达式1有点感觉怪怪的。
mabiao_a.rar (1.15 KB, 下载次数: 668)


(2)for(;P3_0==0;)这个的意思是当P3.0为0时,就执行FOR语句内的;空指令。个人感觉有点靠谱。感觉原作者应该是用来检测按键是否被释放。
mabiao_b.rar (1.15 KB, 下载次数: 706)

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-21 05:19 , Processed in 0.051548 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表