- UID
- 934487
- 阅读权限
- 40
- 推广
-
- 幽默
-
- 注册时间
- 2016-7-16
- 最后登录
- 1970-1-1
|
注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
我的爱徒跟我学51单片机,我给他讲了一些基本知识,教会他编写了几个简单的程序后(总共教了他不到10小时),出了下面这道练习题让他做:
在P1口的8个脚与地之间分别接8个按钮开关作8路输入,在5V 与P2口的8个脚之间分别串接1k限流电阻和发光二极管作8路输出,要求每按下一个输入按钮,对应的灯亮,松手灯灭。
他看题后想了大约2分钟,神秘地冲我一边笑一边说:“如果没有对语句数量进行限制的话,我有3套方案,并且都能达到要求。”我听后觉得可笑,心想:连师傅我心里都没有3套方案呢,你小子就吹吧!他见我满脸疑惑,就半认真半开玩笑地说:“我们打赌------输的要请吃‘麦当劳’!”我随便答了他一句:“好呀。”于是他一口气在键盘上敲出了如下3套方案:
//方案一//
//要求:按下对应输入按钮,相应的输出灯亮,松手灯就灭。//
#include<reg52.h> //代入头文件//
sbit X0=P1^0; // 定义8个输入端口
sbit X1=P1^1;
sbit X2=P1^2;
sbit X3=P1^3;
sbit X4=P1^4;
sbit X5=P1^5;
sbit X6=P1^6;
sbit X7=P1^7;
sbit Y0=P2^0; //定义8个输出端口
sbit Y1=P2^1;
sbit Y2=P2^2;
sbit Y3=P2^3;
sbit Y4=P2^4;
sbit Y5=P2^5;
sbit Y6=P2^6;
sbit Y7=P2^7;
void main( )//主程序
{
while(1)//大循环
{
if(X0==0){Y0=0; } //X0按下Y0灯亮
if(X0==1){Y0=1; } //X0松手Y0灯灭
if(X1==0){Y1=0; } //X1按下Y1灯亮
if(X1==1){Y1=1; } //X1松手Y1灯灭
if(X2==0){Y2=0; } //X2按下Y2灯亮
if(X2==1){Y2=1; } //X2松手Y2灯灭
if(X3==0){Y3=0; } //X3按下Y3灯亮
if(X3==1){Y3=1; } //X3松手Y3灯灭
if(X4==0){Y4=0; } //X4按下Y4灯亮
if(X4==1){Y4=1; } //X4松手Y4灯灭
if(X5==0){Y5=0; } //X5按下Y5灯亮
if(X5==1){Y5=1; } //X5松手Y5灯灭
if(X6==0){Y6=0; } //X6按下Y6灯亮
if(X6==1){Y6=1; } //X6松手Y6灯灭
if(X7==0){Y7=0; } //X7按下Y7灯亮
if(X7==1){Y7=1; } //X7松手Y7灯灭
}
}
//方案二//
//要求:按下对应输入按钮,相应的输出灯亮,松手灯就灭。//
#include<reg52.h> //代入头文件//
sbit X0=P1^0; // 定义8个输入端口
sbit X1=P1^1;
sbit X2=P1^2;
sbit X3=P1^3;
sbit X4=P1^4;
sbit X5=P1^5;
sbit X6=P1^6;
sbit X7=P1^7;
sbit Y0=P2^0; //定义8个输出端口
sbit Y1=P2^1;
sbit Y2=P2^2;
sbit Y3=P2^3;
sbit Y4=P2^4;
sbit Y5=P2^5;
sbit Y6=P2^6;
sbit Y7=P2^7;
void main( )//主程序
{
while(1)//大循环
{
Y0=X0; //X0按下Y0灯亮,X0松手Y0灯灭
Y1=X1; //X1按下Y1灯亮,X1松手Y1灯灭
Y2=X2; //X2按下Y2灯亮,X2松手Y2灯灭
Y3=X3; //X3按下Y3灯亮,X3松手Y3灯灭
Y4=X4; //X4按下Y4灯亮,X4松手Y4灯灭
Y5=X5; //X5按下Y5灯亮,X5松手Y5灯灭
Y6=X6; //X6按下Y6灯亮,X6松手Y6灯灭
Y7=X7; //X7按下Y7灯亮,X7松手Y7灯灭
}
}
//方案三//
//要求:按下对应输入按钮,相应的输出灯亮,松手灯就灭。//
#include<reg52.h> //代入头文件//
void main( )//主程序
{
while(1)//大循环
{
P2=P1; //一句搞定
}
}
亲爱的同道们,你知道我们师徒俩到底谁要请谁吃“麦当劳”吗? |
|