void Int1() interrupt 2 //外部中断1的中断函数
{
delay(1000); //延时消抖
if(k4==0)
P0=0xff;
}
P0 是阴极 这是我对 外部中断1的使用程序 不知道 为什么不能实现数码管的熄灭 ??? 下面是完整的程序 如果 有大佬烦请花一分钟帮我看下 吧 谢谢 !!!!
#include "reg51.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
sbit k3=P3^2;
sbit k4=P3^3;
void Int0Init()
{
IT0=1;
EX0=1;
EA=1;
}
void Int1Init()
{
IT1=1;
EX1=1;
EA=1;
}
u8 ledduanZ[]={0x00,0x42,0x46,0x4a,0x52,0x62,0x42,0x00};
u8 ledweiZ[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 ledduanY[]={0x80,0x40,0x20,0x1f,0x20,0x40,0x80,0x00};
u8 ledweiY[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(u16 i)
{
while(i--);
}
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main()
{
Int0Init();
Int1Init();
}
void Int0() interrupt 0
{
delay(1000);
if(k3==0)
{
u8 i;
while(1)
{
u16 j=100;
P0=0x7f;
while(j--)
{
for(i=0;i<8;i++)
{
P0=ledweiZ[i];
Hc595SendByte(ledduanZ[i]);
delay(100);
Hc595SendByte(0x00);
}
}
j=100;
P0=0x7f;
while(j--)
{
for(i=0;i<8;i++)
{
P0=ledweiY[i];
Hc595SendByte(ledduanY[i]);
delay(100);
Hc595SendByte(0x00);
}
}
}
}
}
void Int1() interrupt 2
{
delay(1000);
if(k4==0)
P0=0xff;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>