数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1833|回复: 15

[C51] 学习C51编程遇到一个令人困惑的问题

[复制链接]
发表于 2024-12-27 22:56:30 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
本帖最后由 fireflying 于 2024-12-28 00:07 编辑

用的开发板是STC89C52单片机。
P0.0到P0.7上面接了7个LED一字排列。

练习程序如下,程序的功能是让P0.0到P0.7上面接的8枚LED从左到右依次点亮,到了最右边之后再从右向左依次点亮,这么来回循环的流水灯效果:


void main()
{
        unsigned int i = 0;                //定义延时用途自加变量
        unsigned char cnt = 0;        //定义移位计数变量
       
       
        while(1)        //主循环
        {
                for(cnt=0;cnt<8;cnt++)                //移位计数变量归零,判断移位次数是否小于等于8,计数变量自加
                {
                        P0 = ~(0x80 >> cnt);                //先点亮最左侧LED,然后依次右移
                        for(i=0;i<32767;i++);                //延时
                }
                for(cnt=0;cnt<8;cnt++)                //移位计数变量归零,判断移位次数是否小于等于8,计数变量自加
                {
                        P0 = ~(0x01 << cnt);                //先点亮最右侧LED,然后依次左移
                        for(i=0;i<32767;i++);                //延时
                }
        }
}


其中for语句部分是个延时功能,用来调整相邻两个LED依次点亮的间隔时间。
我为了观察程序延时效果,就调整for语句中间那个条件表达式的数值,当我调整到32767的时候,觉得LED灯的流动速度还是太快了,然后我把那数值调整到32768,数值仅仅加了1,结果流动速度断崖式的变得非常慢。
我在Keil里面Debug跟踪for语句的执行时间,发现32767的时候,执行时间是178毫秒,而32768的时候是1.3秒!
变量i的数据类型是unsigned int,查找资料,unsigned int数据类型的最大值是65535,我这个并没有溢出,但是程序运行的表现有点像超过了32767之后溢出了。
然后我又试着把变量i的数据类型改为unsigned long,在那数值仍然是32767的情况下,流水灯的流动速度就明显变慢了,这下把我彻底搞晕了。

实在检查不出问题原因,反复试验也没找到原因。哪位老师能帮我分析一下这个问题的原因?


发表于 2024-12-28 12:30:43 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-28 13:42:52 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-28 16:39:03 | 显示全部楼层
游客请登录后查看回复内容

打赏

参与人数 1家元 +6 收起 理由
fireflying + 6 感谢解答问题!

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-28 17:02:31 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-28 20:08:08 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-28 22:08:14 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-28 22:34:40 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-29 10:26:23 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-29 11:33:29 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-29 19:02:20 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-30 14:11:52 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-12-31 20:42:54 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-1 10:05:09 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2025-1-2 10:13:00 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2025-1-2 11:35:26 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家-技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-6-5 18:02 , Processed in 0.109200 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

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