avr单片机,为什么avr对单个io口的操作不能像51那样,51可以写p1.5,avr却不行,
这个问题我请教过一个台湾的工程师,他说是环境问题,我现在用的是AVRstudio,还有没有其他软件,...
这个问题我请教过一个台湾的工程师,他说是环境问题,我现在用的是AVR studio,还有没有其他软件,
展开
展开全部
avr的单片机不支持位操作,只能通过那些逻辑与、或、异或的运算去读或者写I/O口,挺麻烦的,我刚开始用时也觉得很麻烦,不过avr的单片机确实比51单片机功能强大,处理速度也快,所以各有利弊吧。
mega16可以对A/B/C/D四个口进行操作,估计是你哪里出了问题吧。
我用的是ICCAVR,也不能对位进行直接的访问操作。
mega16可以对A/B/C/D四个口进行操作,估计是你哪里出了问题吧。
我用的是ICCAVR,也不能对位进行直接的访问操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个例子
#define LCD3510_SCLK_DDR DDRD
#define LCD3510_SCLK_PORT PORTD
#define LCD3510_SCLK_BIT 3
#define LCD3510_SCLK_0 LCD3510_SCLK_PORT &= ~(1 << LCD3510_SCLK_BIT)
#define LCD3510_SCLK_1 LCD3510_SCLK_PORT |= (1 << LCD3510_SCLK_BIT)
假如要把LCD3510_SCLK置0,使用LCD3510_SCLK_0;即可
置1则使用LCD3510_SCLK_1;
#define LCD3510_SCLK_DDR DDRD
#define LCD3510_SCLK_PORT PORTD
#define LCD3510_SCLK_BIT 3
#define LCD3510_SCLK_0 LCD3510_SCLK_PORT &= ~(1 << LCD3510_SCLK_BIT)
#define LCD3510_SCLK_1 LCD3510_SCLK_PORT |= (1 << LCD3510_SCLK_BIT)
假如要把LCD3510_SCLK置0,使用LCD3510_SCLK_0;即可
置1则使用LCD3510_SCLK_1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
位操作要看编译器的支持情况了,AVR编译器中好像只有CVAVR可以支持PORTA.1=0 这种操作,其实你也可以在H文件宏定义中加入想要的位操作,也行的。补充问题,好像没遇到这种情况,检查下硬件和程序吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询