补充单片机C语言程序设计.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(3)LARGE模式。 LARGE模式称为大编译模式,在LARGE模式下,编译时函数参数和变量被默认在片外RAM的64K字节空间,存储器类型为xdata。 在程序中变量的存储模式的指定通过#pragma预处理命令来实现。函数的存储模式可通过在函数定义时后面带存储模式说明。如果没有指定,则系统都隐含为SMALL模式。 【例】变量的存储模式。 #pragma small /*变量的存储模式为SMALL*/ char k1; int xdata m1; #pragma compact /*变量的存储模式为SMALL*/ char k2; int xdata m2; int func1(int x1,int y1) large /*函数的存储模式为 LARGE*/ { return(x1+y1); } int func2(int x2,int y2) /*函数的存储模式隐含为SMALL*/ { return(x2-y2); } 程序编译时,k1变量存储器类型为data,k2变量存储器类型为pdata,而m1和m2由于定义时带了存储器类型xdata,因而它们为xdata型;函数func1的形参x1和y1的存储器类型为xdata型,而函数func2由于没有指明存储模式,隐含为SMALL模式,形参x2和y2的存储器类型为data。 通过指针访问 采用指针的方法,可以实现在C51程序中对任意指定的存储器单元进行访问。 【例4-8】 通过指针实现绝对地址的访问。 #define uchar unsigned char /*定义符号uchar为数据类型符unsigned char*/ #define uint unsigned int /*定义符号uint为数据类型符unsigned int*/ void func(void) { uchar data var1; uchar pdata *dp1; /*定义一个指向pdata区的指针dp1*/ uint xdata *dp2; /*定义一个指向xdata区的指针dp2*/ uchar data *dp3; /*定义一个指向data区的指针dp3*/ dp1=0x30; /*dp1指针赋值,指向pdata区的30H单元*/ dp2=0x1000; /*dp2指针赋值,指向xdata区的1000H单元*/ *dp1=0xff; /*将数据0xff送到片外RAM30H单元*/ *dp2=0x1234; /*将数据0x1234送到片外RAM1000H单元*/ dp3=var1; /*dp3指针指向data区的var1变量*/ *dp3=0x20; /*给变量var1赋值0x20*/ } C51的运算符及表达式 一、赋值运算符 赋值运算符“=”,在C51中,它的功能是将一个数据的值赋给一个变量,如x=10。利用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式,在赋值表达式的后面加一个分号“;”就构成了赋值语句,一个赋值语句的格式如下: 变量=表达式; 执行时先计算出右边表达式的值,然后赋给左边的变量。例如: x=8+9; /*将8+9的值赋绐变量x*/ x=y=5; /*将常数5同时赋给变量x和y*/ 在C51中,允许在一个语句中同时给多个变量赋值,赋值顺序自右向左。 二、算术运算符 C51中支持的算术运算符有: + 加或取正值运算符 - 减或取负值运算符 * 乘运算符 / 除运算符 % 取余运算符 加、减、乘运算相对比较简单,而对于除运算,如相除的两个数为浮点数,则运算的结果也为浮点数,如相除的两个数为整数,则运算的结果也为整数,即为整除。如25.0/20.0结果为1.25,而25/20结果为1。 对于取余运算,则要求参加运算的两个数必须为整数,运算结果为它们的余数。例如:x=5%3,结果x的值为2。 加、减、乘运算相对比较简单,而对于除运算,如相除的两个数为浮点数,则运算的结果也为浮点数,如相除的两个数为整数,则运算的结果也为整数,即为整除。如25.0/20.0结果为1.25,而25/20结果为1。 对于取余运算,则要求参加运算的两个数必须为整数,运算结果为它们的余数。例如:x=5%3

文档评论(0)

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

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

1亿VIP精品文档

相关文档