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,不会计数 求解
谢谢
#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了
