⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c51指针的使用.htm

📁 单片机教程 用c语言实现编程 可以大大缩短我们的开发周期
💻 HTM
📖 第 1 页 / 共 3 页
字号:
			return false;
	   }
	   
	   if (password == "")
	   {
		showAlert ("密码不能为空");
		thisform.password.focus();
		return false;
	   }
	   return true;
}
function top_joined(value)
{
	if (value != "")
	{
		var action;
		action = value.split("_");
		if (action[0] == "league")
		{
			window.location.href="/league/index.php?gid=" + action[1];
		}
		if (action[0] == "acti")
		{
			window.location.href="/league/activity/acti_mana_index.php?t_id=" + action[1];
		}

	}
}

function copyurl(url)
{
	try{
		clipboardData.setData('Text',url);
		showAlert('已经把该社团网址复制到系统剪贴板,您可以使用(Ctrl+V或鼠标右键)粘贴功能,通过其他软件记录或发送给您的朋友。')
	}
	catch(e){}
}
function add_favorite(uid, url, name)
{
	window.open("/personal/favorite/add.php?member_id="+uid+"&url="+url+"&name="+name,'_blank','width=400,height=220,toolbar=0,locationbar=0,menubar=0,statbar=0'); 
	return false;
}

// 提示登录
function alertlert_login()
{
	showAlert('对不起,您目前没有权限,请先登录!');
	document.login_form1.account.focus();
}


//申请加入社团
function con_join(con_gid)
{
	showConfirm("您确认加入本社团吗?","window.location.href='/league/apply.php?g_id="+con_gid+"';","");
}


//退出本社团
function con_quiet(con_gid,con_uid)
{
	showConfirm("您确认退出本社团吗?","window.location.href='/league/member/quiet_member.php?g_id="+con_gid+"&q_uid="+con_uid+"';","");
}

</SCRIPT>
<!-- 回复框 -->
<DIV id=background style="DISPLAY: none"></DIV>
<DIV id=postbox 
style="DISPLAY: none; Z-INDEX: 50; LEFT: 769px; WIDTH: 600px; POSITION: absolute; TOP: 271px">
<FORM name=reply_comment action=/league/comment/index.php?gid=514465 method=post 
target=hidden_frame><INPUT id=act type=hidden value=add name=act> <INPUT id=r_id 
type=hidden name=r_id> <INPUT id=t_id type=hidden name=t_id> <INPUT id=f_uid 
type=hidden name=f_uid> 
<TABLE cellSpacing=0 cellPadding=0 width="70%" border=0>
  <TBODY>
  <TR>
    <TD height=13>&nbsp;</TD></TR>
  <TR>
    <TD class=box_common height=26>&nbsp;<SPAN 
      class=font_common_title>回复评论</SPAN></TD></TR></TBODY></TABLE>
<TABLE class=box_common01 cellSpacing=0 cellPadding=0 width="70%">
  <TBODY>
  <TR>
    <TD>
      <TABLE cellSpacing=8 cellPadding=0 width="100%" bgColor=#ffffff 
        border=0><TBODY>
        <TR>
          <TD class=font_common vAlign=top align=right height=63>内容:</TD>
          <TD class=font_common vAlign=top><TEXTAREA class=input_box01 id=input_area name=input_area rows=6 cols=48></TEXTAREA></TD></TR>
        <TR>
          <TD class=font_common vAlign=top align=right width="15%">原文:</TD>
          <TD class=font_common style="LINE-HEIGHT: 18px" vAlign=top 
            width="85%"><SPAN class=gray id=past_type></SPAN></TD></TR>
        <TR>
          <TD class=font_common vAlign=top align=middle colSpan=2><INPUT class=btn01 onclick=javascript:hidden_reply();submit_post(document.reply_comment); type=button value=发表 name=queding> 
            &nbsp;&nbsp; <INPUT class=btn01 onclick=hidden_reply(); type=reset value=取消> 
        </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></DIV><!-- 回复框 -->
<DIV id=mainBox>
<DIV id=mainBoxBg>
<TABLE class=module_title cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD class=corner_left></TD>
    <TD class=corner_center><A 
      href="http://www.5jia1.com/league/?gid=514465">首页</A>&nbsp;&gt;&nbsp;<A 
      href="http://www.5jia1.com/league/blog/blog_index.php?gid=514465">社团文集</A>&nbsp;&gt;&nbsp;<A 
      href="http://www.5jia1.com/league/blog/show_comm.php?bid=361548">第十六课 
      C51指针的使用</A></TD>
    <TD class=corner_right></TD></TR></TBODY></TABLE>
