程序很简单就是P0口控制数码管从0到F,加了一个中断控制LED灯,这是一个电平触发
我想问的是当我用指拨开关使P3.2置低电平,那么这个程序应该只在中断程序运行数码管应该不会在改变,可实际上数码管却在缓慢从0到F变化,这是问什么???
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={//0到F的列表
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
};
sbit d1=P2^0;// 控制LED
void delay(uint);
uchar num;
void main()
{ EA=1;// 中断总开关
EX0=1;//开启外部中断0
IT0=0;//外部中断0 电平触发
while(1)
{
for(num=0;num<16;num++)
{ P1=table[num];
delay(1000);//一秒的延时
d1=1;
}
}
}
void delay(uint z)//延时程序
{ uint x,y;
for(x=z;x>0;x--)
for(y=123;y>0;y--);
}
void it0() interrupt 0//中断程序
{ d1=0;
}
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
对不起那个电路图和程序不匹配。。。
我也把while(1)给去了试了试可以运行。。
你说的段选位,应该是位选位,就是每个数码管的公共端吧,因位我给的图有错其实位选位我是直接接高电平了
我新给的图,外部中断没接电阻还是不行
理论上我选电平触发后应该只在中断程序运行的,可实际上我用指拨开关拨到低电平时,数码管应该不在变化的可实际上数码管却还在变化只是变得慢了一点,这一点我不是很理解。。。
一周热门 更多>