找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1638|回复: 7
收起左侧

为什么这个单片机4*4矩阵键盘不可以?

[复制链接]
ID:949074 发表于 2021-7-6 23:03 | 显示全部楼层 |阅读模式
#include "reg52.h"
sfr p0=0x80;
sfr p6=0xe8;
void delay(unsigned int k)
unsigned char kx(void);
{
        unsigned char a,b,c=16;
        for(a=0;a<4;a++)
                {
                        p0=_crol_(0xfe,a);
                        b=p0;
                        b=b & 0xf0;
                        if(b!=0xf0)
                        {
                                delay(50);
                                b=p0;
                                b=b & 0xf0;
                                if(b!=0xf0)
                                {
                                        b=p0;
                                        switch(b)
                                        {
                                                case 0xee:c=0;break;
                                                case 0xde:c=4;break;
                                                case 0xbe:c=8;break;
                                                case 0x7e:c=12;break;
                                                case 0xed:c=1;break;
                                                case 0xdd:c=5;break;
                                                case 0xbd:c=9;break;
                                                case 0x7d:c=13;break;
                                                case 0xeb:c=2;break;
                                                case 0xdb:c=6;break;
                                                case 0xbb:c=10;break;
                                                case 0x7b:c=14;break;
                                                case 0xe7:c=3;break;
                                                case 0xd7:c=7;break;
                                                case 0xb7:c=11;break;
                                                case 0x77:c=15;break;
                                                default:break;
                                        }
                                }
                                while((b & 0xf0)!=0xf0)
                                {
                                        b=p0;
                                        b=b & 0xf0;
                                }
                        }
                }
}
return c;
delay(unsigned int k)
{
                unsigned int i,j;
                for(i=0;i<200;i++)
                        {
                        for(j=0;j<k;j++);
                        }
}
void main()
{
        int c;
        while(1)
        {
                c=kx();
        }
}

回复

使用道具 举报

ID:161164 发表于 2021-7-6 23:18 | 显示全部楼层
有啥问题?
不可以什么?
回复

使用道具 举报

ID:480510 发表于 2021-7-7 07:24 | 显示全部楼层

#include "reg52.h"
sfr p0=0x80;
sfr p6=0xe8;
上面这两个头文件已经定义,还需要再定义一次吗?就算要,p要大写P。
回复

使用道具 举报

ID:844772 发表于 2021-7-7 08:40 | 显示全部楼层
不大懂,为啥return c; 写到} 外面了。估计是笔误吧?
别的没看到啥问题啊。
回复

使用道具 举报

ID:483991 发表于 2021-7-7 10:47 | 显示全部楼层
多看几遍教程就能解决的事,关键这还是很基础的东东
回复

使用道具 举报

ID:949074 发表于 2021-7-12 16:46 来自手机 | 显示全部楼层
正规007 发表于 2021-7-7 10:47
多看几遍教程就能解决的事,关键这还是很基础的东东

OK了,知道了谢谢。
回复

使用道具 举报

ID:949074 发表于 2021-7-12 16:47 来自手机 | 显示全部楼层
ByanouQ 发表于 2021-7-7 07:24
#include "reg52.h"
sfr p0=0x80;
sfr p6=0xe8;

嗯,是重复定义了,但p小写的话是没事的吧,我后面都是小写。
回复

使用道具 举报

ID:949074 发表于 2021-7-12 16:48 来自手机 | 显示全部楼层
lkc8210 发表于 2021-7-6 23:18
有啥问题?
不可以什么?

应该是char的问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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