1楼:匿名用户
位运算
应该是单片机编程**的片段吧ddrb|=bit(io)即
ddrb=ddrb|bit(io)即对ddrb的某一位或某几位置一
怎样用c语言独立于操作系统地io
2楼:mexico卡卡
如何用c语言操纵avr的io端口(以iccavr为例):
举例一:将pb0定义
为输出,且输出为高电平
ddrb=bit(0); //定义 pb0为输出
portb|=bit(0); // pb0 输出高电平
举例二:将pb0、pb1定义为输出,且pb0输出低电平,pb1均为高电平
ddrb|=bit(0)|bit(1); //定义 pb0、pb1为输出
portb|=bit(0)|bit(1);// pb0、pb1 输出高电平
举例三:将pb0数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
portb^=bit(0); // pb0 输出高电平
举例四:将pb0、pb1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
portb^=bit(0)|bit(1); // pb0 输出高电平
举例五:将pb2、pb3定义为输入,不带上拉电阻
ddrb&=~(bit(2)|bit(3)); //定义 pb2、pb3为输入
portb&=~(bit(2)|bit(3)); // 将 port 置0,没有上拉电阻
举例六:将pb2、pb3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平
sfior&=~bit(pud); // sfior寄存器的上拉电阻控制位pud置0,在整个**中,这句话可以不出现,或仅出现一次即可。因为它是一个控制全部上拉电阻的控制位。
ddrb&=~(bit(2)|bit(3)); //定义 pb2、pb3为输入
portb|=bit(2)|bit(3); // 将 port 置1,满足上拉电阻的另一个条件
举例七:ddrb=bit(0)|bit(1) 与 ddrb|=bit(0)|bit(1) 的区别
假定在执行上面两句指令前,ddrb 的状态为: 1000 0000
如果执行 ddrb="bit"(0)|bit(1) ,ddrb的状态变为: 0000 0011
如果执行 ddrd|=bit(0)|bit(1),,ddrb的状态变为: 1000 0011
那前一句会先清空以前的所有状态,后一句保留前面的状态。
在实际应用中,后一句更常用。
举例八:将第三位置1,除了用bit(3),还有其它的表达方法吗?
ddrb|=bit(3);
ddrb|=1<<3;
ddrb|=0x08;
ddrb|=0b00001000;
#define led_set portd |= (1 << pd5) //位置高
#define led_clr portd &= ~(1 << pd5) //位置低
#define led_*** portd ^= (1 << pd5) //位取反
#define led_r pind & (1 << pd5) //位读取
通过上面的定义就可以在程序中直接操作i/o了。
如何用c语言操纵avr的io端口
3楼:匿名用户
如何用c语言操纵avr的io端口(以iccavr为例):
举例一:将pb0定义为输出,且输出为高电平
ddrb=bit(0); //定义 pb0为输出
portb|=bit(0); // pb0 输出高电平
举例二:将pb0、pb1定义为输出,且pb0输出低电平,pb1均为高电平
ddrb|=bit(0)|bit(1); //定义 pb0、pb1为输出
portb|=bit(0)|bit(1);// pb0、pb1 输出高电平
举例三:将pb0数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
portb^=bit(0); // pb0 输出高电平
举例四:将pb0、pb1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
portb^=bit(0)|bit(1); // pb0 输出高电平
举例五:将pb2、pb3定义为输入,不带上拉电阻
ddrb&=~(bit(2)|bit(3)); //定义 pb2、pb3为输入
portb&=~(bit(2)|bit(3)); // 将 port 置0,没有上拉电阻
举例六:将pb2、pb3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平
sfior&=~bit(pud); // sfior寄存器的上拉电阻控制位pud置0,在整个**中,这句话可以不出现,或仅出现一次即可。因为它是一个控制全部上拉电阻的控制位。
ddrb&=~(bit(2)|bit(3)); //定义 pb2、pb3为输入
portb|=bit(2)|bit(3); // 将 port 置1,满足上拉电阻的另一个条件
举例七:ddrb=bit(0)|bit(1) 与 ddrb|=bit(0)|bit(1) 的区别
假定在执行上面两句指令前,ddrb 的状态为: 1000 0000
如果执行 ddrb="bit"(0)|bit(1) ,ddrb的状态变为: 0000 0011
如果执行 ddrd|=bit(0)|bit(1),,ddrb的状态变为: 1000 0011
那前一句会先清空以前的所有状态,后一句保留前面的状态。
在实际应用中,后一句更常用。
举例八:将第三位置1,除了用bit(3),还有其它的表达方法吗?
ddrb|=bit(3);
ddrb|=1<<3;
ddrb|=0x08;
ddrb|=0b00001000;
#define led_set portd |= (1 << pd5) //位置高
#define led_clr portd &= ~(1 << pd5) //位置低
#define led_*** portd ^= (1 << pd5) //位取反
#define led_r pind & (1 << pd5) //位读取
通过上面的定义就可以在程序中直接操作i/o了。
ddrb = (1 << ddb4) 是什么意思? 5
4楼:天真的畅想
ddrb是方向寄存器,1<把1左移到ddb4.
ddrb决定了单片机io口的方向,若是仅仅应用,那在读取端口是设置ddrb相应位为1,然后读取pinb,写端口是设置ddrb相应位为0,然后写portb.
5楼:匿名用户
ddrb是端口b的方向寄存器,这句话的意思是说端口b的port4脚设为输出。
6楼:秋之左岸
ddrb 是方向寄存器,1< 单片机ddrb的作用 7楼:还要设置密码 ddrb决定了单片机io口的方向,若是仅仅应用,那在读取端口是设置ddrb相应位为1,然后读取pinb,写端口是设置ddrb相应位为0,然后写portb,若是想深入了解,最好看atmega16芯片手册,看看端口的电路图。 读取b口: unsigned char sb; ddrb=0xff; sb=pinb; 写b端口: ddrb=0x0; portb=0x2b; 8楼:徐龙成 什么型号单片机?ddrb一般是b口方向寄存器。你可是设置io口是输入还是输出。 9楼:匿名用户 ddrb |= 0x80; //等于“sbi(ddrb,7);” ddrb 单片机中ddrb=00fx什么意思 10楼:匿名用户 这个是avr单片机的io口,也就是输入输出口线b口的引脚配置,如果配置成ddrb = 0xf0,则表示b口的高四位是输出,低四位是输入配置,如果配置成ddrb= 0xff,则表示b口全部是输出模式。当然还可以配置成ddrb= 0xf1 0xf2 0xf4.... 11楼:宋桓公 不应该是ddrb=00fx;应该是,ddrb=0xf0 吧ddrb决定了单片机io口的方向,若是仅仅应用,那在读取端口是设置ddrb相应位为1,然后读取pinb,写端口是设置ddrb相应位为0,然后写portb,若是想深入了解,最好看atmega16芯片手册,看看端口的电路图。 读取b口: unsigned char sb; ddrb=0xff; sb=pinb; 写b端口: ddrb=0x0; portb=0x2b; 1楼 神丶雨祭丨 装c 装。b 只不过好听一点不想爆粗口 希望采纳,你的支持是我们的动力! 2楼 安安静静活几年 就是比装逼 b 更厉害的当时是装c了 c语言 是什么意思 3楼 安徽电信网上营业厅 是c语言注释的起始标识。 在c语言中,可以使用 作为注释文字的起始和结束标识,在 和 中间的文字,将不... 1楼 灰灰不吃羊 限制输出宽度, 2c,就是输出的宽度为2, c省略了1,c的输出格式控制会有详细的介绍。 c语言里 f中间加数字是什么意思 2楼 匿名用户 f是用于格式化输入输出函数,对应类型为float的格式字符。加数字的情况仅适用于输出函数,比如printf。 其形式为 printf a bf... 1楼 匿名用户 相当于 s k,取结构体中k的值 2楼 匿名用户 struct studentstu s stu k s k s是指向结构体的指针 3楼 发烧友eri画家 s是结构体指针,指向结构体中的变量k 也就是k的值 c语言中s k是什么意思 4楼 匿名用户 就是s s k的意思就是把s的值加...装C是什么意思,C语言/*……*/是什么意思
c语言c中间加数字是什么意思,C语言%c中间加数字是什么意思
c语言中sk是什么意思,c语言中 k*=2 是什么意思