打印

推荐一个宏

[复制链接]
1703|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ayb_ice|  楼主 | 2007-3-17 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  KEIL C51中不支持二进制数输入,但是在很多时候却需要二进制数输入,可以用宏来实现。

#define _BIN(a,b,c,d,e,f,g,h)   
((a<<7)|(b<<6)|(c<<5)|(d<<4)|(e<<3)|(f<<2)|(g<<1)|(h<<0))

使用方法:
    P0 = _BIN(1,1,1,1, 0,0,0,0);    // P1口高4位=1,低4位=0

这样比较方便需要二进制数输入的场合。

相关帖子

沙发
gezhi| | 2007-3-17 15:04 | 只看该作者

谁想出来的?你真有才啊!

使用特权

评论回复
板凳
平常人| | 2007-3-17 17:03 | 只看该作者

这个宏是不错,但写起来麻烦;其实十六进制的十六个数很

使用特权

评论回复
地板
xiaopet| | 2007-3-17 17:32 | 只看该作者

RE

不错,有点意思,呵呵!
谢谢楼主分享!

使用特权

评论回复
5
董立强| | 2007-3-17 17:41 | 只看该作者

初学者

  其实我刚踏入单片机这门课程,电子专业就是这样,终于开了一门让我心动的课程,所以我以后想请教您,恳求你能帮助我学好这门课程!也希望的愿望能够达成!

使用特权

评论回复
6
ayb_ice|  楼主 | 2007-3-19 07:55 | 只看该作者

回复4楼

  有问题发帖子,大家都会帮你的,当然也包括我了.

使用特权

评论回复
7
ayb_ice|  楼主 | 2007-3-19 10:42 | 只看该作者

自己顶一下

// 下面的情况更适合使用(PHILIPS LPC900端口初始化)
//------------------------------------------------------
// io_initialize
//------------------------------------------------------
//
// I/O初始化
//
void io_initialize(void)
{
/*
       ---------------------------------------
       |         |        |                  |
       | PxM1.b  | PxM2.b |  口输出模式      |
       |-------------------------------------|
       |   0     |   0    |  准双向模式      |
       |   0     |   1    |    推挽          |
       |   1     |   0    |仅为输入(高阻抗)|
       |   1     |   1    |    开漏          |
       ---------------------------------------

           ------------------------------
           |xxxxxxxx|双向|推挽|只入|开漏|
           |--------|----|----|----|----|
           |PxM1.b  | 0  | 0  | 1  | 1  |
           |--------|----|----|----|----|
           |PxM2.b  | 0  | 1  | 0  | 1  |
           ------------------------------
*/
//-------------------------------------------------
// 按键口配置为准双向模式
// P00~P06 = 准双向模式
// P14,P21 = 准双向模式
// BEEP P16配置推挽模式
// P0.          7  6        3  2  1  0
    P0M1 = _bin(0, 0, 0, 0, 0, 0, 0, 0);
    P0M2 = _bin(0, 0, 0, 0, 0, 0, 0, 0);

//-------------------------------------------------
// P12,P13开漏
// P1.         7   6     4  3  2
    P1M1 = _bin(0, 0, 0, 0, 1, 1, 0, 0);
    P1M2 = _bin(0, 1, 0, 0, 1, 1, 0, 0);

//-------------------------------------------------
// P2.                5     3  2  1
    P2M1 = _bin(0, 0, 0, 0, 0, 0, 0, 0);
    P2M2 = _bin(0, 0, 0, 0, 0, 0, 0, 0);
}

使用特权

评论回复
8
ayb_ice|  楼主 | 2007-3-20 11:02 | 只看该作者

随便说说

  顶

使用特权

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

本版积分规则

222

主题

15452

帖子

34

粉丝