打印

按键

[复制链接]
1453|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wicw|  楼主 | 2010-1-7 22:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wicw 于 2010-1-7 22:21 编辑

sfr KeyPort=0xa0;         //行在P2口,我们只取低四位

sbit KeyRow1=P2^4;         //列1在P24
sbit KeyRow2=P2^5;         //列2在P25

sfr LedPort=0x80;         //P0口LED

uchar KeyValue;                 //存放键值

void KeyRead()                 //按键读取
{
    ………………

上面 “sfr KeyPort=0xa0;         //行在P2口,我们只取低四位”这句不太明白??
请指点一下,谢谢

anjian.jpg (27.51 KB )

anjian.jpg

相关帖子

沙发
wicw|  楼主 | 2010-1-8 08:30 | 只看该作者
那位大哥帮我看看呀??不明白它怎么定义是什么意思!!

使用特权

评论回复
板凳
HWM| | 2010-1-8 08:44 | 只看该作者
定义 KeyRow1 为特殊寄存器(SFR)地址 0xA0,那就是P2。

使用特权

评论回复
地板
wicw|  楼主 | 2010-1-8 09:38 | 只看该作者
那这句 sfr KeyPort=0xa0;  可以用 #define KeyRow1=P2 ;  来代替吗????
这两句是等价的吗?

使用特权

评论回复
5
HWM| | 2010-1-8 09:42 | 只看该作者
可以

使用特权

评论回复
6
wicw|  楼主 | 2010-1-8 09:46 | 只看该作者
谢谢,我明白了,刚看了下PDF的SFR
可我不明白下面两句有啥区别??那句更规范呢??
sfr KeyPort=0xa0;  可以用 #define KeyRow1=P2 ;

我们这些新手怎么取舍呢??

使用特权

评论回复
7
wicw|  楼主 | 2010-1-8 09:59 | 只看该作者
????那位大侠来解释下啦
谢谢

使用特权

评论回复
8
HWM| | 2010-1-8 10:09 | 只看该作者
原则上没有差别

sfr KeyPort=0xa0;

是重新定义一次。

#define KeyRow1=P2

是利用现成的。

使用特权

评论回复
9
wicw|  楼主 | 2010-1-8 10:16 | 只看该作者
谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

42

帖子

1

粉丝