AVR C语言编程的小技巧-IO口置位

AVR C语言编程的小技巧-IO口置位

ID:38467515

大小:55.00 KB

页数:15页

时间:2019-06-13

AVR C语言编程的小技巧-IO口置位_第1页
AVR C语言编程的小技巧-IO口置位_第2页
AVR C语言编程的小技巧-IO口置位_第3页
AVR C语言编程的小技巧-IO口置位_第4页
AVR C语言编程的小技巧-IO口置位_第5页
资源描述:

《AVR C语言编程的小技巧-IO口置位》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AVRC语言编程的小技巧-IO口置位给单片机IO口置位是编程用的比较多的操作,这是我在学习C语言编程中的一点小小心得,希望大家觉得有用!AVR单片机的IO口是标准的双向端口,首先要设置IO口的状态,即:输入还是输出DDRx寄存器就是AVR单片机的端口方向寄存器,通过设置DDRx可以设置x端口的状态。DDRx端口方向寄存器相应位设置为1则对应的x端口相应位为输出状态,DDRx端口方向寄存器相应位设置为0则对应的x端口相应位为输入状态。例如:DDRA=0xFF; //设置端口A所有口为输出状态,因为0xFF对应的二进制为1

2、1111111bDDRA=0x0F //设置端口A高4位为输入状态,低4位为输出状态,因为0x0F对应的二进制为00001111bPORTx寄存器是AVR单片机的输出寄存器,端口输出状态设定好后通过设置PORTx可以使端口x的相应位输入高电平或低电平来控制外部设备。例如:PORTA=0xFF; //端口A所有口线输出高电平PORTA=0x0F; //端口A高4位输出低电平,低4位输出高电平小贴士:利用位逻辑运算符对特定的端口进行设定。PORTA=1<<3; //端口A第4位置为高电平,其它为低电平,应为00000001

3、左移3位后是00001000PORTA=1<<7; //同理,第8位置高电平有时候我们期望端口某一位设置成高电平,但是其它位的高低电平要保持不变,如何做呢?C语言是很强大的,有办法!如下:PORTA

4、=1<<3; //实现端口A第4位置为高电平,其它位的高低电平不受影响上面的语句是简化的写法,分解一下就是:PORTA=PORTA

5、(1<<3);  //数字1左移3位后与端口A进行按位或,结果就是端口A第4位置为高电平,其它位的高低电平不受影响那么大家就会问了,如何实现设置某一位为低电平,其它位的高低电平不变呢?建议大家

6、思考1分钟再看下面的内容。????????????????????PORTA&=~(1<<3); //解释一下,首先将1左移3位变成00001000b,然后再按位取反变成11110111b,然后再与端口A做按位与运算,这样就实现了设置端口A第4位为低电平,其它位的高低电平不变。分解后的语句为:PORTA=PORTA&(~(1<<3)); //结果是一样的将某端口相应位的高低电平翻转,即原来高电平变为低电平,低电平变为高电平,呵呵!好简单呦!PORTA=~PORTA; //将PORTA按位取反后再赋值给PORTA按位逻辑

7、运算还有一个异或,这个也非常有意思,它能实现电平翻转,有兴趣大家看看书,算是给大家留个想头吧!到这里基本的IO口置位的操作就聊完了,希望大家积极跟贴进行讨论,讲一讲自己的体会和心得,一起学习学习!如何用C语言设置,清除和检查是否置位I/O寄存器? Question如何用C语言设置,清除和检查是否置位I/O寄存器?Answer在AVRStudio的Help菜单中选择theonlineAVRToolsUserGuide然后打开AVRAssembler-->UserGuide-->expression_rs,在这里你能获得很

8、多汇编语言关于算术运算方面的应用。下面是一些简单和常用的算术运算操作,这个例子是改变或检查AVR控制器PORTB端口上PB6和PB4的bit值。设置PB6和PB4,同时不改变其他管脚状态PORTB

9、=(1<

10、(1<

11、(1<

12、ORTB&=((1<

13、(1<

14、(1<

15、=(1<

16、TD^=(1<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。