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

📄 第三章 keil c51 vs 标准c.htm

📁 本文档详细介绍了怎样使用keil软件开发单片机程序
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                  lang=EN-US>(8031为缺省CPU)。</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103155><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第一节 </SPAN><SPAN lang=EN-US>Keil 
                  C51扩展关键字</SPAN></A></H2>
                  <P class=MsoBodyTextFirstIndent><SPAN lang=EN-US>C51 
                  V4.0版本有以下扩展关键字(共19个):</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>_at_ <SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>idata<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>sfr16<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>alien<SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; 
                  </SPAN>interrupt<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>small</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>bdata<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>large<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>_task_<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>Code<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>bit<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>pdata</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>using<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>reentrant xdata<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>compact<SPAN style="mso-tab-count: 1">&nbsp; 
                  </SPAN>sbit<SPAN 
                  style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>data<SPAN style="mso-tab-count: 1">&nbsp;&nbsp; 
                  </SPAN>sfr</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103156><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第二节 </SPAN>内存区域<SPAN 
                  lang=EN-US>(Memory Areas):</SPAN></A></H2>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103157><SPAN lang=EN-US style="FONT-SIZE: 15pt">1. 
                  </SPAN><SPAN lang=EN-US>Pragram Area:</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103157"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>由<SPAN 
                  lang=EN-US>Code说明可有多达64kBytes的程序存储器</SPAN></P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103158><SPAN lang=EN-US style="FONT-SIZE: 15pt">2. 
                  </SPAN><SPAN lang=EN-US>Internal Data Memory:</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103158"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>内部数据存储器可用以下关键字说明:</P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>data:直接寻址区,为内部RAM的低128字节<SPAN 
                  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; 
                  </SPAN>00H~7FH</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>idata:间接寻址区,包括整个内部RAM区<SPAN 
                  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>00H~FFH</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>bdata:可位寻址区,<SPAN 
                  style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN><SPAN 
                  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </SPAN>20H~2FH</SPAN></P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103159><SPAN lang=EN-US style="FONT-SIZE: 15pt">3. 
                  </SPAN><SPAN lang=EN-US>External Data Memory</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103159"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>外部<SPAN 
                  lang=EN-US>RAM视使用情况可由以下关键字标识:</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>pdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(Compact 
                  Model)。</SPAN></P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103160><SPAN lang=EN-US style="FONT-SIZE: 15pt">4. 
                  </SPAN><SPAN lang=EN-US>Speciac Function Register 
                  Memory</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103160"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent><SPAN 
                  lang=EN-US>8051提供128Bytes的SFR寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O及其它部件,可由以下几种关键字说明:</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sfr:字节寻址<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>比如 sfr P0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sfr16:字寻址,如sfr16<SPAN 
                  style="mso-spacerun: yes">&nbsp; 
                  </SPAN>T2=0xcc;指定Timer2口地址T2L=0xcc T2H=0xCD</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sbit:位寻址,如sbit EA=0xAF;指定第0xAF位为EA,即中断允许</SPAN></P>
                  <P class=MsoBodyTextIndent 
                  style="MARGIN-LEFT: 36.75pt">还可以有如下定义方法:</P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sbit<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; 
                  </SPAN>0V=PSW^2;(定义0V为PSW的第2位)</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sbit<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; 
                  </SPAN>0V=0XDO^2;(同上)</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt">或<SPAN 
                  lang=EN-US>bit<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>0V-=0xD2(同上)。</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103161><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第三节 </SPAN>存储模式</A></H2>
                  <P 
                  class=MsoBodyTextFirstIndent>存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种:</P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103162><SPAN lang=EN-US style="FONT-SIZE: 15pt">1. 
                  </SPAN><SPAN lang=EN-US>Small模式</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103162"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>所有缺省变量参数均装入内部<SPAN 
                  lang=EN-US>RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。</SPAN></P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103163><SPAN lang=EN-US style="FONT-SIZE: 15pt">2. 
                  </SPAN><SPAN lang=EN-US>Compact模式</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103163"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>所有缺省变量均位于外部<SPAN 
                  lang=EN-US>RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。</SPAN></P>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103164><SPAN lang=EN-US style="FONT-SIZE: 15pt">3. 
                  </SPAN><SPAN lang=EN-US>large模式</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103164"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent>所有缺省变量可放在多达<SPAN 
                  lang=EN-US>64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。</SPAN></P>
                  <P class=MsoBodyTextFirstIndent>提示:存储模式在<SPAN 
                  lang=EN-US>C51编译器选项中选择。</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103165><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第四节 </SPAN>存储类型声明</A></H2>
                  <P 
                  class=MsoBodyTextFirstIndent>变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:<SPAN 
                  lang=EN-US>code,data,idata,xdata,pdata说明,例:</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>data uar1</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>char code array[ ]=“hello!”;</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>unsigned char xdata arr[10][4][4];</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103166><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第五节 </SPAN>变量或数据类型</A></H2>
                  <P class=MsoBodyTextFirstIndent><SPAN 
                  lang=EN-US>C51提供以下几种扩展数据类型:</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>bit 位变量值为0或1</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sbit 从字节中定义的位变量<SPAN 
                  style="mso-spacerun: yes">&nbsp; </SPAN>0或1</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sfr<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>sfr字节地址<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>0~255</SPAN></P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 
                  lang=EN-US>sfr16<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>sfr字地址<SPAN style="mso-spacerun: yes">&nbsp; 
                  </SPAN>0~65535</SPAN></P>
                  <P class=MsoBodyTextFirstIndent>其余数据类型如:<SPAN 
                  lang=EN-US>char,enum,short,int,long,float等与ANSI 
C相同。</SPAN></P>
                  <H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103167><SPAN lang=EN-US 
                  style="FONT-SIZE: 16pt">第六节 </SPAN>位变量与声明</A></H2>
                  <H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A 
                  name=_Toc475103168><SPAN lang=EN-US style="FONT-SIZE: 15pt">1. 
                  </SPAN><SPAN lang=EN-US>bit型变量</SPAN></A><SPAN 
                  style="mso-bookmark: _Toc475103168"></SPAN><SPAN lang=EN-US 
                  style="FONT-SIZE: 12pt"><O:P></O:P></SPAN></H3>
                  <P class=MsoBodyTextFirstIndent><SPAN 
                  lang=EN-US>bit型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。</SPAN></P>
                  <P class=MsoBodyTextFirstIndent>注意:</P>
                  <P class=MsoBodyTextIndent style="MARGIN-LEFT: 36.75pt"><SPAN 

⌨️ 快捷键说明

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