微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > C 语言跑马灯问题求高手解答

C 语言跑马灯问题求高手解答

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint xms);
void main()
{
        while(1)
        {
                uchar a,num;
                a=0xfe;
                P1=a;
                delay(500);
                for(num=0;num<7;num++)
                {
                        a=a<<1;
                        a=a|0x01;
                        P1=a;//     这两句为什么不能写成P1=a|0x01;求解
                        delay(500);
                }  
                a=0x7f;
                P1=a;
                delay(500);
                for(num=0;num<7;num++)
                        {
                                a=a>>1;
                                a=a|0x80;
                                P1=a;
                                delay(500);       
                        }
        }
}
void delay(uint xms)
{
        uint j,k;
        for(j=xms;j>0;j--)
                for(k=110;k>0;k--);
}

P1=a|0x01
这里a值没有改变!

既然把a赋给p1,就去掉a就好

如果换的话,a值那个左移并不是循环左移

谢谢 应该是这样的,换了就没循环

我试过了,完全没有问题。怎么回事?

        a=a|0x01;
                        P1=a;//     这两句为什么不能写成P1=a|0x01;求解

    //    a=a|0x01;
                 //       P1=a;//     这两句为什么不能写成P1=a|0x01;求解
P1=a|0x01;
问题就有了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top