单片机病房呼叫器问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 23:40:31
#include <regx52.h>
sbit K1=P3^0; //设置P3.0给K1
sbit L1=P1^0; //设置P1.0给L1
void main(void)
{
while(1) //无限循环
{
if(K1==0) //如果开关按下
{
L1=0;//灯亮
}
else //否则
{
L1=1;//灯灭
}
}
}

对此呼叫器进行扩展,由1路呼叫改成8路呼叫,开关按下后1S在熄灭,分别用C语言和汇编 进行编程

自己给你编的,应该是没问题的。

#include <regx52.h>

sbit L1=P1^0; //设置P1.0给L1
sbit L2=P1^1; //设置P1.1给L2
sbit L3=P1^2; //设置P1.2给L3
sbit L4=P1^3; //设置P1.3给L4
sbit L5=P1^4; //设置P1.4给L5
sbit L6=P1^5; //设置P1.5给L6
sbit L7=P1^6; //设置P1.6给L7
sbit L8=P1^7; //设置P1.7给L8

uchar temp;//设置变量

void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}

void main(void)
{
P1=0xff;
STEP1: while(1) //无限循环
{
temp=P1;
if(temp!=0)//如果有键按下就跳出
{
break;
}
}

P0=temp;

goto STEP1;//返回循环

}

C语言:
#include <regx52.h>
void main(void) //P3为8路按键,P1为8路灯
{
while(1) //无限循环
{
P1=P3;
}
}
汇编语言:
ORG 0000H ; //P3为8路按键,P1为8路灯
AJMP STAR