程序与预想结果不一样

[复制链接]
 楼主| 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’ 可不一样
 楼主| xinrenlaile 发表于 2021-11-3 14:48 | 显示全部楼层
一开始学习,不知道给端口赋值用16进制,我用的数组,也不知道给端口赋的值就是‘1’,谢谢大家。
strang 发表于 2021-11-4 08:27 | 显示全部楼层
ascii '1' 的十六进制是0x31,转换为二进制0011 0001,从而是0,4,5亮
 楼主| xinrenlaile 发表于 2021-11-8 08:48 | 显示全部楼层
strang 发表于 2021-11-4 08:27
ascii '1' 的十六进制是0x31,转换为二进制0011 0001,从而是0,4,5亮

谢谢您了,明白了
qin552011373 发表于 2021-11-12 14:33 | 显示全部楼层
建议好好看看C语言
zhxzhxzzhhxx 发表于 2021-11-19 16:40 | 显示全部楼层
没有 LED[8]
hello、C 发表于 2021-11-19 21:57 | 显示全部楼层
兄弟   还是你牛皮   哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部