打印

程序与预想结果不一样

[复制链接]
3456|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinrenlaile|  楼主 | 2021-11-3 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>                               //<reg52.h>包含52单片机寄存器
char i,j;   
unsigned int z;                                       //定义变量要在文件的最前面,这与C++不一样。
char led[8]={'1','1','1','1','1','1','1','1'};      //定义数组并赋值

void main()
  {
  P2=led[8];                                    //端口初始化

  for(i=0;i<8;i++)
    {

   for(j=0; j<17;j++)
   {      
   for(z=0;z<62501;z++)
             
  led[i]=~led[i];
  P2=led[i];
    }
        }

   }                             //  运行结果是:4灯全亮,4秒后,第0,4,5亮;第1,2,3,灭,4秒                                  //后反转。我想要的是每个灯逐个变换。

使用特权

评论回复

相关帖子

沙发
qiangtech| | 2021-11-3 11:23 | 只看该作者
'1'就是0X31,你把它赋值给P2,可不就是0,4,5亮吗。你的程序运行得很正常。

使用特权

评论回复
板凳
xinrenlaile|  楼主 | 2021-11-3 12:49 | 只看该作者
谢谢您了

使用特权

评论回复
地板
海洋无限| | 2021-11-3 13:06 | 只看该作者
0x01 和‘1’ 可不一样

使用特权

评论回复
5
xinrenlaile|  楼主 | 2021-11-3 14:48 | 只看该作者
一开始学习,不知道给端口赋值用16进制,我用的数组,也不知道给端口赋的值就是‘1’,谢谢大家。

使用特权

评论回复
6
strang| | 2021-11-4 08:27 | 只看该作者
ascii '1' 的十六进制是0x31,转换为二进制0011 0001,从而是0,4,5亮

使用特权

评论回复
7
xinrenlaile|  楼主 | 2021-11-8 08:48 | 只看该作者
strang 发表于 2021-11-4 08:27
ascii '1' 的十六进制是0x31,转换为二进制0011 0001,从而是0,4,5亮

谢谢您了,明白了

使用特权

评论回复
8
qin552011373| | 2021-11-12 14:33 | 只看该作者
建议好好看看C语言

使用特权

评论回复
9
zhxzhxzzhhxx| | 2021-11-19 16:40 | 只看该作者
没有 LED[8]

使用特权

评论回复
10
hello、C| | 2021-11-19 21:57 | 只看该作者
兄弟   还是你牛皮   哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