|
发表于 2021-3-22 19:10:38
|
显示全部楼层
哥们 这是修改了一下的 外部中断0有固定的引脚 P3^2 这是我测试过的 你看看
#include <reg52.h>
#include "intrins.h"
sbit K1=P3^2;//定义按键k1
sbit LSA=P2^2; //定义数码管位选
sbit LSB=P2^3;
sbit LSC=P2^4;
bit flag=0;
#define I P0//数码管和led灯
unsigned char a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管数字定义
void delay(unsigned int c)//延时
{
unsigned char a,b;
for(;c>0;c--)
{
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void delay10ms(void) //误差 0us
{
unsigned char a,b;
for(b=215;b>0;b--)
for(a=45;a>0;a--);
_nop_(); //if Keil,require use intrins.h
_nop_(); //if Keil,require use intrins.h
}
void shumaprint()//数码输出
{
unsigned char i=0;
for(i=0;i<8;i++)
{
switch(i)
{
case (0)SA=0,LSB=0,LSC=0;break;
case (1)SA=1,LSB=0,LSC=0;break;
case (2)SA=0,LSB=1,LSC=0;break;
case (3)SA=1,LSB=1,LSC=0;break;
case (4)SA=0,LSB=0,LSC=1;break;
case (5)SA=1,LSB=0,LSC=1;break;
case (6)SA=0,LSB=1,LSC=1;break;
case (7)SA=1,LSB=1,LSC=1;break;
}
I=a;//段选
delay(5);
I=0x00;
}
}
void Int0_Int()//设置外部中断0
{
EA=1;
EX0=1;
IT0=1;
}
void KeyPros()
{
if(flag)
{
shumaprint();
}
}
void main()
{
Int0_Int();
while(1)
{
KeyPros();
}
}
void Int0() interrupt 0 //外部中断0的内容
{
delay10ms();
if(K1==0)
{
flag=~flag;
}
}
|
|