找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 829|回复: 11
收起左侧

51单片机问题求大佬解答,程序运行之后led不亮

[复制链接]
ID:1066583 发表于 2023-3-14 20:57 | 显示全部楼层 |阅读模式
主函数是这样:
void main()
{        while(1)
        {
                c=255*200;
                if(c==51000)
                {led=1;}
        }
}
运行之后led不亮,但是我把算式改成c=255*100;if(c==25500)之后就没问题,c定义的是long int ,为什么相乘的数大了就不行,小了就可以,折腾一天了百度遍了都不知道答案,求大佬解答,感谢,用的是51单片机stc15f204ea
回复

使用道具 举报

ID:1066583 发表于 2023-3-14 23:10 | 显示全部楼层
换成了unsigned long c也不行,我人快傻了,难道单片机不支持运算这么大的数字吗?
回复

使用道具 举报

ID:1066583 发表于 2023-3-14 23:14 | 显示全部楼层
换成了unsigned long c不行,但unsigned int c可以,为什么无符号长整形反而不行,不理解,而且unsigned int在这个数行,换一个小一点的数相乘又不行了,55555
回复

使用道具 举报

ID:101869 发表于 2023-3-15 08:55 来自手机 | 显示全部楼层
硬件对不?直接用LED=1能否点亮?
回复

使用道具 举报

ID:161164 发表于 2023-3-15 09:19 | 显示全部楼层
本帖最后由 lkc8210 于 2023-3-15 09:22 编辑
  1. void main()
  2. {        while(1)
  3.         {
  4.                 c=(long int)255*200;
  5.                 if(c==51000)
  6.                 {led=1;}
  7.         }
  8. }
复制代码


回复

使用道具 举报

ID:94031 发表于 2023-3-15 09:39 | 显示全部楼层
只有在c==51000时瞬间亮一下,你能看见吗。
回复

使用道具 举报

ID:844772 发表于 2023-3-15 10:09 | 显示全部楼层
加一句试试
{led=1;
  c=0;}
回复

使用道具 举报

ID:1066583 发表于 2023-3-15 11:18 | 显示全部楼层
非凡科技 发表于 2023-3-15 08:55
硬件对不?直接用LED=1能否点亮?

前面定义了LED直接赋1可以亮
回复

使用道具 举报

ID:1066583 发表于 2023-3-15 11:19 | 显示全部楼层
xuyaqi 发表于 2023-3-15 09:39
只有在c==51000时瞬间亮一下,你能看见吗。

赋1后没再赋0应该一直是1吧
回复

使用道具 举报

ID:94031 发表于 2023-3-15 14:33 | 显示全部楼层
一笔长空 发表于 2023-3-15 11:19
赋1后没再赋0应该一直是1吧

1 c 有特殊含义不能做变量名要改。
2 255不强制转换编译器会作负数处理,改一下:
cc=(long)255*200;
if(cc==51000)
{  led=1;        }
回复

使用道具 举报

ID:1066583 发表于 2023-3-15 17:01 | 显示全部楼层
xuyaqi 发表于 2023-3-15 14:33
1 c 有特殊含义不能做变量名要改。
2 255不强制转换编译器会作负数处理,改一下:
cc=(long)255*200;
...

谢谢您的解答,我试一下
回复

使用道具 举报

ID:94031 发表于 2023-3-15 17:20 | 显示全部楼层
一笔长空 发表于 2023-3-15 17:01
谢谢您的解答,我试一下

还有一种办法,在255后面加 U ,L ,F说明数据类型:
cc=255u*200;
if(cc==51000)
{  led=1; }
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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