这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » AVR大学之小学篇_AVR新手入门之前

共17条 2/2 1 2 跳转至
院士
2010-02-10 10:05:10     打赏
11楼
C语言入门知识

本页关键词:avr单片机学习    avr C语言入门知识 c语言学习

1、基本语法介绍

一个简单的AVR程序

#include <iom16v.h> 
#include <macros.h>

void main()
{
 PORTA = 0x0F; //给PA口赋值,让PA口低四位为1,高四位为0
 while(1)
  ;
}

本程序的作用是把PA口的值设为0x0F。

1、程序中以井号开头的语句#include <iom16v.h> 是包含特定的头文件,叫预处理指令,i0m16v表示使用的是mega16,macros.h包含了必须的avr操作命令。

2、C语言的程序是由函数构成的,如上面的那个void main(),前面的void表明函数没有返回值。每一个c程序里面里有且只有一个main()函数,系统启动后就从main()开始运行。

3、函数内部的内容以大括号“{”和"}"扩起来,每句语句用分号“;”结束,若分号前面没有内容,编译之后也无任何操作语句。

4、C程序中可以加入一些说明文字,单行以双斜扛“//”开始,如果是多行,就用"/*"开始,以“*/”结束,如 /*注释 */ 。

5、函数可以有参数,一律放在小括号内。

6、利用C语言可以轻松的对AVR的设备组件进行操作,如程序中的PORTA = 0x0F;

7、任何一个AVR C程序都必须是一个无限循环,否则程序会沿着程序存储区一直运行,直至溢出程序存储区,程序从头运行。

2、AVR C语言的基本字符、标识符和关键字

avr c语言和普通c语言一样,基本字符有阿拉伯数字0~9;大小写拉丁字母a~z和A~Z;一些选定的可打印字符,如"~!@#¥%^&*()_-+={}[],.;<>/?|\";空格符、换行符和制表符这三种空白符起到分割成分和编排格式的作用。

对系统对象命名,称为标识符。标识符由数字、字母、下划线组合的字符串序列构成,字母区分大小写。如下都是合法的表示符:

AVR_IO PORTA CSR IT0 temp1

注意:不能以数字开头的字符串做标识符。比如 1abc 是不合法的。

C语言的合法标识符有一部分被编译器保留作为特殊用途,这样的标识符称为关键字。C语言的关键字有:(以字母先后为序)

auto break case char const continue default do double else enum extern float for goto if int long register return short signed

sizeof static struct switch typedef union unsigned void volatile while

注意,原则上除关键字外,可以使用任何有效的标识符。但实际上,根据系统不同,有些特殊标识符具有特殊含义,不应被使用。在AVR里,一些端口的名称、寄存器的名称已经被系统定义,最好不要改变其定义,如PORTA DDRA TIMASK 等。

3、数据类型

C语言严格规定数据类型,AVR资源有限,如果数据类型选用不好,资源很快就会耗尽。如,尽量不要使用浮点类型的运算,1.2*1.2的浮点数运算至少要占用mega16的百分之十以上的空间。

选择数据类型时需要注意不要操作数据能表示的范围,比如要表示60000,就不能用char,必须用int。

整数类型的类型名前可加修饰符unsigned和signed,表示无符号数和有符号数,其中unsigned可以省略,默认表示无符号数,一般来说,尽量使用无符号数可以节约资源。

以下三种为整数类型:

1、整数类型:一般类型的整型 int,16位二进制编码,表示的数0~65536,及216。有符号类型,signed int 表示范围-32768~32767。

2、长整型类型:长整型(long int)类型的二进制编码是32位。有符号的长整型类型(long)表示范围-231~231-1;无符号的类型(unsigned long)的表示范围为0~232-1。

3、超长整数类型:超长整数类型(long long)的二进制编码是64位。有符号的长整型类型(long)表示范围-263~263-1;无符号的类型(unsigned long)的表示范围为0~264-1。

以下为实数类型(浮点数类型):

1、单精度浮点数类型:float,用32位二进制数表示。

2、双精度浮点数类型:long double,用64位二进制数表示。

字符类型和字符串

字符类型的类型名为char,目前最常用的是ASCII字符集,其中字符包扩所有的大小写字母,数字,常用字符等共计128割字符。扩展的ASCII字符集包括256个字符,字符类型占用一个字节。

一些特殊的字符串的表示方法:以反斜扛加特定字符。如 ' \n ' 回车符; ‘ \" ’ 双引号; ‘ \' ’ 单引号字符; ‘ \\ ’ 反斜杠。

无符号的字符类型: char 表示范围 0~255。

有符号的字符类型: signed char表示范围-128~127。


院士
2010-02-10 10:05:37     打赏
12楼
怎样高效快速学习AVR单片机?

怎样成为单片机高手,下面是本站的建议学习的流程。

一、购买一两本书,笔者推荐两本 《单片机 C语言开发入门指导》,《高档8位单片机ATmega128原理与开发应用指南》。买书的目的:看书大体了解单片机的结构和工作原理,了解基本概念和基础知识,其实新手是不可能完全看懂一本书的,如果你能,你已经是高手了,所以不要期望一字一句去搞懂书上说的到底是什么东西。看完书对相关内容有个概念性的了解就可以了。

二、开始动手配置开发环境,动手去做,实践出真知。笔者推荐使用ICC AVR + AVR studio +AVR mega16 + JTAG&ISP下载仿真器的组合。抄几个程序,增强一下自己的信心,看到自己的程序在单片机上跑起来,那种愉悦的心情是和用软件仿真仅仅看到IO口的变化是截然不同的,不在一个层次。(关于软件硬件开发环境的选择和环境如何配置后面都有讲述)

三、抄过一段时间的程序后,你需要自己动手写程序,如果你是新手,你需要一点一点做起,从IO口操作,到定时器,到数码管,AD转换,键盘,中断,LCD等等,通过实际写程序去了解芯片的工作情况,那样你将进步得更快。

四、想一想自己要做个什么东西,围绕一个主题去展开学习,去查相关的资料。事件驱动的学习效率是最高的,你可以更深层次的理解应该学习什么,怎样的学习才有效,学到的内容在实际操作中有用。

五、关于开发板的选择

  1. 一个成功的男人后面有一个能干的女人;
  2. 一个失败的男人后面有一群妩媚的女人;
  3. 一个成功的单片机高手后面有一块优秀的开发板;
  4. 一个失败的开发板后面有一群劣质的开发板。

选择一个好的开发板是非常重要的,要根据实际情况,如果你是单片机新手,建议你购买有个功能全面,外围多的开发板系统的学习,如果你是从其他单片机转型过来,建议你购买一个最小系统板就可以,还有一个方法就是自己用万用板焊接学习板,不过比较费时间,而且出了问题,不知道到底是程序不行还是自己的硬件不行,就会出现问题。


专家
2010-02-10 10:47:25     打赏
13楼
很详细!

高工
2010-02-16 19:54:09     打赏
14楼
关于AVR的介绍很详细,一直听人说AVR功能很强也很方便,只是自己一直没有用过

菜鸟
2010-03-13 18:37:30     打赏
15楼
还是做51吧。刚刚接触这个方面的东西

菜鸟
2010-04-02 13:30:42     打赏
16楼
恩。。来看看。

菜鸟
2015-07-25 16:38:44     打赏
17楼
楼主花了不少心思,虽然现在才看到,但是会加油学的。

共17条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]