OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4481|回复: 21

请大家帮我看看这部分代码,居然出不去循环

[复制链接]

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
发表于 2015-8-9 20:15:18 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]int main(void) { signed char n1,n2; u8 m=0; //u8 len=128; OLED_Init(); for(n1=0;n1<125;n1=n1+4) // ↑到这里 { OLED_Dis_4x4(m,n1); ↑ delay_ms(10); ↑ if(n1>=124) ↑ { for(n2=127;n2>=0;n2--) ↑ { OLED_Location(m,n2); ↑ OLED_Write_Data(0x00);             ↑  [/mw_shl_code] [mw_shl_code=c,true] delay_ms(10); //通过调试,程序从这里又会跳到↑ } } } } [/mw_shl_code]
我觉得应该直接跳出最大的那个for循环了呀。 因为执行第2个for循环的条件就是n1>=124嘛,再 n1=n1+4的话肯定不满足第一个for循环的条件了嘛。
请各位指点迷津

最佳答案

查看完整内容[请看2#楼]

呵呵,你猜 当n1=124+4会变成什么呢 ?128 or -127
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:15:19 | 显示全部楼层
呵呵,你猜 当n1=124+4会变成什么呢 ?128 or -127
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:24:09 | 显示全部楼层
PS:调试过程中发现n1都等于0x80 都还能进入第一个for循环 天啊 为什么  -0-
回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:27:33 | 显示全部楼层
我认为跳不出去,因为n1只作为传递参数使用,并未改变。循环一次之后执行了n1+4,所以跳不出。你去debug看下n1的循环结果。
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-8-9 20:30:53 | 显示全部楼层
呵呵。。。。帮顶
学无止境
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:40:12 | 显示全部楼层
再简化一下,就是这样
[mw_shl_code=c,true]#include "stm32f10x.h" #include"OLED.h" int main(void) { signed char n1,n2; u8 m=0; //u8 len=128; OLED_Init(); for(n1=0;n1<125;n1=n1+4) { OLED_Dis_4x4(m,n1); delay_ms(10); } } [/mw_shl_code]
这个for循环根本出不来,调试结果可以看到n1已经大于125了还是在for循环中。

回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:41:15 | 显示全部楼层
回复【2楼】无知的萝卜:
---------------------------------
看下debug 截图图片
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:41:25 | 显示全部楼层
回复【3楼】雪山飞狐:
---------------------------------
调试结果就是n1大于125了还是在for循环的  从我楼上发的图可以看到
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:43:16 | 显示全部楼层

回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:45:09 | 显示全部楼层
n1,n2 你用u8定义试一下,有可能是无符号引起的
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:46:15 | 显示全部楼层
回复【3楼】雪山飞狐:
---------------------------------
OLED_Dis_4x4(m,n1); 这个函数确实只是需要n1的值不会改变n1  
但是还是说不通的嘛,每次都让n1加了4的
回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:47:56 | 显示全部楼层
回复【10楼】无知的萝卜:
---------------------------------
再试试,n1,n2 你用u8定义试一下,有可能是无符号引起的
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:50:22 | 显示全部楼层
回复【9楼】雪山飞狐:
---------------------------------
居然跳出来了!! 请问这是为什么呢
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:51:11 | 显示全部楼层

回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:51:14 | 显示全部楼层
换了u8吗?
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:52:37 | 显示全部楼层
回复【14楼】雪山飞狐:
---------------------------------
是的 就是换成u8就跳出来了
回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 20:52:51 | 显示全部楼层
signed char 的取值范围记得是-128 至127吧
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 20:56:43 | 显示全部楼层
回复【16楼】雪山飞狐:
---------------------------------
但这也不应该影响对于循环条件的判断吧
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 21:00:46 | 显示全部楼层
回复【18楼】雪山飞狐:
---------------------------------
原来是这样呀,soga  谢谢你了,太有帮助了
回复

使用道具 举报

2

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-7-30
在线时间
1 小时
发表于 2015-8-9 21:02:10 | 显示全部楼层
回复【19楼】无知的萝卜:
---------------------------------
 呵呵,不客气一起学习。
方法比问题多,思路决定出路,人生无极限贵在坚持。
回复

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
 楼主| 发表于 2015-8-9 21:02:38 | 显示全部楼层
回复【20楼】雪山飞狐:
---------------------------------
嗯嗯 ~(~ ̄▽ ̄)~
回复

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-30
在线时间
0 小时
发表于 2015-8-9 21:48:54 | 显示全部楼层
最好不要用这种啊,用 ++别——
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 19:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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