求at89c51例程:三个按键控制三个灯亮,用外部中断C程序

如题所述

......................抱歉,之前没看到用中断,现在在程序上稍作修改

P3口为控制口(中断int0——p3.2),P1口为输出口,p2口提供高电平,LED为共阳极,程序如下:

#include <reg51.h>

#define   uchar   unsigned char

#define   uint    unsigned int

sbit     k1=P2^0;

sbit     k2=P2^1;

sbit     k3=P2^2;

sbit     LED_1=P1^0;

sbit  LED_2=P1^1;

sbit     LED_3=P1^2;

void relay(uint ms)

{

   uint i,j;

   for(i=ms;i>0;i--)

        for(j=110;j>0;j--);

}

void main()

{

    while(1)

   {

     EA=1;

 ET0=1;

  while(P3^2==0)

  {

   if(k1==0)

{

LED_1=0;     

relay(100);

 }

      

if(k2==0)

{

LED_2=0;

   relay(100);

 }

      if(k3==0)

   {

LED_3=0;

relay(100);

 }

  }   

           

      

    }

程序完毕!

下面是电路图:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-19
提问要求使用中断,但是采纳答案,并没有用中断。

按照采纳答案的电路,正确程序如下:

#include <reg51.h>

sbit P32 = P3^2;

void main()
{
EX0 = 1; //开外部中断
EA = 1;
while(1); //等待中断来临
}

X0_INT () interrupt 0
{
P1 = P2; //LED 发光
while(!P32);//等待按键释放
P1 = P2;
}
第2个回答  2011-07-10
给个思路:定义三个引脚做为控制开关 然后写引脚状态扫描程序 根据引脚状态热 设置外部中断引脚 的状态 是P3.x 然后置P0口的引脚的高低电平控制LED灯
第3个回答  2011-07-22
应该是在中断程序中,点亮相应的LED吧!!
在中断中查询是哪一个按键被触发!!!!!
我也是刚学!!不知道能否不加门电路!!!?

求at89c51例程:三个按键控制三个灯亮,用外部中断C程序
P3口为控制口(中断int0——p3.2),P1口为输出口,p2口提供高电平,LED为共阳极,程序如下:include <reg51.h> define uchar unsigned char define uint unsigned int sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit LED_1=P1^0;sbit LED_2=P1^1;sbit LED...

求用单片机设计一个秒表AT89C51
;使用T0定时方式1,每隔50ms中断一次,用于修改时间及显示 ;使用外部中断0、1,用于控制启动和清零 ;=== ORG 0000H AJMP MAIN ORG 0003H AJMP X0_INT ORG 000BH AJMP T0_INT ORG 0013H AJMP X1_INT MAIN:MOV TMOD,#01H ;T0定时方式1 MOV TH0, #(65536-50000) \/ 256 ...

MSC-51单片机交通灯论文
对其编写相关程序来控制交通信号灯和数码管的时间显示,并采用外部中断来控制紧急情况。此设计的硬件电路不是很复杂,关键在于软件的设计,即程序的编写。本设计采用的程序编写语言为现在流行的C语言,简单又便于阅读。编写程序的原则是:1.满足设计的要求。2.尽量采用最好,最有效的算法。3.编写时应尽量...

用C语言怎么在单片机AT89C51上编写一个用一个开关控制一个灯亮和灭...
电路有问题啊,电源怎么能直接接到GPIO,这样大电流会损坏IC。P1口好像没有外部中断,那只有轮询了。这个就是按键检测嘛,网上一堆代码,so easy!

求一个单片机外部中断程序,要求用按键模拟单片机外部中断输入源,当按键...
1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。2、首先要导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断...

AT89C51的外部中断检测电路怎么画的,就是只要中断开关合上,LED灯就 ...
应该可以是先的,下面不断读中断,合上开关,进中断然后直到开关断开,脱离中断。。。好久没玩51了。。忘记得差不多了。。哈哈

AT89S51各脚功能,急!!!
·5个中断源 ·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路 2.管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I\/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据\/地址的第八位。在...

高分 求 单片机直流电压表原理流程图
START:A\/D转换启动信号输入端;ALE:地址锁存允许信号,高电平有效;EOC:输出允许控制信号,高电平有效;OE: 输出允许控制信号,高电平有效;CLK:时钟信号输入端;A、B、C:转换通道地址;3).MC14433是一种双积分A\/D芯片,分辨率相当于二进制的11位,转换速率3~10次\/秒,转换误差是±1LSB,输入...

以AT89C51单片机为核心,制作一个LCD显示的智能电子钟
1<<bit))\/\/读#define enableInterrupts() {_asm("rim\\n");} \/* enable interrupts 使能中断*\/#define disableInterrupts() {_asm("sim\\n");} \/* disable interrupts 不能中断*\/u8 year,month,day,hour,minute,seconds;\/\/定义全局变量void IO_Init(void)\/\/定义IO口{sbi(PG_DDR,3)...

用单片机做电子琴,复音(合音)怎么实现?
单片机的P1.2口线连接着音色增加按键,P1.3则连接音色减小按键,P1.4连接音色快进键。低电平时按键有效,这三个按键通过与门连接外部中断INT0,以便实时响应音色设置。该外部中断0的中断服务子程序流程图见图4,(图中省去了按键延时去抖动部分):图4:音色改变子程序流程图 在该子程序中,变量...

相似回答