【求单片机C语言程序】STC89C52通过两个外部中断P3.2和P3.3,来控制P1.0和P1.1的数码管亮和灭,一定keil C

2024-12-26 23:51:39
推荐回答(4个)
回答1:

/*模块低电平有效、外部中断0、1为低电平出发*/
#include "reg52.h"
void delay( char i)
{
unsigned char t;
while(i--)
{
for(t=0;t<108;t++);
}
}
void INT0_ROUTING() interrupt 0//外部中断0子程序
{
P0=0xfe;//LED0点亮
while((P3|0xfb)==0xff);//等待外部中断0口(P3^2松开)
delay(10);//延时去抖动
P0=0xff;//LED0熄灭
}
void INT0_ROUTING() interrupt 2
{
P0=0xfd;//LED1点亮
while((P3|0xf7)==0xff);//等待外部中断1口(P3^3松开)
delay(10);//延时去抖动
P0=0xff;//LED1熄灭
}

void main()
{
EA=1;//中断总开关
EX0=1;//外部中断0开
EX1=1;//外部中断1开
/*默认低电平触发*/
while(1);//死循环 防止跑飞
}

回答2:

#include

tpyedef unsigned int uint;
typedef unsigned char uchar;

#define mLedStatusOn 0
#define mLedStatusOff 1

sbit ledFirstCom = P1^0;
sbit ledSecondCom = P1^1;

void InitSys(void) {
ledFirstCom = mLedStatusOff;
ledSecondCom = mLedStatusOff;

IT0 = 0; //低电平有效,模拟按键效果
IT1 = 0;
EA = 1;
EX0 = 1;
EX1 = 1;
}

void IsrEx0(void) interrupt 0 using 1{
ledFirstCom ~= ledFirstCom;
IE0 = 0; // 防止按键误抖动重新挂起中断
}

void IsrEx1(void) interrupt 2 using 2{
ledSecondCom ~= ledSecondCom;
IE1 = 0; // 防止按键误抖动重新挂起中断
}

void main(void) {
InitSys(); //初始化系统,配置外部中断寄存器,初始化LED为灭
while(1);
}

回答3:

#include
sbit D1=P1^0;
sbit D2=P1^1;
void main()
{
D1=1;
D2=1;
EA=1;
EX0=1;
EX1=1;
while(1); //死循环一定要加上.....
}
void exter() interrupt 0
{
D1=!D1;
}

void exter() interrupt 1
{
D2=!D2;
}

回答4:

参考看看:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/644b57c3e858a3160ff47751.html
再慢慢找找,C语言的,也能找到。