第十讲 C51程序设计基础 09

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

80C51单片机C51程序设计本讲教学内容:C51程序设计基础C51程序实例介绍坐有琴书,便成石室丹丘;单片机汇编程序与C51程序比较引例:查表程序举例设变量放在单片机片内RAM20H单元,其取值范围为00H,01H,02H,03H,04H,05H,要求编制一段查表程序,查出该变量的平方值,并放在RAM21H单元。汇编语言程序:MOVA,20HMOVDPTR,#TABLEMOVCA,@A+DPTRMOV21H,ASTOP:SJMPSTOPTABLE:DB00H,01H,04H,09H,10H,19HEND坐有琴书,便成石室丹丘;C51程序:#includereg51.h#includeabsacc.h#defineucharunsignedchar#defineXVALDBYTE[0X20]#defineYVALDBYTE[0X21]ucharcodetable[6]={0x00,0x01,0x04,0x09,0x10,0x19};voidmain(){ucharx,y;x=XVAL;y=table[x];YVAL=y;}坐有琴书,便成石室丹丘;C51具有通用C语言的基本特点,还能方便地运用C语句操作单片机的硬件与内部资源。C51的数据类型与存储类型:数据类型:编程语言所使用的数据结构存储类型:数据在微机存储器中的定位形式C51在定义数据及变量时都要求指明其数据类型与存储类型这两种属性。C51的数据类型与存储类型数据类型长度值域范围bit1bit0,1unsignedchar1byte0~255signedchar1byte-128~127unsignedint2byte0~65536signedint2byte-32768~32767unsignedlong4byte0~4294967295signedlong4byte-2147483648~2147483647float4byte+1.175494E-38~+3.402823E+38指针*1~3byte对象的地址sbit1bit0,1sfr1byte0~255sfr162byte0~65536坐有琴书,便成石室丹丘;表1数据类型坐有琴书,便成石室丹丘;1.数据类型位变量:定位在MCS-51CPU片内存储区(RAM)的可位寻址空间中;字符变量:1Byte8位;整型变量:2Byte16位,高8位数放在低地址字节;长整型变量:4Byte32位,高位数放低地址;浮点型变量:4Byte32位,1位符号位,8位指数位,23位尾数位;C51中还有面向单片机种特殊功能寄存器的特殊位型(sbit),8位特殊功能寄存器型(sfr),16位特殊功能寄存器型(sfr16).坐有琴书,便成石室丹丘;#define语句在编程时,经常使用简化的缩写形式来定义变量的数据类型。其方法是在源程序开头使用#define语句。如:#defineucharunsignedchar#defineuintunsignedint坐有琴书,便成石室丹丘;2.存储类型变量的存储类型是指该变量在8051单片机硬件系统中所使用的存储区域,并在编译时准确的定位。8051系列单片机将程序存储器(ROM)和数据存储器(RAM)分开,并各有各自的寻址机构和寻址方式。8051系列单片机在物理上有四个存储空间:片内程序存储器空间;片外程序存储器空间;片内数据存储器空间;片外数据存储器空间;坐有琴书,便成石室丹丘;KEILuVision2所能支持的存储器类型存储器类型说明data直接访问内部数据存储器(128字节),访问速度最快bdata可位寻址内部数据存储器(16字节),允许位与字节混合访问idata间接访问内部数据存储器(256字节),允许访问全部256B地址pdata分页访问外部数据存储器(256字节),用MOVXA,@Ri指令访问xdata外部数据存储器(64KB),用MOVXA,@DPTR指令访问code程序存储器(64KB),用MOVCA,@A+DPTR指令访问坐有琴书,便成石室丹丘;2.存储类型data:直接寻址的内部数据RAM区,共128字节,00H-7FHbdata:可位寻址的内部数据RAM区,共16字节(128位),20H-2FHidata:间接寻址的内部数据RAM区,共256字节,00H-FFHpdata:分页寻址的外部数据RAM区,256字节:MOVXA,@Ri;MOVX@Ri,Axdata:全空间寻址的外部数据RAM区,64K字节:MOVXA,@DPTR;MOVX@DPTR,Acode:代码存储区,64K字节:MOVCA,@DPTR+A坐有琴书,便成石室丹丘;C51中变量的定义既要有数据类型的属性,也要有存储类型的属性。例:signedchardatavary;floatidatax,y,z;unsignedlongxdataarray[100]unsignedcharcodetable[5]={'1','2','3','4','5'}坐有琴书,便成石室丹丘;默认存储类型?定义变量时如果省略存储器类型,系统则会按编译模式SMALL、COMPACT或LARGE所规定的默认存储器类型去指定变量的存储区域。无论什么存储模式都可以声明变量在任何的8051存储区范围,然而把最常用的变量、命令放在内部数据区可以显著的提高系统性能。坐有琴书,便成石室丹丘;C51支持的主要存储模式存储模式说明SMALL函数参数及局部变量放在片内RAM(默认变量类型为DATA,最大128字节)。另外所有对象包括栈都优先放置于片内RAM,当片内RAM用满,再向片外RAM放置。COMPACT参数及局部变量放在片外RAM(默认的存储类型是PDATA,最大256字节);通过R0、R1间接寻址,栈位于8051片内RAM。LARGE参数及局部变量直接放入片外RAM(默认的存储类型是XDATA,最大64KB);使用数据指针DPTR间接寻址。因此访问效率较低且直接影响代码长度.坐有琴书,便成石室丹丘;3.C51的指针指针就是地址,数据或变量的指针就是存储该数据或变量的地址。C51指针分为存储型指针和通用型指针两种。存储型的指针:指定了它所指对象的存储类型charxdata*px;charxdata*datapy;一般指针:char*pz坐有琴书,便成石室丹丘;C51对单片机资源的定义C51是面向MCS-51系列单片机的C编程语言1.特殊功能寄存器的定义reg51.hSFR特殊功能寄存器的字节定义:标识符定义和关键字定义标识符定义reg51.h关键字定义sfrmyP0=0X80sfrSCON=0X98坐有琴书,便成石室丹丘;C51对单片机资源的定义特殊功能寄存器的双字节定义:sfr16DP=0X82;(0X83(DPH),0X82(DPL))特殊功能寄存器的位定义:sbitOV=PSW^2sbitRS1=0Xd0^4sbitTR1=0X8e坐有琴书,便成石室丹丘;2.片内RAM中位与寄存器组的定义片内RAM中位的定义:bit位变量=字节变量^n;例unsignedcharbdataibase;bitmy_bit=ibase^0;寄存器组定义:函数名()usingn例voidmy_fun(void)using3{}坐有琴书,便成石室丹丘;3.存储器绝对地址的定义absacc.h#define变量名关键字[绝对地址]CBYTE程序存储器空间,字节型DBYTE片内RAM空间,字节型PBYTE分页操作的片外RAM空间,字节型XBYTE片外RAM空间,字节型CWORDDWORDPWORDXWORD坐有琴书,便成石室丹丘;4.C51的函数函数的定义:返回值类型函数名(形式参数列表){函数体}函数的调用:函数名(实际参数列表)坐有琴书,便成石室丹丘;函数是C51源程序的基本模块,通过对函数模块的调用实现特定的功能。C51语言中的函数相当于其它高级语言的子程序。C51语言不仅提供了极为丰富的库函数,还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。坐有琴书,便成石室丹丘;例4-2-1输入两个整数,输出其中较大的值。#includestdio.hintmax(inta,intb);/*说明一个用户自定义函数*/intmax(inta,intb){if(ab)returna;elsereturnb;}voidmain(){intx,y,z;printf(inputtwonumbers:\n);scanf(%d%d,&x,&y);z=max(x,y);printf(maxmum=%d,z);}坐有琴书,便成石室丹丘;例:把外部数据RAM中从地址2000H开始的100个数逐一取出,若为正数,则放回原单元中;若为负数,则求补后放回原单元.#includereg51.h#includeabsacc.h#defineucharunsignedchar#defineaddrDBYTE[0X20]坐有琴书,便成石室丹丘;voidmain(){uchari;signedcharxdata*p;p=&addr;for(i=0;i100;i++){if(*p0);else*p=~(*p)+0x1;p++;}}坐有琴书,便成石室丹丘;P75(三)3#includereg51.h#includeabsacc.h#defineucharunsignedchar#defineaddrDBYTE[0X20]voidmain(){uchari;unsignedchardata*p;p=&addr;for(i=0;i4;i++){*p=0xf0;p++;}}坐有琴书,便成石室丹丘;

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功