avr单片机,为什么avr对单个io口的操作不能像51那样,51可以写p1.5,avr却不行,

这个问题我请教过一个台湾的工程师,他说是环境问题,我现在用的是AVRstudio,还有没有其他软件,... 这个问题我请教过一个台湾的工程师,他说是环境问题,我现在用的是AVR studio,还有没有其他软件, 展开
 我来答
wakala
2010-09-17 · TA获得超过630个赞
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:102万
展开全部
不是不可以。应该是你用的是C编译器不支持位定义。
一般用标准的c位操作是这样的:
1、位置1:P1^=(1<<5);
2、位清0:P1&=~(1<<5);

至于你说的mega16不能对portAB操作,那是不可能的,应该是你程序有问题吧!
wangchao234
2010-09-19 · TA获得超过320个赞
知道答主
回答量:108
采纳率:0%
帮助的人:117万
展开全部
avr的单片机不支持位操作,只能通过那些逻辑与、或、异或的运算去读或者写I/O口,挺麻烦的,我刚开始用时也觉得很麻烦,不过avr的单片机确实比51单片机功能强大,处理速度也快,所以各有利弊吧。
mega16可以对A/B/C/D四个口进行操作,估计是你哪里出了问题吧。

我用的是ICCAVR,也不能对位进行直接的访问操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
believe0815
2010-09-19 · TA获得超过239个赞
知道小有建树答主
回答量:734
采纳率:50%
帮助的人:165万
展开全部
给你一个例子
#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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wxuke
2010-09-18 · TA获得超过416个赞
知道小有建树答主
回答量:136
采纳率:100%
帮助的人:82万
展开全部
位操作要看编译器的支持情况了,AVR编译器中好像只有CVAVR可以支持PORTA.1=0 这种操作,其实你也可以在H文件宏定义中加入想要的位操作,也行的。补充问题,好像没遇到这种情况,检查下硬件和程序吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式