stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

STC单片机C语言指针

主讲:何宾

Email :hebin@mail.buct.edu.cn

2016.03

C51编译器中指针的分类

Cx51编译器支持使用字符“*”声明变量指针。C51编译器可

以执行在标准C中所提供的所有操作。但是,由于8051独一无二的

结构以及特点,C51编译器提供两种不同类型的指针,即:通用指

针和指定存储器的指针。

通用指针

--未指定存储区域的通用指针

C语言通用指针的声明格式:

数据类型 *指针名字

【例13-1】通用指针声明的例子

char *s; //指向字符的指针

int *number; //指向基本整型数的指针

long *state; //指向长整型数的指针

对于通用指针来说,使用三个字节保存。即第一个字节表示存储器

的类型;第二个字节表示偏移地址的高8位;第三个字节表示偏移

地址的低8位。对于通用指针来说,它可以访问保存在8051存储器

系统的任何位置的变量。

通用指针

--未指定存储区域的通用指针

前面提到过:

&变量/数组名字

它表示获取变量所在单片机存储空间的地址,或者是数组所在单片

机存储空间的起始地址。

例如:如下声明:

int *p1 ;

int a ;

当进行下面操作:

p1=&a;

通用指针

--未指定存储区域的通用指针

表示p1的值为变量a所在单片机存储空间的具体地址信息。该

地址的内容就是变量a的值,用形式化的方式可以这样表示:

(p1)=a;

因此,*p1实际上就是获取指向地址的内容。所以,*p1的值就是变

量a的值。

注 :在单片机中并不存在指针这样一个功能部件,正如上面所提到的,这只是C

语言对存储器直接寻址模式的抽象而已。

*和指针名字之间不能有空格。

通用指针

--未指定存储区域的通用指针

【例13-2】查看通用指针的例子

代码清单13-1(1) main.c文件

int main()

{

int a=50,*p1;

float b=45.13,*p2;

char c=40,*p3;

p1=&a;

p2=&b;

p3=&c;

return 0;

}

通用指针

--未指定存储区域的通用指针

下面对该程序进行分析,步骤包括:

读者可以进入到本书所提供资料的stc_program_example\例子

13-2目录下,在Keil

μVision5集成开发环境下打开该设计。

进入调试器模式,查看Disassembly窗口内的反汇编代码,代码

中加入了注释,帮助读者进行分析。

代码清单13-1(2) Disassembly窗口内的反汇编代码清单

