ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:149.95KB ,
资源ID:11844159      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11844159.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(protel第五讲.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

protel第五讲.docx

1、protel第五讲第五讲 单片机C语言(1)1. C程序特性C程序是由函数构成的。一个C源程序至少包括一个函数,一个C源程序有且只有一个名为main( )的函数,也可能包含其它函数。一个C语言程序总是从main函数开始执行的,不管其物理位置如何。C语言区分大小写,必须遵守这一规定。C语言书写的格式自由,可以在一行写多个语句,也可把一个语句写在多行。每个语句和定义的最后必须有一个分号,分号是C语句的必要组成部分。可以用/* */的形式为C程序的任何一部分做注释,Keil C可以用“/”注释语句。2. 单片机C语言开发环境的建立(1)Keil 软件目前,常用的单片机C语言编程环境是Keil软件,由

2、德国Keil公司出品的一个商业软件,它是目前流行的用于开发51系列单片机的软件。其特点有:其集成开发环境uVision IDE 包括一个工程管理器、一个源程序编辑器和一个程序调试器,其功能强大,可以自动完成编译、汇编、链接程序操作。C51编译器 Keil C51编译器遵循ANSI C语言标准,并增加了一些支持80C51系列单片机结构的特性。A51 汇编器 Keil A51汇编器支持80C51及其派生系列的所有指令集。LIB 51库管理器BL51 链接器/定位器OH51 目标文件生成器Monitor-51 调试器(2)Keil 软件的使用a. 源文件的建立uV2内集成一个文本编辑器,源文件可以由

3、此直接输入。选择File-New,在工程管理器的右侧打开一个新文件输入窗口,在该窗口中输入源程序,完了保存文件,文件名必须加上扩展名,汇编程序以”.ASM”或”.A51”为扩展名,C语言以”.C”为扩展名。b.工程的建立Keil 使用工程(project)概念,将所需设置的参数和所有文件都加在一个工程中,只能对工程进行编译、链接等操作,而不能对单一的源程序操作。选择Project-New Projectc. 工程的设置在uVision IDE界面中单击工程管理窗口中的Target1,然后选择ProjectOption for target target1,打开工程设置对话框。Target选项卡

4、 Xtal:Xtal后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值。Memory Model:用于设置RAM使用情况Small 所有变量都在单片机的内部RAM中。Compact 可以使用一页外部扩展RAM。Large 可以使用全部外部扩展RAM。Code Rom Size:用于设置ROM空间的使用Small 只用低于2KB的程序空间。Compact 单个函数的代码量不能超过2KB,整个程序可以使用64KB程序空间。Large 可用全部64KB空间。Use onchip ROM:用于确认是否使用片内ROM。Operating:用于操作系统的选择。Offchip Code memo

5、ry:用以确定系统扩展ROM的地址范围。Off-chip Xdata memory:用于确定系统扩展RAM的地址范围。Code Banking:设置代码分组情况,必须根据硬件决定。Output选项卡Create Hex File:用于生成可执行代码文件,该文件用编程器写入单片机芯片,文件格式为Intel HEX,文件扩展名为.HEX。默认情况下该项未被选中,如果要写片做硬件实验,必须选中此项。Debug Infromation:用于产生调试信息。Browse Information: 用于产生浏览信息。Select Folder for Objects:用于选择最终目标文件所在文件夹,默认是与

6、工程文件在同一个文件夹中。Name of Executable:用于指定最终生成的目标文件名字,默认与工程名字相同。Create Library:用于确定是否将目标文件生成库文件。Listing选项卡用于调整生成的列表文件选项,在汇编或编译完成后将产生(*.lst)列表文件,在链接完成后也将产生(*.m51)列表文件。C51 选项卡用于对Keil C51编译器的编译过程进行控制。其中较常用的是Code Optimization选项,其Level下拉列表框用于优化等级设置。Debug选项卡用于设置调试方式。Utilities 选项卡用于设置Flash编程器。(3)编译、链接编译或汇编当前文件:根

7、据当前文件是汇编语言程序文件还是C语言程序文件,使用A51汇编器对汇编语言源程序进行汇编处理,或使用Cx51编译器对C语言程序文件进行编译处理,得到可浮动地址的目标代码。建立目标文件:根据汇编或编译得到的目标文件,并调用有关库模块,链接产生绝对地址的目标文件。重建全部:对工程中的所有文件进行重新编译、汇编处理,然后进行链接产生目标代码。停止编译:在建立目标文件的过程中,可单击该按钮停止这一工作。下载到Flash ROM:使用预设的工具将程序代码写入单片机的Flash ROM中。设置工程:用于对工程进行设置。3.数据的类型、运算符与表达式(1)常量与变量在程序运行过程中,其值不能被改变的量称为“

8、常量”;在程序运行过程中,其值可以改变的量称为“变量”。例 在P1口接有8个LED,要求点亮P1.0所接LED。#define Light0 0xfe#include “reg51.h”void main( ) P1=Light0; 分析:程序中用”#define Light0 0xfe”来定义符号Light0,以后程序中所有出现Light0的地方均会用0xfe来替代。该程序执行结果就是P1=0xfe,即接在P1.0引脚上的LED被点亮。归纳:使用符号常量的好处:含义清楚。在需要改变一个常量时能做到“一改全改”。(2)整型数据整型常量:十进制整数、八进制整数、 十六进制整数。整型变量的分类:

9、整型变量的数据类型C语言中的变量须先定义,后使用。定义整型变量的方式为: 修饰符 变量名整型数据在内存中的存放形式:Keil C规定使用2个字节表示int型数据,在内存中以补码形式存放。(3)字符型数据字符型常量:C语言中的字符型常量是单引号括起来的一个字符。如a,A字符型变量:一个变量只能存放一个字符字符型变量的定义形式为:修饰符 变量名 如 char c1, c2;字符型数据在内存中的存放形式:是将字符的ASCII码放到存储单元。(4)实型数据实型常量(实数):十进制小数形式、 指数形式。 如 123e3实型变量:其定义形式为; 修饰符 变量名定义实型变量的修饰符是float 和doubl

10、e。如 float f1; double f2;实型数据在内存中的存放形式:一个实型数据一般在内存中占4字节(32位),按指数形式存储。其中1位符号位,8位指数位,23位尾数。(5)Keil特有的数据类型位型数据:使用一个二进制位来存储数据,其值只有0和1两种。如 bit flag=0; /定义一个位变量所有的位变量存储在80C51单片机内部RAM中的位寻址区。由于80C51只有16字节的位寻址区,所以程序中最多只能定义128个位变量。sfr型数据80C51内部有一些特殊功能寄存器sfr,为此C51增加了sfr型数据,增加了sfr, sfr16 和sbit这3个关键字。sfr16是用来定义16

11、位特殊功能寄存器,标准80C51单片机只有一个16位SFR,即DPTR,其定义形式为:sfr16 DPTR=0x82;(6)80C51中数据的存储位置80C51单片机的存储器类型较多,有片内ROM、片外ROM、片内RAM、片外RAM。其中,片内RAM又分为低128字节和高128字节,高128字节只能用间接寻址方式来使用,低128字节又分位寻址区和工作寄存器区。程序存储器在C51中,使用关键字code来说明存储于程序存储器中的数据。如 code int x=100; /此时x的值在程序运行中不能修改。内部数据存储器C51使用3个新的关键字来表示内部RAM中的数据,即:data, idata 和

12、bdata用data定义变量用于存取前128字节的内部RAM,用idata定义变量用于全部256字节。如果定义的变量与位操作有关,要使用bdata来定义,用bdata定义的变量将全部放在0x20开始的地址空间。外部数据存储器C51提供了2个关键字用于对外部RAM的读/写操作,即:pdata和xdata。pdata用于只有一页(256字节)的情况。(7) 运算符C运算符分类表-取模运算符或求余运算符,其两侧均应为整型数据,其结果也为整数。!-逻辑非 &-逻辑与 |-逻辑或&-按位”与“ |-按位”或“ -按位”异或“ -按位取反 -位右移例1 若a=0x4b, b=0xc8, 分别求 a&b,

13、a|b, ab, a, a2的值。a&b: 原则:“有0为0,全1为1” a|b: 原则:“有1为1,全0为0”ab: 原则:“相同为0,不同为1”a: 原则:“0变1,1变0”a2: 原则:“移出位丢失,后面用0填充”自增减运算符+i 先i值加1,再进行运算 i+ 先运算,再i值加1- i 先i值减1,再进行运算 i - - 先运算,再i值减1关系运算符 小于 大于 = 大于等于 = 等于 != 不等于前4种关系运算符高于后2种关系运算符。逻辑运算符& 逻辑“与” | 逻辑“或” ! 逻辑“非”运算符优先次序关系运算符的优先级低于算术运算符,高于赋值运算符(=)。C语言逻辑运算符与算术运算符

14、、关系运算符、赋值运算符之间的优先级为:逻辑非(!)优先级最高,算术运算符次之,关系运算符再次之,”&”和”|”又次之,赋值运算符最低。条件运算符一般形式为: 表达式1? 表达式2:表达式3例: max=(ab)?a : b;其执行过程为:如果(ab)条件为”真”,则条件表达式取值a;否则取值b。4. C51流程与控制C语言是一种结构化的编程语言,由若干个模块组成,每个模块包含若干个基本结构,而每个基本结构可以有若干条语句。C语言有3种基本结构:顺序结构;选择结构;循环结构;(1)顺序结构程序是最基本、最简单的编程结构。程序由低地址向高地址顺序执行指令代码。(2)选择结构程序选择语句ifif语

15、句是用来判定所给定的条件是否满足,根据判定的结果(“真”或“假”)执行给出两种操作中的一种操作。其3种基本形式如下:if(表达式) 语句描述:如果表达式为“真”,则执行语句;否则执行if语句后面的语句。如 if(a=3) b=0;if(表达式) 语句1 else 语句2描述:如果表达式的结果为“真”,则执行语句1;否则执行语句2。如 if(a=3) b=0; else b=100; if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else if (表达式m) 语句m else 语句n描述:如果表达式1的结果为“真”,则执行语句1,退出if

16、语句;否则去判断表达式2,. ,最后,如果表达式m也不成立,则执行else后面的语句n。else 和语句n也可省略。switch/case 语句switch 语句的一般形式如下:switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1说明:switch后括号里的表达式可以是任何类型。若表达式的值与某一个case后面的常量表达式相等,就执行此case后面的语句;若所有case中常量表达式的值都没有与表达式相匹配,就执行default后面的语句。每一个case中常量表达式的值必须不相同。各个case和defa

17、ult的出现次序不影响执行结果。执行完一个case后面的语句后,系统不会自动跳出switch,转而去执行其后面的语句;而是紧接着执行这个case后面的语句。(3)循环结构程序构成循环结构主要有while,do-while和for等常用语句。while循环语句while语句用来实现“当型”循环结构,其一般形式为:while (表达式) 语句当表达式为非0(“真”)时,执行while语句中的内嵌语句。即先判断表达式,后执行语句。dowhile循环语句用来实现“直到型”循环,是先执行循环体,后判断循环条件是否成立。其一般形式为:do 循环体语句while(表达式)for 循环语句for语句既可用于循

18、环次数已确定的情况,也可用于循环次数不确定而只给出循环结束条件的情况。for语句的一般形式为:for(表达式1;表达式2;表达式3) 语句for循环语句执行过程为:先求解表达式1。求解表达式2,其值为“真”时,则执行for语句中指定的内嵌语句(循环体),然后执行第步;如果为“假”,则结束循环,转到第步。求解表达式3。转回上面的第步继续执行。退出for循环,执行循环语句的下一条语句。for语句典型的应用是如下形式:for(循环变量初值;循环条件;循环变量增值) 语句如 int i , sum; sum=0; for(i=0;i0; DelayTime - -) for ( j=0; j125; j+ ) ; void main( ) unsigned char OutData = 0xfe; while( 1 ) P3 |= 0x3c; while( ( P3 |0xfb ) != 0xff ) P1=OutData; OutData= _crol_(OutData,1); /循环左移 mDelay(1000); /延时1000ms P1 = 0ff ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1