单片机原理与实验指导 第5章 C51设计基础.ppt
《单片机原理与实验指导 第5章 C51设计基础.ppt》由会员分享,可在线阅读,更多相关《单片机原理与实验指导 第5章 C51设计基础.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5 用用C语言设计语言设计51程序程序 5.1 5.1 C51C51语言特点语言特点语言特点语言特点 C51C51吸取了汇编语言的精华吸取了汇编语言的精华吸取了汇编语言的精华吸取了汇编语言的精华提供了对位、字节及地址的操作,使程序可以直接对内存及提供了对位、字节及地址的操作,使程序可以直接对内存及提供了对位、字节及地址的操作,使程序可以直接对内存及提供了对位、字节及地址的操作,使程序可以直接对内存及指定寄存器进行控制;指定寄存器进行控制;指定寄存器进行控制;指定寄存器进行控制;吸取了宏汇编技术中的某些灵活的处理方法,提供宏代换吸取了宏汇编技术中的某些灵活的处理方法,提供宏代换吸取了宏汇编技术中
2、的某些灵活的处理方法,提供宏代换吸取了宏汇编技术中的某些灵活的处理方法,提供宏代换#define#define和文件蕴含和文件蕴含和文件蕴含和文件蕴含#include#include的预处理命令;的预处理命令;的预处理命令;的预处理命令;C51C51继承和发扬了高级语言的长处继承和发扬了高级语言的长处继承和发扬了高级语言的长处继承和发扬了高级语言的长处 C51C51的可移植性好的可移植性好的可移植性好的可移植性好 生成的代码质量高生成的代码质量高生成的代码质量高生成的代码质量高目前使用目前使用目前使用目前使用C51C51开发系统最流行的是开发系统最流行的是开发系统最流行的是开发系统最流行的是K
3、eilKeilC51C51软件平台软件平台软件平台软件平台5.2 标识符与关键字标识符与关键字 C51的标识符的标识符C51C51的标识符基本同标准的的标识符基本同标准的的标识符基本同标准的的标识符基本同标准的C C语言语言语言语言C51的关键字的关键字C51C51的关键字有的关键字有的关键字有的关键字有ANSICANSIC标准的关键字,见表标准的关键字,见表标准的关键字,见表标准的关键字,见表5151所示;所示;所示;所示;C51C51扩展的关键字,见表扩展的关键字,见表扩展的关键字,见表扩展的关键字,见表5252所示所示所示所示(这里略)这里略)这里略)这里略)。5.3 C51程序设计的基
4、本规则程序设计的基本规则5.3.1数据类型与存储模式数据类型与存储模式一、一、一、一、C51C51数据类型数据类型数据类型数据类型 无符号型(无符号型(无符号型(无符号型(unsignedunsigned)、有符号型()、有符号型()、有符号型()、有符号型(signedsigned)二、二、对对C51变量的字节长度说明变量的字节长度说明char占用占用1个字节个字节;int占用占用2个字节个字节;longint占用占用4个字节个字节;float占用占用4个字节个字节;*占用占用1到到3字节字节(地址地址);bit占用占用1位位(0或或1);sfr占用占用1个字节个字节(特殊功能寄存器特殊功能
5、寄存器);sfr16占用占用2个字节个字节(特殊功能寄存器特殊功能寄存器);sbit占用占用1位位(定义位用定义位用);三、变量与数据存储模式三、变量与数据存储模式 存储种类存储种类存储种类存储种类数据类型数据类型数据类型数据类型 存储器类型存储器类型存储器类型存储器类型变量名表变量名表变量名表变量名表;变量的变量的存储种类存储种类有四种:有四种:自动(自动(autoauto)、)、外部(外部(externextern)、)、静态静态(static)(static)和和 寄存器(寄存器(registerregister)。如果省略了存储种类选项,则该变量为如果省略了存储种类选项,则该变量为自动
6、(自动(auto)变量。)变量。对对51存储器存储器的类型说明的类型说明(见表见表53)【在变量前加类型说明在变量前加类型说明】(1)类型说明符类型说明符DATA寻址片内低寻址片内低128字节字节,速度最快速度最快(MOV);BDATA寻址片内寻址片内20H2FH的单元的单元(bit位位);IDATA间接寻址片内间接寻址片内256字节字节(MOVRi);PDATA页寻址外部页寻址外部RAM(MOVXRi);XDATA寻址外部寻址外部64KRAM(MOVXDPTR);CODE寻址代码寻址代码(程序程序)区区(MOVCA+DPTR);(2)举例说明)举例说明unsignedchardatak,t,
7、p;/定义了定义了k,t,p为无符号字符为无符号字符data变量变量;unsignedintk1,k2;/data可省略可省略/定义了定义了k1,k2为无符号整型为无符号整型data变量变量;intidatay110;/定义了定义了y1为整型数组为整型数组;unsignedcharbdataz1,z2;/定义了定义了z1,z2为可位寻址的字符变量为可位寻址的字符变量unsignedcharpdatae1,e2;/定义了定义了e1,e2为页寻址的变量为页寻址的变量dubexdatab30;/定义了变存在外部定义了变存在外部RAM中中unsignedcharcodef_tab10;unsigned
8、charcodef_tab10;/定义了定义了定义了定义了f_tabf_tab 为代码内的常数为代码内的常数为代码内的常数为代码内的常数f_tabf_tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x67;0 x07,0 x7f,0 x67;/这时公阴极数码管的显示代码这时公阴极数码管的显示代码这时公阴极数码管的显示代码这时公阴极数码管的显示代码(MOVCA,A+DPTR)(MOVCA,A+DPTR)例如例如例如例如,要显示要显示要显示要
9、显示“4,5”;4,5”;#define#definesz_cpssz_cpsXBYTE0 x1fff/XBYTE0 x1fff/定义外部存储器的口定义外部存储器的口定义外部存储器的口定义外部存储器的口#define#definesz_cpgsz_cpgXBYTE0 x3fff/XBYTE0 x3fff/定义外部存储器的口定义外部存储器的口定义外部存储器的口定义外部存储器的口 sz_cpssz_cps=f_tab4;/=f_tab4;/显示显示显示显示4 4 sz_cpgsz_cpg=f_tab5;/=f_tab5;/显示显示显示显示5 5四、数据存储模式四、数据存储模式存储模式决定了变量的默
10、认存储类型、参数传递区存储模式决定了变量的默认存储类型、参数传递区存储模式决定了变量的默认存储类型、参数传递区存储模式决定了变量的默认存储类型、参数传递区和无明确存储类型说明的变量的存储类型。和无明确存储类型说明的变量的存储类型。和无明确存储类型说明的变量的存储类型。和无明确存储类型说明的变量的存储类型。如果在变量定义时略去存储类型标志符,则编译器会自动选如果在变量定义时略去存储类型标志符,则编译器会自动选如果在变量定义时略去存储类型标志符,则编译器会自动选如果在变量定义时略去存储类型标志符,则编译器会自动选择默认的存储类型。默认的存储类型进一步由:择默认的存储类型。默认的存储类型进一步由:择
11、默认的存储类型。默认的存储类型进一步由:择默认的存储类型。默认的存储类型进一步由:SMALLSMALL,COMPACTCOMPACT和和和和LARGELARGE存储模式指令限制存储模式指令限制存储模式指令限制存储模式指令限制。三种存储模式的含义,见表三种存储模式的含义,见表54所示。所示。SMALL:(低:(低128字节字节.);COMPACT:(COMPACT:(分页片外存储器分页片外存储器(最大最大256字节,默字节,默认的存储类型是认的存储类型是pdata);LARGE:(LARGE:(最大最大64K,默认的存储类型是,默认的存储类型是xdata);例如,例如,例如,例如,staticu
12、nsignedchardataxstaticunsignedchardatax;/*/*在片内数据存储器中定义一在片内数据存储器中定义一在片内数据存储器中定义一在片内数据存储器中定义一个静态无符号字符型变量个静态无符号字符型变量个静态无符号字符型变量个静态无符号字符型变量 x*/x*/intyinty;/*/*定义一个自动整型变量定义一个自动整型变量定义一个自动整型变量定义一个自动整型变量y y,它的存储器类型由编译模,它的存储器类型由编译模,它的存储器类型由编译模,它的存储器类型由编译模式确定式确定式确定式确定*/chardatavar1chardatavar1;/*/*在在在在datada
13、ta区定义字符型变量区定义字符型变量区定义字符型变量区定义字符型变量var1*/var1*/intintidatavar2idatavar2;/*/*在在在在idataidata区定义整型变量区定义整型变量区定义整型变量区定义整型变量var2*/var2*/intinta=5a=5;/*/*定义变量定义变量定义变量定义变量a a,同时赋以初值,同时赋以初值,同时赋以初值,同时赋以初值5 5,变量,变量,变量,变量a a由编由编由编由编译模式确定默认存储区译模式确定默认存储区译模式确定默认存储区译模式确定默认存储区*/charcodevar3=“VeryGood!”charcodevar3=“V
14、eryGood!”;/*/*在在在在codecode区定义字符区定义字符区定义字符区定义字符串数组串数组串数组串数组rar3*/rar3*/charxdata*charxdata*pxpx;/*/*在在在在xdataxdata区定义一个指向对象类型为区定义一个指向对象类型为区定义一个指向对象类型为区定义一个指向对象类型为charchar的指针的指针的指针的指针pxpx,指针指针指针指针pxpx自身在默认存储区(由编译模式确定),长度自身在默认存储区(由编译模式确定),长度自身在默认存储区(由编译模式确定),长度自身在默认存储区(由编译模式确定),长度为为为为2 2字节(字节(字节(字节(0 0
15、0 xFFFF)*/0 xFFFF)*/Char xdata *data Char xdata *data pdxpdx;/*/*除了指针明确定位于内部数除了指针明确定位于内部数据据存储器区存储器区(data)(data)之外,与上例完全相同,由于指定了存储之外,与上例完全相同,由于指定了存储器类型,所以与编译模式无关器类型,所以与编译模式无关*/extern bit data extern bit data p_numbp_numb ;/*/*在在datadata区定义一个外部位区定义一个外部位变量变量*/5.3.2对硬件主要资源的定义对硬件主要资源的定义(见教材128页)一、一、sfr定义
16、方法定义方法sfr特殊功能寄存器名特殊功能寄存器名=地址常数地址常数;例如,例如,例如,例如,sfrsfrP0=0 x80P0=0 x80;/定义了定义了定义了定义了I/OI/O口口口口P0P0,其地址为,其地址为,其地址为,其地址为80H80HsfrsfrP1=0 x90P1=0 x90;/定义了定义了定义了定义了I/OI/O口口口口P1P1,其地址为,其地址为,其地址为,其地址为90H90H(可参考(可参考(可参考(可参考KeilKeilC51C51中的中的中的中的reg51.hreg51.h各个定义)各个定义)各个定义)各个定义)如:含头文件如:含头文件如:含头文件如:含头文件#incl
17、ude#include或或或或#include#include 在在在在reg51reg51中中中中,已经宏定义了所有寄存器。如:已经宏定义了所有寄存器。如:已经宏定义了所有寄存器。如:已经宏定义了所有寄存器。如:/*BYTERegister*/*BYTERegister*/用到了:用到了:用到了:用到了:srfsrf sfrsfrP0=0 x80;P0=0 x80;sfrsfrP1=0 x90;P1=0 x90;sfrsfrP2=0 xA0;P2=0 xA0;sfrsfrP3=0 xB0;P3=0 xB0;sfrsfrPSW=0 xD0;PSW=0 xD0;sfrsfrACC=0 xE0;A
18、CC=0 xE0;sfrsfrB=0 xF0;B=0 xF0;sfrsfrSP=0 x81;SP=0 x81;sfrsfrDPL=0 x82;DPL=0 x82;sfrsfrDPH=0 x83;DPH=0 x83;sfrsfrPCON=0 x87;PCON=0 x87;sfrsfrTCON=0 x88;TCON=0 x88;sfrsfrTMOD=0 x89;TMOD=0 x89;sfrsfrTL0=0 x8A;TL0=0 x8A;sfrsfrTL1=0 x8B;TL1=0 x8B;sfrsfrTH0=0 x8C;TH0=0 x8C;sfrsfrTH1=0 x8D;TH1=0 x8D;sfrsf
19、rIE=0 xA8;IE=0 xA8;sfrsfrIP=0 xB8;IP=0 xB8;sfrsfrSCON=0 x98;SCON=0 x98;sfrsfrSBUF=0 x99;SBUF=0 x99;sfrsfrAUXR=0 x8e;AUXR=0 x8e;二、二、sfr16定义方法定义方法sfr16特殊功能寄存器名特殊功能寄存器名=地址常数地址常数;如,如,对于对于80528052单片机的定时器单片机的定时器T2T2,可采用如下的方法来定义。,可采用如下的方法来定义。sfr16 T2=0 xCCsfr16 T2=0 xCC;/*/*定义定义timer2timer2,其地址为其地址为T2L=0 x
20、CCT2L=0 xCC,T2H=0 xCD*/T2H=0 xCD*/三、三、sbit定义方法定义方法(1)sbit位变量名位变量名=位地址位地址;如:如:sbitOV=0 xD2;/定义了定义了PSW中的溢出标中的溢出标志志sbitCY=0 xD7;/定义了定义了PSW中的进位标志中的进位标志sbitclk=0 x91;/定义了定义了P1.1口信号线口信号线(2 2)sbitsbit 位变量名位变量名位变量名位变量名=特殊功能寄存器名特殊功能寄存器名特殊功能寄存器名特殊功能寄存器名 位位置位位置位位置位位置如:如:如:如:sfrsfrPSW=0 xD0PSW=0 xD0;/定义了状态寄存器名为
21、定义了状态寄存器名为定义了状态寄存器名为定义了状态寄存器名为PSWPSW,其地址为,其地址为,其地址为,其地址为D0HD0HsfrsfrP1=0 x90P1=0 x90;/定义了定义了定义了定义了I/OI/O口口口口P1P1,其地址为,其地址为,其地址为,其地址为90H90HsbitsbitOV=PSW2OV=PSW2;/定义了定义了定义了定义了PSWPSW中的(第中的(第中的(第中的(第2 2位)为溢出标志位)为溢出标志位)为溢出标志位)为溢出标志sbitsbitCY=PSW7CY=PSW7;/定义了定义了定义了定义了PSWPSW中的(第中的(第中的(第中的(第7 7位)为进位标志位)为进位
22、标志位)为进位标志位)为进位标志sbitsbit clkclk=P11=P11;/定义了定义了定义了定义了P1P1中的(第中的(第中的(第中的(第1 1位)为信号线位)为信号线位)为信号线位)为信号线(3 3)sbitsbit 位变量名位变量名位变量名位变量名=字节地址字节地址字节地址字节地址 位位置位位置位位置位位置如:如:如:如:sbitsbitOV=0 xD02OV=0 xD02;/定义了定义了定义了定义了0 xD00 xD0中的(第中的(第中的(第中的(第2 2位)为溢出标位)为溢出标位)为溢出标位)为溢出标志志志志sbitsbitCY=0 xD07CY=0 xD07;/定义了定义了定
23、义了定义了0 xD00 xD0中的(第中的(第中的(第中的(第7 7位)为进位标志位)为进位标志位)为进位标志位)为进位标志sbitsbitclkclk=0 x901=0 x901;/定义了定义了定义了定义了0 x900 x90中的(第中的(第中的(第中的(第1 1位)为位)为位)为位)为I/OI/O口信口信口信口信号线号线号线号线(4)sbit位变量名位变量名=“可位寻址对象可位寻址对象”位位置位位置80518051单片机内部单片机内部单片机内部单片机内部0 x200 x200 x2F0 x2F可位寻址区时,称之可位寻址区时,称之可位寻址区时,称之可位寻址区时,称之“可位寻址对象可位寻址对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与实验指导 第5章 C51设计基础 单片机 原理 实验 指导 C51 设计 基础
限制150内