xinrenlaile 发表于 2021-11-3 10:52

程序与预想结果不一样

#include <reg52.h>                               //<reg52.h>包含52单片机寄存器
char i,j;   
unsigned int z;                                       //定义变量要在文件的最前面,这与C++不一样。
char led={'1','1','1','1','1','1','1','1'};      //定义数组并赋值

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

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

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

   }                           //运行结果是: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

hello、C 发表于 2021-11-19 21:57

兄弟   还是你牛皮   哈哈
页: [1]
查看完整版本: 程序与预想结果不一样