《单片机原理、应用与Proteus仿真》课件-第3章 单片机C51程序设计_第1页
《单片机原理、应用与Proteus仿真》课件-第3章 单片机C51程序设计_第2页
《单片机原理、应用与Proteus仿真》课件-第3章 单片机C51程序设计_第3页
《单片机原理、应用与Proteus仿真》课件-第3章 单片机C51程序设计_第4页
《单片机原理、应用与Proteus仿真》课件-第3章 单片机C51程序设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

3.1单片机C语言程序设计概述1、常用开发语言比较汇编语言:代码执行效率高;占用存储空间少;可读性差,调试、维护困难;可移植性差。C语言:可读性强;编程及调试效率高;函数结构的程序,结构规范易于移植;库函数包含许多标准子程序,可直接调用,开发周期缩短;寄存器的分配、存储器的寻址以及数据类型等细节可由编译器来管理。2、KEILC51开发环境简介

Keilsoftware公司提供的KeilC集成开发环境是目前较为流行的单片机开发平台;软件集编辑、编译、汇编、连接、仿真和调试等功能于一体,可覆盖整个程序开发过程。软件可支持多种公司开发的仿真器等硬件开发平台,支持纯模拟仿真和软硬件联机仿真。(1)软件安装和启动

主界面主要包括菜单栏、工具栏、工程窗口、编辑窗口和输出窗口,第一次启动时,窗口显示为空白。(2)新建工程

点击“Project→NewProject…”菜单,在弹出对话窗口中选择工程保存的路径,输入工程名称,如图3-2所示为新建工程对话框。点击“保存”后,弹出如图3-3所示的CPU选择对话框,进行CPU型号选择。在“Target1”前面的“+”,找到下一层“SourceGroup1”,单击鼠标右键选择“AddfiletoGroup‘SourceGroup1’”,为工程添加相关文件。(3)工程设置通过“Project→OptionsforTarget‘Target1’”菜单,对工程进行设置。(4)编译连接

工程的编译和连接可以通过如图所示为编译连接工具栏和系统菜单实现。3.2C51程序设计基础

1、C51中的数据类型(1)字符型char

数据长度一个字节,定义字符数据的变量或常量。无符号字符类型unsignedchar:数值范围是0~255。有符号字符类型signedchar:最高位表示符号,负数用补码表示,数值范围是-128~+127,(2)整型(int)

int类型数据长度两个字节,通常用于定义处理双字节的变量或常量:无符号整型unsignedint:用两字节中所有的位来表示数值,表达的数值范围是0~65535。有符号整型signedint:字节中最高位表示数据的符号,负数用补码表示,表示的数值范围是-32768~+32767,该类型为默认类型。(3)长整型(long)该类型数据长度4个字节,其他合整型数据类似。(4)浮点型(float)

float类型数据长度是四个字节,通常用于定义需要进行复杂的数学计算的变量或常量。浮点类型带有小数位。(5)指针型(*)指针本身是一个变量,其内容为数据在存储器中的存储地址。C51中,指针长度一般为1~3个字节。(6)位类型(bit)

bit类型是C51的扩展类型,可定义位变量,取值是1个二进制位,不是“1”就是“0”。(7)特殊功能寄存器(sfr)

sfr类型是C51的扩展类型,占用1个内存单元,值域为0~255。使用它能访问51单片机内部的所有特殊功能寄存器。例如:

sfrP0=0x80;//定义P0口,端口地址为80HP0=0xff; //P0口输出逻辑“1”(8)16位特殊功能寄存器(sfr16)

sfr16类型是C51的扩展类型,用于描述16位的特殊功能寄存器。例如:

sfr16DPTR=0x82;//定义DPTR地址为82HDPTR=0x1234; //给DPTR赋值(9)特殊功能位(sbit)

sbit类型是C51的扩展类型,占用1个二进制位,值为“0”或“1”,使用sbit能声明可位寻址的特殊功能寄存器中的位,注意不要和bit功能混淆。如:

