完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 3010203109 于 2013-3-31 14:27 编辑
1、IAR与Dragon连不上 先看驱动,插上DRAGON,打开设备管理器,如果其中有AVR DRAGON,说明已经有驱动了,如果没有,右键“更新驱动程序软件”,选择“浏览计算机以查找驱动程序软件”,选择IAR安装目录下的driversdragon,如C:Program FilesIAR SystemsEmbedded Workbench 5.4avrdriversdragon,确定,安装。 装好驱动后,还要设置一下IAR。鼠标右击一个工程,选择OPtiONS,在General Options中选择单片机类型,OK。接下来是重点。 进入Debugger,在Drivers中有许多仿真器可选,注意不要选Dragon,选择JTAGICE mkII,OK。进入JTAGICE mkII>Extra Options,把钩选上,在下面的框中输入“--drv_dragon”(不含引号),OK。 接下来在菜单栏Dragon中选中Fuse Handler,如果能读出熔丝位,恭喜,你的Dragon已经和IAR连上了。 2、如何延时 传统的延时函数 void delay(long t) {while(t--);} 在IAR中会被优化掉而无法实现延时,但是IAR为我们提供了另一种延时方法 延时头文件 #ifndef __IAR_DELAY_H #define __IAR_DELAY_H #include #define F_CPU 11.059200//晶振频率,单位:MHZ。此语句最好定义在c文件开头 #define delay_us(x) __delay_cycles ((unsigned long)(x * F_CPU)) #define delay_ms(x) __delay_cycles ((unsigned long)(x * F_CPU*1000UL)) #define delay_s(x) __delay_cycles ((unsigned long)(x * F_CPU*1000000UL)) #endif 把delay.h文件放入工程文件夹下,c文件开头声明#include"delay.h" 接下来就可以在C文件中直接使用us,ms,s级的延时了。如,延时100ms,就写“delay_ms(100);”,OK。 用这种方式延时应该是相当精确的,我曾用这个延时函数模拟UART通信,成功地实现了通信。 3、如何按位操作 从51转到AVR的人很快会遇到一个烦恼,AVR似乎不能进行位操作了!不用急,来看IAR怎么进行位操作。 对PA0的位操作可以这样写: PORTA_Bit0=1; PORTA_Bit0=~PORTA_Bit0 ; 也可以先#define PA0 PORTA_Bit0,就可以写成: PA0=1; PA0=~PA0; 暂时这些,以后再有值得分享的总结我会发表在帖子后面的回复中 评分 |
|
相关推荐
29 个讨论
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5122 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7767 浏览 0 评论
3026 浏览 2 评论
3103 浏览 1 评论
10053 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 06:58 , Processed in 0.541609 second(s), Total 64, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号