找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6305|回复: 3
收起左侧

关于准双向io口,在做输入时,怎样用程序写1.求教给位大神

[复制链接]
ID:17109 发表于 2017-10-31 22:22 | 显示全部楼层
angmall 发表于 2017-2-15 13:49
如果你想读入,必须先写1,单片机复位后,端口都被复位成FFH。
(之所以叫准双向,就是在读入前必须写1到 ...

楼主你好:怎样用程序加入准双向io口呢
#include <reg52.h>
//定义一下,方便使用
#define uchar unsigned char
#define uint  unsigned int
//sbit key1=P2^4;                //按键1定义
//sbit key2=P2^5;                //按键2定义
//sbit key3=P2^6;                //按键3定义
//sbit key4=P2^7;                //按键4定义
sbit led1=P3^0;                //led1端口
sbit led2=P3^1;                //led2端口
sbit led3=P3^2;                //led3端口
sbit led4=P3^3;                    //led4端口

void keyscan()                                        //按键扫描程序
{
        static bit sign=0;                //按键有效标志
        static uint count=0;                //消抖计数变量                        
        uchar num=0;                                //临时变量
        if((P2&0xf0)!=0xf0)        //检测按键有效
        {
                count++;                                //消抖计数
                if(count>=500)                        //100~1000,根据主循环周期调整约10~20ms
                {                        
                        count=500;
                        if(sign==0)                //测试按键有效标志0
                        {
                                sign=1;                                //按键有效标志置1
                                num=(P2&0xf0);                //保存P2高4位值xxxx 0000,x为0或1
                                switch(num)
                                {
                                        case 0xe0: led1=~led1; break;
                                        case 0xd0: led2=~led2; break;
                                        case 0xb0: led3=~led3; break;
                                        case 0x70: led4=~led4; break;
                                        default: break;
                                }
                        }
                }
        }
        else                                                //键抬起
        {
                sign=0;                                //按键有效标志清0
                count=0;                                //消抖计数清0
        }
}

void main()
{
        P3=(P3&0xf0);        //初始化P3低4位
        while(1)        //程序循环执行
        {
                keyscan();   //按键扫描,子函数

        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表