sbitP0_0=0x80;//定义P0.0的位地址为80H

以上为C51中最常用的基本数据类型,除此之外,还有数组结构以及枚举等扩展数据类型,由于篇幅限制,不再一一介绍2、C51中常量和变量(1)常量(不需要改变大小的场合)常用整型、浮点型、字符型、字符串型和位型。常量的定义

宏定义(#definePORTA0x7E;不占用任何存储空间)

const关键字定义(constbitds=1;

RAM中)

code关键字定义(codeunsignedcharb=‘b’;

ROM中)(2)变量变量值会不断变化,必须先用标识符定义变量名,指出数据类型和存储模式,以便分配相应的存储空间。格式[存储种类]

数据类型

[存储器类型]

变量名

四种存储种类:缺省为自动自动(auto)外部(extern)静态(static)寄存器(register)。六种存储器类型:定义数据存储类型的一般原则:

尽量选择内部直接寻址的存储类型data,然后选择内部间接寻址的存储类型idata。对于经常用到的变量要使用内部数据存储器,只有当内部数据存储器不能满足要求的情况下才使用外部数据存储器。选择外部数据存储器可先选择pdata类型,最后选用xdata类型。3、C51中的运算符

3.3单片机硬件资源的C51访问1、存储器的访问可以利用绝对地址访问头文件“absacc.h”中的函数来对不同的存储区进行访问。#include<absacc.h>

//包含头文件,不可缺少#definePort1 XBYTE[0xffd0] //定义外部I/O口Port1的地址为xdata区的0xffd0#definedram1 XBYTE[0x1000] //定义dram1的地址为外部RAM的1000H#definedcode1 CBYTE[0x0100] //定义dcode1的地址为code区的0100H#defineram1 DBYTE[0x20] //定义ram1的地址为data区的20H地址2、特殊功能寄存器的访问sfr

特殊功能寄存器名=特殊功能寄存器地址常数;sfr P0=0x80;

//定义P0端口,其地址为80Hsfr16特殊功能寄存器名=特殊功能寄存器地址常数;Sfr16DPTR=0x82;

//定义DPTR,低8位地址为82H,高8位83H3、可寻址位的访问

(1)sbit

位变量名=位地址;

sbit P0_1=0x81; (2)sbit

位变量名=特殊功能寄存器名^位位置;

sfr P0=0x80;

sbit P0_1=P0^1;(3)

sbit

位变量名=字节地址^位位置;

sbit P1_1=0x90^1; (4)访问一般位变量(位寻址区)用bit定义位变量要求存储器类型限制为data,bdata

或idata;

bit定义位变量时,不需要指定地址,编译器会自动的将位地址分配在00H~7FH区域中。4、并行I/O口的访问

4个并行口采用定义SFR的方法进行访问。外部I/O接口采用外部RAM方法访问。3.4C51和汇编语言混合编程可通过语句“#pragma

asm”和“#pragma

endasm”包含嵌入的汇编语言程序段。例如:#include"reg51.h"bitled;main(){while(1){led=!led;

#pragma

asm

nop

nop

#pragma

endasm}}“GenerateAssemblerSRCFile”和“AssembleSRCFile”分别选中,“LinkPublicOnly”选项取消。3.5知识与拓展1、C51延时时间计算方法外部函数调用方法

_nop_();指令直接延时方法for(i=0;i<20;i++)嵌套汇编程序方法#pragma

asm…….#pragma

endasm2、C51访问连续外部RAM区域的方法通过关键字来定义不同变量类型指针的方式来访问外部RAM,并进行连续区域的操作。

如:unsignedcharxdata*addr1;unsignedchardata*addr2;例:用C51编程实现将外部RAM4000H开始连续的8个单元数据依次存入内部RAM30H开始的单元中。unsignedcharxdata*addr1;unsignedchardata*addr2;

温馨提示

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

评论

0/150

提交评论