没有合适的资源?快使用搜索试试~ 我知道了~
首页AVR单片机IO口、定时器和按键编程总结
AVR单片机IO口、定时器和按键编程总结
需积分: 9 21 下载量 150 浏览量
更新于2023-03-03
评论 2
收藏 78KB PDF 举报
AVR单片机IO口、定时器和按键编程总结AVR单片机IO口、定时器和按键编程总结AVR单片机IO口、定时器和按键编程总结AVR单片机IO口、定时器和按键编程总结
资源详情
资源评论
资源推荐
AVR 单片机 I/O 口、定时器和按键编程总结
首先,用到了定时器 2 的溢出中断,用于控制灯的闪烁。在这部分程序的设
计中,遇到的困难是当灯一旦闪烁起来,就无法控制其它的内容了。后来明白是
由于中断服务程序太长,没等执行完计数器就计满了,然后就一直的在执行闪烁
程序,导致无法在执行其它命令。最开始在每次延迟函数之后令计数器置零,可
是还是没有起到太大效果,因为最长的延迟函数为 2s,时间太长,最后经考虑,
在进入中断服务程序的时候,屏蔽定时器 2 溢出中断,在离开之前再使能,然后
再令计数器置零,结果实现了所要的结果。
第二个问题就是关于按键。要求相应的 I/O 口即能做输出,又能做输入,能
够用按键控制。似乎很简单的一个程序,可是第一次做也遇到不少问题。当按下
相应的按键,就给 data 赋一个值,去实现不同的功能,最初发现不行,由于是
按键程序循环执行,因此 data 数据不变时会一直执行,因此在程序的开头先有
一条语句 data= =0xff,如果!0xff 就执行语句否则不执行。还有就是关于按键
的稳定性问题,由于单片机速度比较快,即使你轻轻的按了一下,也可能已经执
行了很多次相应的程序,而且按得太快会有毛刺,有不稳定现象。解决该问题借
助了别人的一些帮助,自己从中确实学到了东西。采用了一条 while((PINA&(1<<0))
==0);语句,当按键不送开始程序一直在这里循环。
还有就是针对 AVR 单片机的特点,在每一个函数或子函数中,必须把定义变
量放在最前面,否则将会不识别。而且,即使在
void Key_Handle2(void)
{ unsigned char i;
unsigned char temp7;
temp7=data;
i=PORTA;
DDRA=0xe0;
data=0xff;
这样的函数中,有时把 temp7=data; i=PORTA;DDRA=0xe0;安排的先后顺调一下
就可能不能出现正确的结果,本人目前也没有搞懂,但是有时就在一个问题上连
续几天都解决不了,就突然换换顺序,马上成功,所以建议在自己感觉一切正确
却又不能出正确结果时不妨试一试调换一下这些赋值的次序,也许就有新的发
现。
第四,在写 max7219 的数码管驱动程序时,由于是用普通的 I/O 口做驱动,
而且该口其它管脚还有其它用途,这也使得在最初写完程序时不能得到正确结
果。把相应的程序发上来,有需要的就参考,绝对原创,不用担心其它问题。
void show(unsigned char addr,unsigned char content)
{ unsigned char i,j,t;
t=PORTA&0x1f;
PORTA&=~(1<<6);
PORTA&=~(1<<5);
for(i=8;i>0;i--)
{ PORTA&=~(1<<7);
PORTA=(((addr&0x80)>>2)|t);
addr=addr<<1;
bjj9217
- 粉丝: 6
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0