微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助51C语言问题各位帮我看看怎么弄

求助51C语言问题各位帮我看看怎么弄

时间:10-02 整理:3721RD 点击:
用C语言,执行如下功能:
   当P3口P3.1和 P3.2都为1时P1.1为0
当P3.1为1时P1.2为0
就是说把P3.1和P3.2接上按键,当都不按下时,P1口都为1,当按下P3.1和P3。2时,P1.1输出0.
当只按下P3.1时P1.2输出0
我用IFP3=0X02;P1^0=0
ELSE   if  P3=...,..
结果失败了请问该怎么弄
请各位帮帮忙就是怎么能读取P3口的值呢,读单个就直接用P3^1,那读全部的看是不是P3=0c40,怎么弄呢

0x02=2进制00000010

嗯,但是怎么样才能判断输入口P3输入的是不是0x02,然后执行不同动作呢?

哎,论坛太让人心寒了,好几次问题都在百度里不到一天解决在这里没人理

这是个最简单的键盘检测程序,不回复你是因为你只要看一下相关教程就能搞清楚了。
再一个就是你把你写的程序贴出来,大家比较容易帮到你。

我看过键盘扫描程序了但是我用P3=0x....不行只能用P1.1&&等等,我就没弄懂这是为什么
如下,能不能把 if(k1==0&&k2==0)写成if(P3=0X....)?
#include<reg52.h>  //52单片机头文件
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
//按键
sbit k1=P3^1;
sbit k2=P3^2;
sbit d1=P1^1;
sbit d2=P1^2;
//延时函数, z=1时,大概延时1ms.
void delay(uint z)  
{                        
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);   
}
void keyscan()
{
    if(k1==0&&k2==0)
    {
        delay(5);    //按键一般要做延时消抖
        if(k1==0&&k2==0)
        {
            d1=0;
        }
    }
    esle if(k1==0&&k2!=0)
    {
        delay(5);
        if(k1==0&&k2!=0)
        {
            d2=0;
        }
    }
    esle if(k1==1&&k2==1)
    {
        delay(5);
        if(k1==1&&k2==1)
        {
            P1=0XFF;
        }
    }
}
void main()
{
    while(1)
    {
        keyscan();   
    }        
}

只要功夫深铁杵磨成针,我自己弄出来了呵呵

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top