打印

18B20

[复制链接]
1723|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alaic123|  楼主 | 2013-4-23 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2013-4-23 15:37 | 只看该作者

#define GPIO_DS18B20        P0

对IO操作时传递个参数
#define DS18B20_NO1   (1<<0)
#define DS18B20_NO2   (1<<1)
#define DS18B20_NO3   (1<<2)
#define DS18B20_NO4   (1<<3)

然后程序中的IO拉高拉低用

void xxxx_func(U8 b)
{
        GPIO_DS18B20 |= b;
        
}


void main(void)
{
        xxxx_func(DS18B20_NO1);
        xxxx_func(DS18B20_NO2);
}

使用特权

评论回复
板凳
alaic123|  楼主 | 2013-4-23 16:16 | 只看该作者
ayb_ice 发表于 2013-4-23 15:37
#define GPIO_DS18B20        P0

对IO操作时传递个参数

那我拉低的时候相当于所有io口都同时拉低?

使用特权

评论回复
地板
ayb_ice| | 2013-4-23 16:41 | 只看该作者
alaic123 发表于 2013-4-23 16:16
那我拉低的时候相当于所有io口都同时拉低?

说了传参数,根据参数处理相应IO即可

使用特权

评论回复
5
yuyi21ic| | 2013-4-23 22:52 | 只看该作者
LS正解。。 把IO口当成一个参数。

使用特权

评论回复
6
alaic123|  楼主 | 2013-4-24 15:40 | 只看该作者
ayb_ice 发表于 2013-4-23 16:41
说了传参数,根据参数处理相应IO即可

能再详细点吗  比如我原先sbit DS=P2^0;void dsreset()
{
        DS=0;
        delay_1us(500);
        DS=1;
        delay_1us(60);
}
怎么用IO取代 谢谢啦

使用特权

评论回复
7
ayb_ice| | 2013-4-24 16:21 | 只看该作者
void reset(U8 gpio_no)
{
        if(gpio_no == 0){
                DS0 = 0;
        }else
        if(gpio_no == 1){
                DS1 = 0;
        }
        ...
}

使用特权

评论回复
8
alaic123|  楼主 | 2013-4-25 10:43 | 只看该作者
ayb_ice 发表于 2013-4-24 16:21
void reset(U8 gpio_no)
{
        if(gpio_no == 0){

这个不明白 DS0=0;这个DS0的值给谁的?? 实在是不知道

使用特权

评论回复
9
ayb_ice| | 2013-4-25 13:27 | 只看该作者
alaic123 发表于 2013-4-25 10:43
这个不明白 DS0=0;这个DS0的值给谁的?? 实在是不知道

是DQ不是DS

sbit DQ0 = P1^0;   // 第一个
sbit DQ1 = P1^1;   // 第二个
...

使用特权

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

本版积分规则

个人签名:LIFE

3

主题

54

帖子

0

粉丝