- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR的IO端口特性与应用.doc
AVR的IO端口特性与应用
原创:armok / 2004-12-18 / www.OurAVR.com
AVR的IO端口特性分析:
?
分析IO引脚Pxn。DDRxn 只有为1时,可控单向开关才工作,PORTxn 的数值才能通过可控单向开送到 Pxn.
结论:DDRxn=1 时,为输出状态。输出值等于PORTxn。所以,DDRxn 为方向寄存器。PORTxn 为数据寄存器。
?
分析上拉电阻。E的电位为0时,即D为1时,上拉电阻有效。
从与门的输入分析,只有以下的条件同时满足时,上拉电阻才有效
1、PUD 为0
2、DDxn 为0
3、PORTxn 为1
结论是:只有DDRxn = 0 即管脚定义为输入状态,并且 PORTxn=1, 而且UPD设置为0时,上拉电阻才生效。
?
分析 Pxn 及 SLEEP。只有当 SLEEP = 0 时,可控开关2才导通,SD1不工作,施密特触发器的输入等于Pxn, 信号送到同步器后读取。
结论:Pxn 无论在输入或输出状态都能被AVR读取。SLEEP=0时输入才能被读取。
AVR的IO端口的使用注意事项:
如果有引脚末被使用,建议些引脚赋予一个确定电平。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。
如果刚定义了引脚的输入状态,就要立即回读,可以在回读前,插入一句 _nop()。
系统复位时,DDR全部为0,Port也全部为0,故上拉电阻在复位时会失效。
如何用C语言操纵AVR的IO端口(以ICCAVR为例):
举例一:将PB0定义为输出,且输出为高电平
DDRB=BIT(0); //定义 PB0为输出
PORTB|=BIT(0); // PB0 输出高电平
举例二:将PB0、PB1定义为输出,PB0、PB1均为高电平
DDRB|=BIT(0)|BIT(1); //定义 PB0、PB1为输出
PORTB|=BIT(0)|BIT(1);// PB0、PB1 输出高电平
举例三:将PB0数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
PORTB^=BIT(0); //翻转PB0口
举例四:将PB0、PB1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
PORTB^=BIT(0)|BIT(1); // 翻转PB0 、PB1口
举例五:将PB2、PB3定义为输入,不带上拉电阻
DDRB=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB=~(BIT(2)|BIT(3)); // 将 PORT 置0,没有上拉电阻
举例六:将PB2、PB3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平
SFIOR=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,在整个代码中,这句话可以不出现,或仅出现一次即可。因为它是一个控制全部上拉电阻的控制位。
DDRB=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB|=BIT(2)|BIT(3); // 将 PORT 置1,满足上拉电阻的另一个条件
举例七:DDRB=BIT(0)|BIT(1) 与 DDRB|=BIT(0)|BIT(1) 的区别
假定在执行上面两句指令前,DDRB 的状态为: 1000 0000
如果执行 DDRB=BIT(0)|BIT(1) ,DDRB的状态变为: 0000 0011 如果执行 DDRD|=BIT(0)|BIT(1),,DDRB的状态变为: 1000 0011
那前一句会先清空以前的所有状态,后一句保留前面的状态。
在实际应用中,后一句更常用。
举例八:将第三位置1,除了用BIT(3),还有其它的表达方法吗?
DDRB|=BIT(3);
DDRB|=13;
DDRB|=0x08;
DDRB|=0
您可能关注的文档
- 2018年上半年视觉艺术系预备党员转正公示.doc-安徽师范大学皖江.doc
- 2018年小四家长会.PDF
- 2018年市办件总结.doc.doc
- 2018年度太仓市科技成果转化-太仓市双创综合服务平台.PDF
- 2018年度成都市金牛区工程技术市政专业初级专业技术职务任职资格.PDF
- 2018年文化艺术教育培训中心暑期培训招生简章一三五课程.PDF
- 2018年苍南县高二学生英语综合能力竞赛揭晓.doc.doc
- 2018第六届TCCT随机系统与控制专题大会在青岛举办.PDF
- 2019年汉语桥世界中学生中文比赛芬兰赛区预选赛.PDF
- 20片殷墟甲骨昨天躺在专门的防弹玻璃罩里.ppt
- Ch.1技术的意义与特性.PDF
- Ch08流程控制-重覆结构.ppt
- Chapter3Gas、SolutionandColloid(气体、溶液和胶体).PDF
- Chapter4资料与流程塑模DataandProcessModeling.PDF
- ckfinderuserfilesfiles用于班主任培训PPT.ppt.ppt
- CTD-质量流程设计和申报资料的评审要求.PDF
- DAI12-4(FIT)FactoryIT系列隔离型模拟量输出模块用户手册-CONTEC.PDF
- DECLARATIONANDUNDERTAKINGFORM1声明和保证书(须由家长.PDF
- DS9108混凝土温度监测器.PDF
- E3-交大教育训练教材.ppt.ppt
文档评论(0)