- 18
- 0
- 约9.16千字
- 约 15页
- 2018-04-05 发布于河南
- 举报
AVR_C语言编程的小技巧-IO口置位.doc
AVR C语言编程的小技巧-IO口置位
给单片机IO口置位是编程用的比较多的操作,这是我在学习C语言编程中的一点小小心得,希望大家觉得有用!AVR 单片机的IO口是标准的双向端口,首先要设置IO口的状态,即:输入还是输出DDRx寄存器就是AVR单片机的端口方向寄存器,通过设置DDRx可以设置x端口的状态。DDRx端口方向寄存器相应位设置为1则对应的x端口相应位为输出状态,DDRx端口方向寄存器相应位设置为0则对应的x端口相应位为输入状态。例如:DDRA 0xFF;? //设置端口A所有口为输出状态,因为0xFF对应的二进制DDRA 0x0F? //设置端口A高4位为输入状态,低4位为输出状态,因为0x0F对应的二进制PORTx寄存器是AVR单片机的输出寄存器,端口输出状态设定好后通过设置PORTx可以使端口x的相应位输入高电平或低电平来控制外部设备。例如:PORTA 0xFF;? //端口A所有口线输出高电平PORTA 0x0F;? //端口A高4位输出低电平,低4位输出高电平小贴士:利用位逻辑运算符对特定的端口进行设定。PORTA 1 3;? //端口A第4位置为高电平,其它为低电平,应移3位后PORTA 1 7;? //同理,第8位置高电平有时候我们期望端口某一位设置成高电平,但是其它位的高低电平要保持不变,如何做呢?C语言是很强大的,有办法!如下:PORTA | 1 3;? //实现端口A第4位置为高电平,其它位的高低电平不受影响上面的语句是简化的写法,分解一下就是:PORTA PORTA | 1 3 ;? ? //数字1左移3位后与端口A进行按位或,结果就是端口A第4位置为高电平,其它位的高低电平不受影响那么大家就会问了,如何实现设置某一位为低电平,其它位的高低电平不变呢?建议大家思考1分钟再看下面的内容。 PORTA ~ 1 3 ;? //解释一下,首先将1左移3位变,然后再按位取反变,然后再与端口A做按位与运算,这样就实现了设置端口A第4位为低电平,其它位的高低电平不变。分解后的语句为:PORTA PORTA ~ 1 3 ;? //结果是一样的将某端口相应位的高低电平翻转,即原来高电平变为低电平,低电平变为高电平,呵呵!好简单呦!PORTA ~PORTA;? //将PORTA按位取反后再赋值给PORTA按位逻辑运算还有一个异或,这个也非常有意思,它能实现电平翻转,有兴趣大家看看书,算是给大家留个想头吧!到这里基本的IO口置位的操作就聊完了,希望大家积极跟贴进行讨论,讲一讲自己的体会和心得,一起学习学习!
如何用C语言设置,清除和检查是否置位I/O 寄存器? Question 如何用C语言设置,清除和检查是否置位I/O 寄存器? Answer 在AVR Studio的Help菜单中选择the online AVR Tools User Guide然后打开AVR Assembler -- User Guide -- expression_rs,在这里你能获得很多汇编语言关于算术运算方面的应用。
下面是一些简单和常用的算术运算操作,这个例子是改变或检查AVR控制器PORTB端口上PB6和PB4的bit值。
设置PB6和PB4,同时不改变其他管脚状态
PORTB | 1 PB6 | 1 PB4 ;
清除PB6和PB4,同时不改变其他管脚状态
PORTB ~ 1 PB6 | 1 PB4 ;
检查PB6是否被置1
if PORTB 1 PB6 //Do something, for instance set a value in a variable
检查PB6和PB4是否被置1
if PORTB 1 PB6 | 1 PB4 1 PB6 | 1 PB4 //Do something, for instance set a value in a variable AVR单片机I/O口位操作,置位、清位、取反。
2008-06-05 11:50
下面是用的宏定义方式:
#define LED_SET PORTD | 1 PD5 //位置高#define LED_CLR PORTD ~ 1 PD5 //位置低#define LED_COM PORTD ^ 1 PD5 //位取反#define LED_R PIND 1 PD5 //位读取
通过上面的定义就
您可能关注的文档
- A Bite of China .docx
- A Brief Discussion of cultural differences between Chinese.ppt
- A Brief History of Chinese and Japanese Civilizations Cengage Learning.pdf
- A Case Study of a Contract Farming Chain Involving Supermarkets and Smallholders in Thailand.pdf
- A case study of environmentally sensitive planning and urban design in provincial China.pdf
- A CFD study on a vertical chemical vapor deposition reactor for growing carbon nanofibers.pdf
- A chair system in transition.pdf
- A Chemical Route To Increase Hot Spots on Silver Nanowires for.pdf
- A chemical shock tube driven by detonation.pdf
- A Coding Based Framework for Error Control in DNA Sequences.pdf
- 2026年长春事业单位联考备考题库发布时间有完整答案详解.docx
- 2026广西北海市合浦县民政局招录城镇公益性岗位人员11人备考题库及答案详解(最新).docx
- 2026江苏南京邮电大学招聘(人事代理)4人备考题库(第二批)精编答案详解.docx
- 2026年湖口县公安局交通管理大队公开招聘交通协管员备考题库完整答案详解.docx
- 2026年长春事业单位联考备考题库发布时间及一套答案详解.docx
- 2026年福建莆田市公安局城厢警务辅助人员招聘13人备考题库及参考答案详解1套.docx
- 2026广东佛山狮山镇大圃诚聘地理美术化学英语教师备考题库及答案详解(考点梳理).docx
- 2026广东中山市公安局南头分局招聘辅警3人备考题库完整答案详解.docx
- 2026年芜湖市文化和旅游局所属事业单位公开招聘编外聘用人员备考题库及答案详解参考.docx
- 2026广西北海市合浦县纪委监委招录公益性岗位人员1人备考题库及答案详解1套.docx
原创力文档

文档评论(0)