WINAVR 中文教程

Similar documents
附錄C.doc

华恒家庭网关方案

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C语言的应用.PDF

untitled

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

C/C++ - 文件IO

C 1

C/C++语言 - C/C++数据

C++ 程式設計

C/C++程序设计 - 字符串与格式化输入/输出

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

目 录

untitled

Microsoft Word - 正文.doc

Simulator By SunLingxi 2003

C C

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

FY.DOC

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

epub83-1

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

目录

目 录 前 言 3 第 一 部 分 学 院 基 本 情 况... 4 一 学 院 简 介... 4 二 2015 届 毕 业 生 基 本 情 况... 6 第 二 部 分 毕 业 生 就 业 创 业 工 作 开 展 情 况... 9 一 领 导 高 度 重 视, 健 全 机 制... 9 二 多 方

untitled

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

CC213

Panaboard Overlayer help

6020

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

学习MSP430单片机推荐参考书

JLX

51 C 51 isp 10 C PCB C C C C KEIL

新・明解C言語入門編『索引』

untitled

untitled

第 1 页共 9 页 文档履历 版本号日期制 / 修订人内容描述 V 正式版本

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

chap07.key

简 介 本 白 皮 书 高 度 概 述 了 支 持 移 动 互 联 网 设 备 (Mobile Internet Device) 的 Intel C++ Software Development Tool Suite for Linux* OS, 目 标 读 者 主 要 是 技 术 决 策 制 订

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

1








第7章-并行计算.ppt

bingdian001.com

untitled


《杜甫集》

CC213

自然辩证法索引

外围器件-new.cdr

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

从MCS51向AVR的快速转换.PDF

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

e yx = ( y / y) /( x / x) e yx

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

2015中国西部(川渝)

秘密

E11701


untitled

untitled

2 12

Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS

nb.PDF

(Microsoft Word \256\325\260\310\267|\304\263\260O\277\375_\252k\250\356_.doc)

Microsoft Word - 桂电教[2008]8号.doc

教育心理学教学案例分析

Copyright iresearch Inc. 1

Microsoft Word - ~ doc

untitled

概述 基于 Cortex-M3 内核的 STM32F103 系列单片机, 并没有浮点运算协处理器 在 STM32F103 上进行的浮点运算都是软件模拟实现 考虑到加入浮点运算库需要大约 10K 左右的 FLASH 空间 ( 即 <math.h> 对应的数学库 ), 而且浮点运算速度较慢,EC30-E

iresearch Copyright iresearch Inc. 1

nooog

國立嘉義高中 103 學年度第 1 學期第 6 次行政會議紀錄 日期時間 103 年 12 月 15 日(星期一) 時間 08:30~ 地點 旭陵樓 3 樓第 1 會議室 主席 黃校長義春 紀錄彙整 葉國宗 參加人員 如簽到表 壹 主席報告 1.今天上午 11:30 要出發至溪湖高中進行 104 學

Tel:

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

山东建筑大学学分制管理规定(试行)

2

PIC16F F MPLAB 08 16F LED 15 LED

科学计算的语言-FORTRAN95

c_cpp

《將進酒》

河 南 蓝 皮 书 文 化 (2008) 网 络 文 学 主 要 是 指 在 网 上 原 创 的 文 学 作 品 作 为 网 络 文 化 的 主 力 部 分, 网 络 文 学 的 发 展 在 近 年 来 势 不 可 挡 作 为 凭 借 新 兴 媒 介 兴 起 的 文 学, 网 络 文 学 与 传 统

21 flash

EK-STM32F

ebook70-14

《C语言程序设计》教材习题参考答案

Transcription:

WINAVR 中文教程 一 安装 WINAVR 是一款开发 AVR 系列单片机的免费编译软件 您可以在 网上搜索或者到 www.qm999.cn 中资源下载栏目中下载 安装完 WINAVR 的菜单 二 建立项目 运行 Programmers Notedpad [WinAVR] 1

建立项目组, 如下图 : 2

