3_C语言基本结构和AVR单片机IO口介绍ppt课件_第1页
3_C语言基本结构和AVR单片机IO口介绍ppt课件_第2页
3_C语言基本结构和AVR单片机IO口介绍ppt课件_第3页
3_C语言基本结构和AVR单片机IO口介绍ppt课件_第4页
3_C语言基本结构和AVR单片机IO口介绍ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简单跑马灯的设计AVR单片机的C言语编程Embedded C Programming 1. C言语体系构造2. 变量和常量3. AVR单片机I/O端口特性简单跑马灯的设计Flash LED Design设计内容:共有8个LED需求每隔500MS同时点亮或熄灭,LED接在PORTA口,输出高电平灯亮 ,输出低电平常灯灭。要求1:自行编程。要求2:采用自动引导程序进展配置生成软件初始化代码框架,然后填入本人的程序代码。经过CodeVision编译,留意时钟频率。分组轮番闪烁的跑马灯实训1:要求按照如下所示的方式1点亮,间隔500ms后,再换成方式2点亮,依此类推,周而复始。 方式1: 方式2:要求

2、:采用自动引导程序进展配置生成软件初始化代码框架,然后填入本人的程序代码。要求设置时钟频率为2M。下载程序时要求采用内部RC振荡器的熔丝配置。AVR的IO端口特性 Input & Output Port设置数据方向部分电路数据并行输出部分电路数据并行输入部分电路 8位的并行输入、输出接口。并行输入:经过一条输入指令可以一次读出8个引脚的形状,组成一个字节的数据。普通用来采集外部数据。并行输出:经过一条输出指令可以将一个字节的数据送到8个引脚上。普通用来输出控制信息。 AVR的I/O口是真正的I/O口,能正确反映I/O口的真实情况。I/O口有输入/输出, 三态高阻输入,也可设定内部拉高电阻作输入

3、端的功能,便于作各种运用特性所需(多功能I/O口)。但是运用时,必需进展方向设置,是作为输入,还是作为输出接口运用。I/O接口及其运用AVR的IO端口特性 Input & Output Port每个端口为具有可选上拉电阻的双向I/O端口。每个并行端口有三个相关的I/O存放器:数据方向存放器DDRx数据存放器PORTx端口输入引脚存放器PINx其中x对应A、B、C、D四个端口 当端口的某位DDRxn=1 时,那么此位定义为输出方式。且输出值等于PORTxn。其中n代表位的序号当端口的某位DDRxn=0 时,那么此位定义为输入方式。 不论如何配置DDRxn,都可以经过读取PINxn存放器来获得引脚

4、电平。为可读/写的存放器为只读存放器AVR的IO端口特性 Input & Output Port 一切AVR I/O端口都具有真正的读修正写的功能:可以经过软件恣意设置任何一位的输入、输出方式。并且输出缓冲器具有对称的驱动才干,可以输出或吸收大电流,直接驱动LED。 一切的端口引脚都具有与电压无关的上拉电阻。并有维护二极管与VCC 和地相连。 假设有引脚未被运用,建议这些引脚赋予一个确定电平,使能内部上拉电阻。 复位后即缺省配置方向:输入 PIN为物理引脚上拉:封锁 此时引脚的形状不确定上拉转换DDxPORTxPINx物理引脚上拉方向:输入 PIN可输出电流上拉:ON 此时引脚的形状可正确读入

5、?0111口线输出DDxPORTxPINx物理引脚上拉方向:输出 PIN反映输出真实情况上拉:OFF11111111AVR单片机I/O口是真正的I/口仿真器编程下载与熔丝配置的运用Program Download& Fuse Config JTAGICE 可以对支持的器件的FLASH、EEPROM、熔丝位和加密位编程,可以执行芯片擦除、编程、校验、加密的操作 AVRStudio中点击命令: TOOLS-Program AVR/CONNECT 或TOOLS-Program AVR/AUTO CONNECT 留意:假设正在调试,那么也必需点击DEBUG-Stop Debugging 来退出仿真调试

