一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3085|回复: 23

[其他综合] 程序求解

[复制链接]
发表于 2013-5-1 23:29 | 显示全部楼层 |阅读模式
本人在单片机及程序面前等于土著,一直都想学单片机,今天静下心来在网上搜了C语言的教程,有些不解。有劳DX指点迷津。
在教程里看到一个例程,如下:


1.    void main(void) //主函数名
2.     {
3.    unsigned int a; //定义变量a为unsigned int类型
4.    unsigned char b; //定义变量b为unsigned char类型
5.
6.    do { //do while组成循环
7.
8.    for (a=0; a<65535; a++);
9.
10.   P1_0 = 0; //65535次设P1.0口为低电平,点亮LED
11.
12.   P1_0 = 1; //设P1.0口为高电平,熄灭LED
13.
14.   for (a=0; a<30000; a++); //空循环
15.
16.   for (b=0; b<255; b++) ;
17.
18.   P1_1 = 0; //255次设P1.1口为低电平,点亮LED
19.
20.   P1_1 = 1; //设P1.1口为高电平,熄灭LED
21.
22.   for (a=0; a<30000; a++); //空循环
23.
24.  }
25.
26.  while(1);
27.
28.  }


看到注释有点不明白,比如第8行语句我的理解65535次延时,而第10行上的注释我想不明白。注释上说“//65535次设P1.0口为低电平,点亮LED",我想是不是第8行运行65535次后才到第10行运行?就是说应该延时65535次后才点亮P1.0的LED,而不是P1.0口被65535次设为低电平?
发表于 2013-5-1 23:32 | 显示全部楼层
是的,没错~~~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2013-5-1 23:36 | 显示全部楼层
zhuaii3721 发表于 2013-5-1 23:32 static/image/common/back.gif
是的,没错~~~~~~~~~~

是例程没错,还是我的理解没有错?


回复

使用道具 举报

发表于 2013-5-1 23:37 | 显示全部楼层
7r093 发表于 2013-5-1 23:36 static/image/common/back.gif
是例程没错,还是我的理解没有错?

你的理解没错

回复

使用道具 举报

发表于 2013-5-1 23:41 | 显示全部楼层
本帖最后由 文句子 于 2013-5-1 23:42 编辑

你看不见闪烁的效果,因为第8行多了一个分号
紧跟着分号就是空循环
回复

使用道具 举报

 楼主| 发表于 2013-5-1 23:45 | 显示全部楼层
zhuaii3721 发表于 2013-5-1 23:37 static/image/common/back.gif
你的理解没错

多谢解困,原来网上的教程也不是很靠谱,误导我等初学菜鸟。还是买本书看看靠谱点。
有推荐吗?

回复

使用道具 举报

 楼主| 发表于 2013-5-1 23:49 | 显示全部楼层
本帖最后由 7r093 于 2013-5-1 23:51 编辑
文句子 发表于 2013-5-1 23:41 static/image/common/back.gif
你看不见闪烁的效果,因为第8行多了一个分号
紧跟着分号就是空循环

我对比了一下,网上的例程第8行后面是没有分号。复制网上的,粘贴后乱,整理了以为都以分号结束,以为有自己想当然加上了,莫怪。
请教应该如何理解这行呢?有分号跟没有的区别是?

回复

使用道具 举报

发表于 2013-5-1 23:51 | 显示全部楼层
理解没错,但第10行置0,第12行立即置1,眼睛将感觉不到亮,18行、20行也如此,实验板上运行将看不见LED亮。

点评

的确看不到LED亮,当把第8行和16行后面的分号去掉就可以看到闪烁了。不知如何解读有无分号的区别。  发表于 2013-5-2 01:17
回复

使用道具 举报

发表于 2013-5-2 00:05 | 显示全部楼层
7r093 发表于 2013-5-1 23:49 static/image/common/back.gif
我对比了一下,网上的例程第8行后面是没有分号。复制网上的,粘贴后乱,整理了以为都以分号结束,以为有自 ...

这个问题直接回答了就糟蹋你的学习过程了,
一般先到教材上找答案,
我更倾向你自己在仿真里自己单步走一走……,这是能收获最多的方法
回复

使用道具 举报

 楼主| 发表于 2013-5-2 00:29 | 显示全部楼层
更正,一楼的例程第8行和16行没有”;“号。
将上述程序编译后输到目标板显示:
P1.0的LED亮3.5秒(自己看着灯估算)左右熄灭,熄灭不到0.5秒又亮。P1.1的LED在P1.0熄灭后快速闪一下就灭了。
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-11-1 21:51 , Processed in 0.040458 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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