建立项目, 如下图 : 输入工程名 :first 放在目录 D:\tt 下 3

在新建的文件中输入第一个程序, 保存到项目目录 d:\tt 中, 文件名定作 first.c 在 first 项目上, 点右键 4

选择刚才保存的 first.c 文件 选择存盘后, 项目已经建成 但是要编译还要配置 Makefile 文件 请继续看下面的编译调试步骤 三 编译调试 点击运行菜单中的 Mfile 项 5

输入主文件名, 即含有 main 函数的文件名 我们在上面保存的文件名是 first.c 这里填入 first 设定 MCU 型号 这里我们用的是 MEGA16 其他各项, 我们都使用默认设置 选择另存为把这个配置文件保存到项目目录中 6

还有一个问题 就是默认的配置是 8M 晶振, 我用的是 7.3728M 的 这样在使用延时函数时 就不准了 在 PN(Progrmmer's Notepad) 中打开 d:\tt\makefile 文件 7

把 F_CPU = 8000000 改为 F_CPU = 7372800 就是 7.3728M 选择保存, 就完成的 Makefile 文件配置 配置或改动 Makefile 文件后, 要执行一次 Make Clean 选项 再选择 Make All 选项编译 如果编译正确,Output 窗口会输出以下内容 : > "make.exe" all -------- begin -------- avr-gcc (GCC) 4.2.2 (WinAVR 20071221) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling C: first.c avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char - funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./first.lst - std=gnu99 -Wundef -MMD -MP -MF.dep/first.o.d first.c -o first.o 8

first.c:27:2: warning: no newline at end of file 救火车单片机工作室 Linking: first.elf avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsignedbitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=first.o -std=gnu99 - Wundef -MMD -MP -MF.dep/first.elf.d first.o --output first.elf -Wl,-Map=first.map,--cref - lm Creating load file for Flash: first.hex avr-objcopy -O ihex -R.eeprom first.elf first.hex Creating load file for EEPROM: first.eep avr-objcopy -j.eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma.eeprom=0 --no-change-warnings -O ihex first.elf first.eep exit 0 Creating Extended Listing: first.lss avr-objdump -h -S first.elf > first.lss Creating Symbol Table: first.sym avr-nm -n first.elf > first.sym Size after: AVR Memory Usage ---------------- Device: atmega16 Program: 198 bytes (1.2% Full) (.text +.data +.bootloader) Data: 0 bytes (0.0% Full) (.data +.bss +.noinit) -------- end -------- > Process Exit Code: 0 > Time Taken: 00:03 在工作目录 d:\tt 中生成了 hex 文件 first.hex 9

四 连接 AVR Studio 4 仿真 这里使用的是 AVR Studio 4.13 版本 运行时选择 first.elf 文件, 打开 选择仿真设备 AVR Simulator 和使用芯片 ATmega16 这时选的设备是 AVR Simulator, 即软件模拟仿真 您如果使用仿真器, 可以选择其他项, 目前常见的仿真器一般要选 JTAG ICE 项 10

现在您可以进行仿真调试了 五 常用函数介绍 1 EEPROM 访问函数在使用前应包含头文件 #include <avr\eeprom.h> int eeprom_is_ready(): 宏定义,EEPROM 准备好 (EECR=0) 返回非, 否则返回 0. unsigned char eeprom_read_byte(unsigned int addr): 从 EEPROM 读取 addr 地址处的字节数据 11

unsigned int eeprom_read_word(unsigned int addr): 从 EEPROM 读取一个整数, 低字节地址 addr, 高字节地址 (addr+1) void eeprom_read_block(void *buf,unsigned int addr,size_tn): 从 EEPROM 的 addr 地址开始, 读取 n 个字节到 buf. void eeprom_write_byte(unsigned int addr,unsigned char value): 向 EEPROM 的 addr 地址处写 入字节数据 value void eeprom_write_word(unsigned int addr,unsigned int value): 向 EEPROM 的 addr 地址处写入 整数数据 value void eeprom_write_block(const void *pointer_ram,void *pointer_eeprom,size_tn) 2 数学函数 在使用前应包含头文件 #include <math.h>, 而且 math.h 数字函数库中定义的函数需要 libm.a 库文件的支持, 因此在连接时增加 -lm 参数, 或者 makefile 的 LDFLAGS= 后面追加 -lm 参数 M_PI: 常数, 为 3.141592653589793238462643 M_SQRT2: 常数, 为 1.4142135623730950488016887 double cos(double x): 返回以弧度形式表示 x 的余弦值 double fabs(double x): 返回 x 的绝对值 double fmod(double x,double y): 返回 x/y 的余数 double modf(double x, double *iptr): 把浮点数分解成整数部分和小数部分, 整数部分存到 pint 指向的变量, 小数部分应当大于或等于 0 而小于 1, 并且作为函数返回值返回 double sin(double x): 返回以弧度形式表示 x 的正弦值 double sqrt(double x): 返回 x 的平方根 double tan(double x): 返回以弧度形式表示 x 的正切值 double floor(double x): 返回不大于 x 的最大整数 double ceil(double x): 返回不小于 x 的最小整数 double frexp(double x,int *exp): 把浮点数 x 分解成数字部分 y( 尾数 ) 和以 2 为底的指数 n 两个部分, 即 x=y*2ⁿ,y 的范围为 0.5 y 1,y 值被函数返回, 而 n 值存放在 prxp 指向的变量 中 double ldexp(double x,int exp): 返回 x*2 exp double exp(double x): 返回以 e 为底 x 的幂, 即 e x double cosh(double x): 以弧度形式返回 x 的双曲余弦值 double sinh(double x): 以弧度形式返回 x 的双曲正弦值 double tanh(double x): 以弧度形式返回 x 的双曲正切值 double acos(double x): 以弧度形式返回 x 的余弦值 double asin(double x): 以弧度形式返回 x 的正弦值 double atan(double x): 以弧度形式返回 x 的正切值 double atan2(double x,double y): 返回 y/x 的反正切, 其范围在 -π~π 之间 double log(double x): 返回 x 的自然对数 double log10(double x): 返回以 10 为底的对数 double pow(double x,double y): 返回 x y 值 int isnan(double x): 如果 x 为非负数 (NAN, 值为 0xffffffff), 返回 1, 否则返回 0 int isnaf(double x): 如果 x 的值为正溢出 ( +INF, 值大于 0x7f800000) 和负溢出 ( -INF, 值小于 0xff800000) 则返回 0, 否则返回 1 12

double strtod(const char *s,char **endprt): 将 ASCII 字符串转换为 double 数 double square(double x): 返回 x 的平方根 double inverse(double x): 返回 1/x 3 看门狗定时器函数 在使用前应包含头文件 #include <avr\wdt.h> wdt_reset(): 复位看门狗 ( 喂狗 ) wdt_enable(timeout): 打开看门狗, 定时为 timeout wdt_sisable(): 关闭看门狗 4 延时函数 在使用前应包含头文件 #include <util/delay.h> _delay_us(double us); us 的精确延时, 参数为 double, 最长为 768 us _delay_ms(double ms); ms 的精确延时, 参数为 double, 最长为 262.14 ms 5 中断函数 在使用前应包含头文件 #include <avr/interrupt.h> sei();// 开中断 cli();// 关中断 中断函数格式为 : ISR( 中断向量名 ) { // 你的程序 } 例 : ISR(INT0_vect) { // 你的程序 } 中断向量名请在芯片的库文件中查找 例如 mega16 库文件在 C:\WinAVR-20071221\avr\include\avr\iom16.h /* External Interrupt Request 0 */ #define INT0_vect #define SIG_INTERRUPT0 _VECTOR(1) _VECTOR(1) /* External Interrupt Request 1 */ #define INT1_vect _VECTOR(2) #define SIG_INTERRUPT1 _VECTOR(2) 13