完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求大神帮忙解决一下!!!
问题1: 我在学习EEPROM时候,有“EECR |=BIT(EEMWE)”这样一个语句,我把它改成了“EECR |=BIT(2)”之后也能实现,但是我把它改成EECR |=0X03就无法实现了,这是为什么? 问题2: 我再看一些书的时候,发现了类似“PORTD ^=_BV(PD7)”和“#define DQ PB3”这样的语句,这种语句好像直接对某一端口位操作了,但是AVR单片不是不能这样直接位操作么? |
|
相关推荐
8个回答
|
|
我用过的宏定义方式: #define LED_SET PORTD |= (1 << PD5) //位置高 #define LED_CLR PORTD &= ~(1 << PD5) //位置低 #define LED_COM PORTD ^= (1 << PD5) //位取反 #define LED_R PIND & (1 << PD5) //位读取 通过上面的定义就可以在程序中直接操作I/O了。
最佳答案
|
|
|
|
你把EECR |=0X03写成EECR |=0X04就明白了。
|
|
|
|
我去,,,竟然犯这种错误了。谢谢!顺便问下为啥能用PD7 PB3这种类型的? |
|
|
|
宏定义在C中用得很多,多学多用,单片机C中基本不用位操作指令,有些环境中根本没有,对端口的操作8位一起计算,但编译后的汇编代码是否为位操作,是编译器根据单片类型自动完成,
|
|
|
|
zwx_zhang 发表于 2017-2-2 23:26 请问下AVR单片机里面这种PD7 PB3是头文件里面的么? |
|
|
|
不客气。你去网上找AVR的位操作就知道了,4楼说的不对。 评分 |
|
|
|
谢谢您了!能帮我看下这个程序么?这个片内的ADC为什么只能执行一次啊?谢谢
|
|
|
|
发我QQ644523295邮箱吧,在这里下载要积分的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1168 浏览 3 评论
728 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
836 浏览 0 评论
919 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
747 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10856 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-25 18:14 , Processed in 0.781806 second(s), Total 93, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191