6、程序对JTAGICE 的占用。 仿真器编程下载与熔丝配置的运用Program Download& Fuse Config Program 选项卡留意,只需带JTAG口功能的AVR才支持JTAGICE 编程 FLASH缓冲区和EEPROM缓冲区可以支持的文件格式:Atmel .rom和.eepIntel HEX二进制.bin仿真器编程下载与熔丝配置的运用Program Download& Fuse Config Fuse 选项卡:功能熔丝位的配置:BOOT区熔丝位的配置:支持引导加载程序的芯片有更多的平安位,可以锁定存储器中的引导加载区。FLASH锁定位:选择芯片编程运用的平安级别。留意,请保证

7、“JTAG Interface Enable一项一直有效,否那么目的芯片就将失去与JTAGICE 的通讯才干,只需经过并行编程的方法才干重新激活该熔丝位 4. Lock&Bits 选项卡加密锁定位的设置留意,假设想要将加密位删除,那么只能对芯片做擦除操作。仿真器编程下载与熔丝配置的运用Program Download& Fuse Config 实战演练实训2:如下图电路,要求按照如下所示的方式1点亮,间隔0.2s后,再换成方式2点亮,依此类推,周而复始。 方式1: 方式2:设计要求:采用自动引导程序进展配置生成软件初始化代码框架,然后填入本人的程序代码。经过CodeVision编译,要求下载程

8、序时要求采用外部时钟的熔丝配置。 led2.c运用延时函数的详细引见Delay Function运用延时函数前要用#include预处置命令。下面延时函数运用程序循环产生延时,调用它们之前要封锁中断,否那么会比预期的延时要长。要在CodeVisionAVR软件的ProjectConfigureC Compiler菜单中设定准确的时钟频率。并同程序下载时设置的熔丝位一致。本目的板的时钟只能设置成内部RC和外部晶振两种方式。主要的延时函数:void delay_us(unsigned int n) 实现n个微秒的延时,其中n必需是常数表达式。void delay_ms(unsigned int n

9、) 实现n个毫秒的延时,其中n必需是常数表达式。此函数会每毫秒清一次看门狗。实战演练实训3:如下图电路,要求按照如下所示的方式1点亮,每次点亮两只灯,间隔0.2s后,再换成方式2点亮相邻的两只,依此类推,四次后,再回到第一次,周而复始循环50次。要求分别用while,do-while, 语句完成 方式1: 方式2: 方式3: 方式4:C言语体系构造是函数构造 Embedded C Structure/*This program was produced by theCodeWizardAVR V1.24.7e StandardChip type : ATmega16Program type :

10、 ApplicationClock frequency : 8.000000 MHzMemory model : SmallExternal SRAM size : 0Data Stack size : 256*/ LED controller program注释部分:由“/* */配对括起来的部分内容,可以包括多行。注释部分:由“/引导的一行内容。C言语体系构造是函数构造 Embedded C Structure#include #include/ Declare your global variables herevoid main(void).void function(void).预编

11、译命令:文件包含指令函数头函数体主函数main( ):C程序总是从main( )函数开场执行。而不论其在程序中的位置如何。当主函数执行终了时,亦即程序执行终了。定义了一些与I/0接口有关的特定变量,他们对应单片机呢部的特殊功能存放器,用大写字母书写。C言语构造风格特点 Embedded C Structure Character1.习惯用小写字母,大小写敏感2.一行上可以写几条语句,一条语句也可以写在几行上。可运用空行和空格3.C程序由语句组成,用“;作为语句终止符4. 书写上留意运用缩进格式。5.程序由一个或多个函数组成,必需有且只能有一个主函数main()6.程序执行从main开场,在ma

12、in中终了,其它函数经过嵌套调用得以执行。7. 允许运用注释。 C言语的注释格式为: /* */技巧:为防止脱漏必需配对运用的符号,例如注释符号/* */ 、函数体的起止标识符花括号 、圆括号等等。void main(void)/ Port A initialization. DDRA=0 xFF; PORTA=0 xFF; . while (1) / Place your code here PORTA=0 xFF; delay_ms(500); ;变量与变量名 Variable Concept and Variable Identifier变量:程序运转过程中其值可以改动的量,系统为程序中