2: {

通用指针

--未指定存储区域的通用指针

3: int a=50,*p1;

//将立即数50(0x32)保存到8051片内数据区地址为0x08和0x09的单元

C:0x0003 750800 MOV 0x08,#0x00

C:0x0006 750932 MOV 0x09,#0x32

4: float b=45.13,*p2;

//将浮点数保存到8051片内数据区地址为0x0D、0x0E、0x0F和0x10的单元

C:0x0009 75101F MOV 0x10,#0x1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小猿学python_小猿圈python入门之转行零基础该如何学Python?

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家解决一下疑惑。学习Python难吗&am…

dojo Quick Start/dojo入门手册--json

那要是我想更换获取到的数据类型,比如json?xml?修改handleAs即可,如: handleAs: "json" dojo.xhrGet({ url: "http://localhost/hello/sayHello.jsp", handleAs: "json", load…

Python-技巧

0.推荐的扩展 requests urilib的替代品 BeautifulSoup4 解析HTML代码 rq 任务队列 selenium 自动化测试工具,模拟浏览器 1.sys.modules, 根据已加载的模块创建对象, 其中 page 为类名 if hasattr(sys.modules[__name__], page):setattr(self, page, getattr(sys.mod…

暴击!被初中生碾压智商!这份被国家数学集训队采用的初中奥数资料究竟有多厉害?...

全世界只有3.14 % 的人关注了爆炸吧知识提高版,来了!这一份大部分人都没有见过的资料。它是我国出版的第一套数学竞赛的系列图书。前段时间,超模君给大家分享了这一系列的初中版奥数基础篇,得到了大家热烈的反响。于是&#xff0c…

COSCon21 开源文化 (GL) 论坛介绍

“ 点击蓝字 / 关注我们 ”| 作者、编辑:袁睿斌| 设计:朱亿钦、宋传琪第六届中国开源年会 (COSCon21) 将于 10月30-31日 由开源社举办。本次年会重新回归线下,让小伙伴们的面基成为了可能。届时,北京、上海、深圳、成都、珠海、大…

pythonopencv显示图像_OpenCV-Python 读取显示图像 | 五

目标在这里,你将学习如何读取图像,如何显示图像以及如何将其保存回去你将学习以下功能:cv.imread(),cv.imshow(),cv.imwrite()(可选)你将学习如何使用Matplotlib显示图像使用OpenCV读取图像使用cv.imread()函数读取图像…

android wifi

<!-- 以下是使用wifi访问网络所需要的权限 --> <uses-permission android:name"android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name"android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:n…

1.5.2 在IIS上配置ASP.NET(转)

1.5.2 在IIS上配置ASP.NET 在服务器上部署ASP.NET网站时&#xff0c;需要.NET的运行环境.NET Framework。.NET Framework类似于Java的JDK&#xff0c;包含有.NET程序运行环境和命令行编译工具。如果服务器上没有安装.NET Framework&#xff0c;这就需要从微软网站下载&#xf…

51单片机外部地址c语言,cx51与c语言对单片机内部和外部资源变量和地址的定义是否兼容?为什么...

span namewhlm idwhlm原因:classpath没有设置好系统变量->新建->变量名&#xff1a;CLASSPATH 变量值&#xff1a;.;%JAVA_HOME%\lib(CLASSPATH中有一英文句号“.”后跟一个分号&#xff0c;表示当前路径的意思)在Classpath里面你可以直接指定一个包名&#xff0c;比如你…

Resin的安全性ip限制

转载自resin的log、安全性ip限制、内存jvm、keepalive、代码的更新检测等在webapp标签下&#xff0c;可以有很多种安全性配置&#xff0c;下面介绍ip限制、用户米密码限制两种。ip限制在正常访问的web-app标签下&#xff0c;增加一个security-constrain标签即可&#xff0c;如下…

你和女朋友的婚后老年生活!

1 厉害了&#xff0c;连扇子都是爱你的形状~2 一个漂亮的后空翻3 长得大了不起啊&#xff01;4 哈哈哈哈哈哈哈是这样5 哈哈哈哈哈防不胜防&#xff01;6 教科书般的标准答案你点的每个赞&#xff0c;我都认真当成了喜欢

实现一个基于 IConfiguration 的低配版 FeatureFlag

实现一个基于 IConfiguration 的低配版 FeatureFlagIntro在我们的应用中&#xff0c;可能有一些配置开关的需求&#xff0c;某些功能是否启用使用一个配置开关&#xff0c;用的时候就打开&#xff0c;不用的时候就关掉&#xff0c;于是基于 .NET Core 的里配置体系写了一个简单…

矩阵键盘逐行扫描C语言,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之矩阵键盘(逐行扫描法).pdf...

(原创)51单片机C语言程序设计--速学教程实例(入门篇)之矩阵键盘(逐行扫描法).pdf/******************************************************************//* 名称&#xff1a;矩阵键盘逐行扫描法 *//* 作者&#xff1a;苏涛 *//* 时间&#xff1a;2011-01-15 *//* 单位&#xf…

slider节点透明背景_【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)...

一、涉及知识点场景切换按钮事件监听节点事件监听节点数组循环中闭包的应用动态更换sprite图片定时器预制资源二、步骤2.1 准备工作首先&#xff0c;我们要新建一个空白工程&#xff0c;并在资源管理器中新建几个文件夹​在这些文件夹中&#xff0c;我们用来存放不同的资源&…

《奠基计算机网络》清华大学出版社 之 IPv6和IPv4共存技术

2011年8月 ISATAP隧道 ISATAP &#xff08; Intra-Site Automatic Tunnel Addressing Protocol&#xff0c;站间自动隧道寻址协议&#xff09;是一种地址分配和主机到主机、主机到路由器和路由器到主机的自动隧道技术.它为IPv6主机之间提供了跨越IPv4内部网络的单播IPv6连通性。…

霍金竟然亲口承认自己是个赌徒!明明失败了不止一次,“菜鸡”却成了神话!...

全世界只有3.14 % 的人关注了爆炸吧知识科学“赌徒”在线发牌 一直以来他像一个深渊的幽灵&#xff0c;似乎无处不在他影响了无数的天体&#xff0c;却又无影无踪他永远只停留在人们的推断真实的图像&#xff0c;交错的数据他究竟是神仙的化身&#xff0c;还是地狱的使者没人…

[转载]学习让测试更精彩,测试让生命更精彩

其实&#xff0c;这篇文章的名字我想了很久&#xff0c;最终定了这样一个标题。很多人会觉得太大了吧&#xff0c;学习和测试有关系&#xff0c;测试和生命的关联貌似没有那么大吧。其实不然&#xff0c;这篇文章提到的一种态度&#xff0c;是一种思想&#xff0c;是一种精神。…

如何分析 StackOverflow 异常 ?

一般来说&#xff0c;当你的方法递归调用次数太多大于线程栈的默认1M内存时将会抛出 StackOverflowException 异常。举个例子&#xff0c;假设你有下面这段代码&#xff1a;using System;namespace temp {class Program{static void Main(string[] args){Main(args); // Oops, …

PHP json_encode() 函数介绍

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。 这个函数的功能是将数值转换成json数据存储格式。 view source print?01<?php 02$arr array03 ( 04 Name>希亚, 05 Age>2…

小波变换原理_小波变换的知识,转载的

一、绘制原理&#xff1a;需要用到的小波工具箱中的三个函数cwt()&#xff0c;centfrq()&#xff0c;scal2frq()。具体参数及用途介绍如下&#xff1a;&#xff08;1&#xff09;COEFS cwt(S,SCALES,wname)该函数实现连续小波变换&#xff0c;其中S为输入信号&#xff0c;SCAL…