椒盐时代 发表于 2013-4-11 09:30:26

Avr IO口定义格式求解

本帖最后由 椒盐时代 于 2013-4-11 09:54 编辑

DDRB |= (1 << DDB0)|(0 << DDB1);
PORTB = (0 << PB0)|(1 << PB1);

DDRD |= (1 << DDD0) | (0 << DDD1);
PORTD |= (1 << PD0) | (0 << PD1);
麻烦给解释下这四句

浮生似海 发表于 2013-4-11 11:40:52

PORTD |= (1 << PD0) | (0 << PD1);   其实这条语句是有点错误的。
他的本意是想把   PD口的   PD0设置为 输出1   而PD1 设置为0、为输入高阻态
正确语句应该是
PORTD |= (1 << PD0);//或的意思是 只将PD0位设置为1、
PORTD &= ~(1 << PD1); //与后面取反的意思是只将 PD1位设置为0

楼主 莫元吧呵呵

浮生似海 发表于 2013-4-11 09:30:27

DDRB |= (1 << DDB0)|(0 << DDB1);//设置I/O   B口中的B0 为输出端口、B1为输入端口
PORTB = (0 << PB0)|(1 << PB1);    //    设置B0口为输出逻辑电平0、设置B1口为上拉电阻使能输入

注解: DDR为端口输入 输出方向   
          PORT 为输出逻辑电平 零或一

楼主 多看数据手册   

椒盐时代 发表于 2013-4-11 10:59:07

浮生似海 发表于 2013-4-11 10:37 static/image/common/back.gif
DDRB |= (1

谢谢

请问还有这句

PORTD |= (1 << PD0) | (0 << PD1);

多了个 或

mainbp 发表于 2013-4-11 11:32:46

这都是C语法呀,PD0,PD1都是宏定义过的,移位和或运算

椒盐时代 发表于 2013-4-11 13:16:57

浮生似海 发表于 2013-4-11 11:40 static/image/common/back.gif
PORTD |= (1

必须滴
三克斯
页: [1]
查看完整版本: Avr IO口定义格式求解