13、的每一个变量开辟一个存储单元。变量的两个要素:变量名和变量值变量命名遵照标识符命名规那么,在程序中,经过变量名来援用变量的值。标识符:用来标识变量名、符号常量名、数组名、函数名、文件名的有效字符序列。标识符定义的本卷须知:字母或下划线开头,后跟字母、数字和下划线组成。不能和系统运用的名字关键字冲突。长度无一致规定,许多系统取8个字符。但目前并不如此。编程技巧:运用见名知意的字符串命名变量标识符。C言语的根本数据类型以及变量的定义 Variable Define根本数据类型:整型、实型、字符型C程序中用到的每一个变量都要指定它们所属的数据类型。 其缘由在于:不同类型的数据在内存中占据不同长度的存

14、储区,而且采用不同的表示方式。一个数据类型对应着一个值的范围并且对应一组允许的操作。一切的变量一定要“先定义、后运用:Int a,b,c; /*指定a,b,c为整型变量*/float x,y; /*指定x,y为单精度实型变量*/double z; /*指定z为双精度实型变量*/char c1,c2; /*指定c1,c2为字符型变量*/变量的内存存储情况 Variable Range常量 Constant常量:1.整型常量2.实型常量3.字符型常量4.字符串常量5.符号常量6.flash常量整型常量三种方式表示:十进制:如 123 60 0八进制:以0开场,如 0123十六进制:以0 x开场,如

15、0 x123实型常量小数方式: 如 123.0 .123 0.0 12.5指数方式:如123e2 123E2字符常量:单引号括起来的一个字符。如: a 字符常量的值是一个数字值。如字符常量 0 ,其ASCII为48,所以存储的实践值为48。字符常量可以象整数一样参与运算。字符串常量:双引号括起来的字符序列。 如“Hi,AVR,0等字符串在存储时末尾被自动加上 字符0字符常量与只包含一个字符的字 符串常量的区别符号常量:用一个标识符代表一个常量#define PI 3.14159符号常量本义字符:本义字符功能 ASCII记号 本义字符 功 能 ASCII记号 a 响铃 BEL 反斜杠字? b 退

16、格 BS 单引号字符 f 走纸换页 FF “双引号字符 n 换行 NL ? 问号 ? r 回车 CR ooo13位8进制数 ooo t 横向跳格 HT xhh12位16进制数 hh v 纵向跳格 VTFLASH常量:存储在程序存储区的常量Flash charhi,avr;算术运算符 Arithmetic OperationC言语提供了如下算术运算符:加法运算 减法运算 *乘法运算符除法运算符% 求余运算符,或称模运算符如: 4 % 20阐明:两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。假设参与运算的两个数中有一个数为实数,那么结果是实型。求余运算要求%两侧都是整型数据。赋值运算符

17、和赋值表达式Evaluation Operation & Evaluation Express简单的赋值运算符:复合的赋值运算符=+ =、-=、*=、%=、/= i + = 2 等价于 i = i + 2 a * = b + 5 等价于 a = a * (b + 5) x% = 3 等价于 x = x%3void main(void) / Port A initialization. DDRA=0 xFF; PORTA=0 xFF; . while (1) / Place your code here PORTA=0 xFF; delay_ms(100); PORTA=0 x00; delay

18、_ms(100); ; C程序的三种根本构造 C程序采用构造化的程序设计方法,程序由假设干个根本构造组成。每一个根本构造可以包含一个或假设干个语句。主要有三种构造:顺序构造:程序按照语句顺序进展执行。循环构造:当型循环构造:“先判别,再操作直到型循环构造:“先操作,再判别选择分支构造:while语句训练Cycle Structure Programmingwhile语句用来实现“当型循环,执行过程:首先判别表达式, 当表达式的值为真非0时,反复执行循环体。为假0时执行循环体外面的语句。循环体循环继续的条件表达式下一条语句非0真0假循环体语句组while执行过程格式:while循环继续的条件表达式 语句组; 花括号不能丢掉!请问:下述程序实现了什么功能?main( ) int i,sum=0; while(i=10) sum=sum+i; i+; do-while语句Cycle Structure Programmingdo-while语句用来实现“直到型循环执行过程:先无条件执行一次循环体,然后判别条件表达式,当表达式的值为真非0时,前往执行循环体直到条件表达式为假0为止。绝对不能少分号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论