数码管显示,亮的数码管却逐次增加,求探讨。

2019-07-15 13:04发布

  1. /*******  digital tube*********/
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #define uchar unsigned char

  5. sbit LE1 = P2^6;  //定义段选
  6. sbit LE2 = P2^7;  //定义位选

  7. uchar num[]={0x6d,0x5b,0x3f,0x06,0x4f,0x06,0x66};

  8. void delay()
  9. {
  10.         int j,k;
  11.         for(j=0;j<3;j++)
  12.         for(k=0;k<30000;k++);
  13. }

  14. int main()
  15. {
  16.         while(1)
  17.         {
  18.                 uchar i;
  19.                
  20.                 for(i=0;i<7;i++)
  21.                 {
  22. /******关门************/
  23.                         LE1=0;
  24.                         LE2=0;
  25. /********段选*******************/
  26.                         P0= num[i];
  27.                         
  28.                         LE1=1;
  29.                         LE1=0;
  30.         /*******位选*******/               
  31.                         P0=0xfe;
  32.       P0=_irol_ (P0,  7);     //如何只让 0 左移呢????
  33.                         
  34.                         LE2=1;
  35.                         LE2=0;
  36.                         
  37.                         delay();
  38.                 }
  39.         }
  40. }
复制代码如上述代码,如何只让 0 左移 i  个位,其他的位置仍为 1????



我用这个 炮出来显示的数没有错,但是 亮 的数码管 却逐次增加了。。。
求 探讨

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
微星G
1楼-- · 2019-07-15 14:37
 精彩回答 2  元偷偷看……
微星G
2楼-- · 2019-07-15 18:11
算了。。。。没人回答我,我还是用数组吧
微星G
3楼-- · 2019-07-15 19:18
本帖最后由 微星G 于 2016-9-22 20:28 编辑

解决啦,哈哈哈哈哈哈哈,是因为int 和  char 的类型不同占用的地址位不一样的原因
whl_458
4楼-- · 2019-07-15 19:31
!!

一周热门 更多>