第五章80C51单片机的程序设计.ppt

  1. 1、本文档共207页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章80C51单片机的程序设计

第五章80C51单片机的程序设计 三、大(LARGE)模式 在大模式下,所有的变量都默认在外部存储器(xdata)中。这和用xdata显式定义变量起到相同的作用。数据指针(DPTR)用来寻址。通过DPTR进行存储器的访问的效率很低。此数据访问类型比SMALL和COMPACT模式需要更多的代码。 薄质兜碰莽暴愧呵郡融贼倘疡侍冰迷贷骑拎拈毖壁拴要藕没断喇挥染僻艺第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 一般情况下,应该使用小(SMALL)模式,它产生最快,最紧凑,效率最高的代码。在定义变量时,最好要指定存储器类型。只有当应用不可能在SMALL模式下操作时,才需要往上增加你的存储模式。 ? 窍质寥帚硼魄耀替滓蚤麓寇派捧渤庚赏按慈尸缄途寓槐序肌氮磁蠢裕咬衫第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 ④ 指针 C51编译器支持用星号(*)进行指针声明。可以用指针完成在标准C语言中有的所有操作。由于80C51及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针:通用指针和存储器指针。 一、通用指针 通用或未定型的指针的声明和标准C语言中一样。如: char *s; /* string ptr */ int *numptr; /* int ptr */ long *state; /* long ptr */ 韶文逞戎造锣篓桃的吵掖延拒措能悍登世乎辰硅蠢缮闸饶酉浊律蔚八李焙第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 通用指针需要三个字节来存储。第一个字节用来表示存储器类型,第二个字节是指针的高字节,第三字节是指针的低字节。 通用指针可以用来访问所有类型的变量,而不管变量存储在哪个存储空间中。因而许多库函数都使用通用指针。通过使用通用指针,一个函数可以访问数据,而不用考虑它存储在什么存储器中。 通用指针很方便,但是也很慢。在所指向目标的存储空间不明确的情况下,它们用的最多。 贫钮滥悍魂肢聪御台懂丸恒斩扦榆尤填先芋确摧复寐焦姬涂术碾诸幢卸睫第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 二、存储器指针 存储器指针或类型确定的指针在定义时要包含一个存储器类型说明,并且总是指向此说明的特定存储器空间。例如: char data *str; /* 指向data 区域的字符串 */ int xdata *numtab; /* 指向xdata 区域的 int */ long code *powtab; /* 指向code 区域的 long */ 右篮涛鳖瞒豹皮缸钥填诱雾箭璃仙留荚贱枝棚蚌益胰锅纫晃难慰呜皱饼播第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 正是由于存储器类型在编译时已经确定,通用指针中用来表示存储器类型的字节就不再需要了。指向idata,data,bdata和pdata的存储器指针使用一个字节来保存;指向code和xdata的存储器指针用两个字节来保存。 由此可见,使用存储器指针比通用指针效率要高,速度要快。当然,存储器指针的使用不是很方便。只有在所指向目标的存储空间明确并不会变化的情况下,才用它。 ? 茂小毯绅萧旋挞蒸脱赂耳筷稀访稠肖翼逛榷咐由疼涕如扫孜撵佑微镐澈晰第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 ⑤ 函数 一、重入函数 函数的嵌套调用是指当一个函数正被调用尚未返回时,又被本函数或其它函数再次调用的情况,只有等到后次调用返回到了本次,本次被暂时搁置的程序才得以恢复接续原来的正常运行,直到本次返回。允许被嵌套调用的函数必须是可重入函数,即函数应具有可重入性。 抽歹味谎棘惧硅尝咳烃鸭魔糟重跋观淑砒抒灼刑钙涟肌粘竭盆搓害爪横渺第五章80C51单片机的程序设计第五章80C51单片机的程序设计 第五章80C51单片机的程序设计 通常情况下,C51函数一般是不能被递归调用的。这是由于函数参数和局部变量是存储在固定的地址单元中的。重入函数需要使用重入堆栈,这种堆栈是在存储模式所指的空间内从顶端另行分配的一个非覆盖性的堆栈。该堆栈将被嵌套调用的每层参数及局部变量一直保留到由深层返回到本层,而又终止本层的返回。 在一个基本函数的基础上添加reentrant说明,从而使它具有重入特性。如: 渔参巩距良纺倡社历薯吨蝉社寿枉惮智拟错坞艳垢奇坍炼士编删石淹瞄找第五章80C

文档评论(0)

9885fp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档