万能的吧友们,鄙人电子专业学生,课上同学编写了图中代码,c语
c语言吧
全部回复
仅看楼主
level 5
☞清真LC 楼主
万能的吧友们,鄙人电子专业学生,课上同学编写了图中代码,c语言编写的51单片机程序。但是在芯片等硬件设备(包括接触不良和max232损坏与否在内)良好的情况下,依然未出现实验结果,索性决定寻求大佬们的帮助。
另有c语言群友表示主函数不该写成void main()的形式,但正确出现实验结果的程序(图二)也是这么写的。
楼主也很不解,为什么主函数不会执行,理由是在更改了主函数第一条的赋值之后,出现了错误的期望结果(较修改之前有变化)。
真心求教,可能是那个地方有个很简单的问题,但真的找不出来了。
2019年11月05日 12点11分 1
level 5
☞清真LC 楼主
我顶
2019年11月05日 13点11分 2
level 5
你这是流水灯?
2019年11月05日 14点11分 3
嗯,目标是用拨动开关控制一个灯的左右移位
2019年11月06日 01点11分
level 4
你觉得俩个for里面的b不冲突?换一个字母
2019年11月05日 15点11分 4
level 4
第二个for里面b执行完了b就等于100了,肯定大于a了
2019年11月05日 15点11分 5
这个for是延迟函数里面的,就算这个delay函数是错的,主函数也会执行,至少是一瞬间的,所以我认为问题不在这
2019年11月06日 01点11分
level 8
void main 是绝对没问题的,他们PC上面必须这样,有点类似c++,但是单片机是一定能用void,你要是想检验是否是主函数的原因,写个测试函数,检测一下,比如while(1)p1=0x00,然后检测输出,你用的这是什么编译器?keil?
2019年11月06日 02点11分 6
对,keil4
2019年11月06日 05点11分
有人告诉我必须要有while(1)
2019年11月06日 05点11分
现在对了吗?发现问题的原因了吗?
2019年11月06日 07点11分
level 9
你led只是个int数,你操作他有什么用?前面define过了直接led=0x01。
2019年11月06日 07点11分 7
define不是只把led和i/o口绑定起来吗
2019年11月06日 11点11分
@☞清真LC 那你下面就不要加int,还有你延时变量不对,死循环也没有,问题还挺多。
2019年11月06日 11点11分
回复 ⚡射命丸文⚡ :大佬们稍等,我先修改尝试一番,自己的单片机接口和实验室的有些不一样,我还不是很熟悉,得查一下引脚接口
2019年11月06日 11点11分
level 7
在main里加上while(1),另外延时函数时间是不是太短,导致看不到效果
2019年11月06日 07点11分 8
延迟函数的时间不怎么影响效果,之前测试过
2019年11月06日 11点11分
@☞清真LC 你把while(1)加了没
2019年11月06日 11点11分
回复 人古老成 :还没,刚刚看到回复,我把建议发给我朋友了
2019年11月06日 11点11分
@☞清真LC 不加死循环,程序只运行一次,只能刚复位看到
2019年11月06日 11点11分
level 5
☞清真LC 楼主
大佬们,改成这样可以正常执行。但是不能在头文件处用#define led P2 的方法绑定io口
2019年11月06日 12点11分 9
1