<DIV class=module_content>
<DIV class=module_content_line>
<DIV class=bg>
<TABLE cellSpacing=10 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD align=middle>
      <TABLE class=box_common cellSpacing=1 cellPadding=5 width="100%" 
        border=0><TBODY>
        <TR class=box_common_title>
          <TD colSpan=2>
            <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
              <TBODY>
              <TR>
                <TD width="35%"><B>第十六课 C51指针的使用</B></TD>
                <TD align=right width="65%">作者: <A 
                  href="http://www.5jia1.com/personal/?member_id=505887" 
                  target=_blank>张文俊</A> &nbsp;&nbsp;2007-08-15 
                  09:17:06&nbsp;&nbsp; </TD></TR></TBODY></TABLE></TD></TR>
        <TR class=box_content>
          <TD vAlign=top align=middle width="10%"><A 
            href="http://www.5jia1.com/personal/?member_id=505887" 
            target=_blank><IMG class=box01 height=98 
            src="16.files/default_personal.gif" width=98 vspace=5 
            border=0></A><BR><IMG height=14 src="16.files/icon_boy.gif" width=14 
            border=0>&nbsp; <A 
            href="http://www.5jia1.com/personal/?member_id=505887" 
            target=_blank>张文俊</A> </TD>
          <TD>
            <TABLE class="font_content  autowrap" cellSpacing=12 cellPadding=0 
            width="100%" border=0>
              <TBODY>
              <TR>
                <TD class=line_h20 style="WIDTH: 790px">
                  <DIV style="OVERFLOW-X: auto; WIDTH: 100%">
                  <H1>
                  <TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" 
                  cellSpacing=0 cellPadding=0 width="100%" border=0>
                    <TBODY>
                    <TR>
                      <TH vAlign=center align=middle height=32>
                        <H1>第十六课 C51指针的使用</H1></TH></TR>
                    <TR>
                      <TD align=middle bgColor=#f7f7f7 
                        height=25>作者:佚名&nbsp;&nbsp;&nbsp;&nbsp;来源:本站原创&nbsp;&nbsp;&nbsp;&nbsp;点击数: 
                        133&nbsp;&nbsp;&nbsp;更新时间:2007年07月12日</TD></TR></TBODY></TABLE></H1>
                  <P>指针就是指变量或数据所在的存储区地址。如一个字符型的变量 STR 存放在内存单元DATA 区的 51H 
                  这个地址中,那么 DATA 区的 51H 地址就是变量 STR 的指针。在 C 语言中 
                  指针是一个很重要的概念,正确有效的使用指针类型的数据,能更有效的表达复杂的数据 
                  结构,能更有效的使用数组或变量,能方便直接的处理内存或其它存储区。指针之所以 
                  能这么有效的操作数据,是因为无论程序的指令、常量、变量或特殊寄存器都要存放在内 
                  存单元或相应的存储区中,这些存储区是按字节来划分的,每一个存储单元都能用唯一的 
                  编号去读或写数据,这个编号就是常说的存储单元的地址,而读写这个编号的动作就叫做寻 
                  址,通过寻址就能访问到存储区中的任一个能访问的单元,而这个功能是变量或数组等 是不可能代替的。C 
                  语言也因此引入了指针类型的数据类型,专门用来确定其他类型数据的 
                  地址。用一个变量来存放另一个变量的地址,那么用来存放变量地址的变量称为“指针变量”。 如用变量 STRIP 来存放文章开头的 
                  STR 变量的地址 51H,变量 STRIP 就是指针变量。下面 
                  用一个图表来说明变量的指针和指针变量两个不一样的概念。</P>
                  <P><IMG style="CURSOR: pointer" alt=点此在新窗口浏览图片 
                  src="16.files/20077137703935614.gif" width=494 border=0 
                  &111nload="function anonymous()&#13;&#10;{&#13;&#10;resizepic(this)&#13;&#10;}" 
                  &111nclick="function anonymous()&#13;&#10;{&#13;&#10;window.open(this.src);&#13;&#10;}" 
                  &111nmousewheel="function anonymous()&#13;&#10;{&#13;&#10;return bbimg(this)&#13;&#10;}"></P>
                  <P>变量的指针就是变量的地址,用取地址运算符‘&amp;’取得赋给指针变量。&amp;STR 就是把 变量 STR 
                  的地址取得。用语句 STRIP = &amp;STR 就能把所取得的 STR 指针存放在 STRIP 指 
                  针变量中。STRIP 的值就变为 51H。可见指针变量的内容是另一个变量的地址,地址所属的 
                  变量称为指针变量所指向的变量。</P>
                  <P>要访问变量 &nbsp;STR &nbsp;除了能用‘STR’这个变量名来访问之外,还能用变量地址来访 
                  问。方法是先用&amp;STR 取变量地址并赋于 STRIP 指针变量,然后就能用*STRIP 来对 STR 
                  进行访问了。‘*’是指针运算符,用它能取得指针变量所指向的地址的值。在上图中指针 变量 STRIP 所指向的地址是 
                  51H,而 51H 中的值是 40H,那么*STRIP 所得的值就是 40H。 
                  使用指针变量之前也和使用其它类型的变量那样要求先定义变量,而且形式也相类似,</P>
                  <P>一般的形式如下:</P>
                  <P>数据类型&nbsp;&nbsp; &nbsp;[存储器类型]&nbsp;&nbsp; 
                  &nbsp;*&nbsp;&nbsp; &nbsp;变量名;</P>
                  <P>unsigned &nbsp;char &nbsp;xdata &nbsp;*pi&nbsp;&nbsp;&nbsp; 
                  //指针会占用二字节,指针自身存放在编译器默认存储区,指</P>
                  <P>向 xdata 存储区的 char 类型</P>
                  <P>unsigned char xdata * data pi; //除指针自身指定在 data 区,其它同上</P>
                  <P>int * pi; //定义为一般指针,指针自身存放在编译器默认存储区,占三个字节 
                  在定义形式中“数据类型”是指所定义的指针变量所指向的变量的类型。“存储器类型”</P>
                  <P>是编译器编译时的一种扩展标识,它是可选的。在没有“存储器类型”选项时,则定义为一</P>
                  <P>般指针,如有“存储器类型”选项时则定义为基于存储器的指针。限于 51 芯片的寻址范围,</P>
                  <P><BR style="PAGE-BREAK-BEFORE: auto" clear=all>&nbsp;</P>
                  <DIV class=Section70>
                  <P>指针变量最大的值为 0xFFFF,这样就决定了一般指针在内存会占用 3 个字节,第一字节存 
                  放该指针存储器类型编码,后两个则存放该指针的高低位址。而基于存储器的指针因为不用 
                  识别存储器类型所以会占一或二个字节,idata,data,pdata 存储器指针占一个字节,code,xdata 
                  则会占二个字节。由上可知,明确的定义指针,能节省存储器的开销,这在严格要求程序 体积的项目中很有用处。</P>
                  <P>指针的使用方法很多,限于篇幅以上只能对它做一些基础的介绍。下面用在讲述常量时 
                  的例程改动一下,用以说明指针的基本使用方法。</P>
                  <P>#include &lt;AT89X51.H&gt; //预处理文件里面定义了特殊寄存器的名称如 P1 口定义为 
                  P1</P>
                  <P>void main(void)</P>
                  <P>{</P>
                  <P>//定义花样数据,数据存放在片内 CODE 区中</P>
                  <P>unsigned char code 
                  design[]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,</P>
                  <P>0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,</P>
                  <P>0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0,</P>
                  <P>0xE7,0xDB,0xBD,0x7E,0xFF};</P>
                  <P>unsigned int a;&nbsp;&nbsp;&nbsp; //定义循环用的变量</P>
                  <P>unsigned char b;</P>
                  <P>unsigned char code * dsi;&nbsp;&nbsp;&nbsp; //定义基于 CODE 
                  区的指针</P></DIV>
                  <P><BR style="PAGE-BREAK-BEFORE: auto" clear=all>&nbsp;</P>
                  <DIV class=Section71>
                  <P>do{</P>
                  <P>dsi = &amp;design[0];&nbsp;&nbsp; &nbsp;//取得数组第一个单元的地址</P>
                  <P>for (b=0; b&lt;32; b++)</P>
                  <P>{</P></DIV>
                  <P><BR style="PAGE-BREAK-BEFORE: auto" clear=all>&nbsp;</P>
                  <DIV class=Section72>
                  <P>}</P>
                  <P>}while(1);</P>
                  <P>}</P>
                  <P>for(a=0; a&lt;30000; a++); //延时一段时间</P>
                  <P>P1 = *dsi;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  &nbsp;//从指针指向的地址取数据到 P1 口</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -