60累加器不会计数,程序问题

2019-07-15 18:46发布

#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
#define WM P2
#define DM P0
uint code dien[]={0x3f,0x06,0x5b,0x4f,0x66,
                 0x6d,0x7d,0x07,0x7f,0x6f};

uint  sz[]={0x01,0x02};
uchar i,n,num;
void main()
{
TMOD = 0x01;
TH0 = (65536-50000)/256;

TL0 = (65536-50000)%256;      
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
    for(n=0;n<3;n++)
    {
        WM=1<<i;
        DM=0xff;
        DM=~dien[sz[n]];
    }

     if(i==20)
      {
       i=0;
      num++;
         if(num==9)
           num=0;
   
     sz[1] = num/10;
           sz[2] = num%10;
   }
   
}  
}
   
void int0 ()interrupt 1
{
   TH0 = (65536-50000)/256;
   TL0 = (65536-50000)%256;
      i++;
}

这是个60累加器,我明明只打开两个位选,下载到板子一看 四个都打开了 而且全都显示0,不会计数  求解  
谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
阿信509
1楼-- · 2019-07-16 00:20
你的两个位选分别是哪两个呀?
wwwbookdgcom
2楼-- · 2019-07-16 03:22
 精彩回答 2  元偷偷看……
鼠王
3楼-- · 2019-07-16 04:51
阿信509 发表于 2014-8-17 09:34
你的两个位选分别是哪两个呀?

我直接用for(i=0;i<3;i++)WM=1<<1;这不是打开位选嘛
阿信509
4楼-- · 2019-07-16 05:59
为什么是i<3呢,有三个位选吗?
阿信509
5楼-- · 2019-07-16 10:59
而且那个i是0到20之间的任何数,如果WM=1<<15那又是什么意思呢
鼠王
6楼-- · 2019-07-16 13:22
阿信509 发表于 2014-8-17 21:19
为什么是i

我看它不会亮 就改成3了

一周热门 更多>