微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 60累加器不会计数,程序问题

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

时间:10-02 整理:3721RD 点击:
#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,不会计数  求解  
谢谢

你的两个位选分别是哪两个呀?

给小编顶顶 早日解决问题

我直接用for(i=0;i<3;i++)WM=1<<1;这不是打开位选嘛

为什么是i<3呢,有三个位选吗?

而且那个i是0到20之间的任何数,如果WM=1<<15那又是什么意思呢

我看它不会亮 就改成3了

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

网站地图

Top