📄 第四章 keil c51高级编程.htm
字号:
vAlign=top width=262>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">双字节由<SPAN
lang=EN-US>R6和R7返回,MSB在R6<O:P></O:P></SPAN></SPAN></P></TD></TR>
<TR>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=156>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">long&unsigned
long <O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 79.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=106>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">R4~R7<O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 196.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=262>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">MSB在R4,<SPAN
style="mso-spacerun: yes">
</SPAN>LSB在R7<O:P></O:P></SPAN></P></TD></TR>
<TR>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=156>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">float<O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 79.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=106>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">R4~R7<O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 196.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.75pt solid; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=262>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">32Bit
IEEE格式</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P></TD></TR>
<TR>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 117pt; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=156>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">一般指针</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: windowtext 0.75pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 79.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=106>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">R1~R3<O:P></O:P></SPAN></P></TD>
<TD
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 196.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-left-alt: solid windowtext .75pt; mso-border-top-alt: solid windowtext .75pt"
vAlign=top width=262>
<P class=MsoNormal
style="TEXT-ALIGN: center; tab-stops: 63.0pt"
align=center><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">存储类型在<SPAN
lang=EN-US>R3 高位R2
低R1<O:P></O:P></SPAN></SPAN></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal
style="TEXT-INDENT: 24pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">(4) SRC控制</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="TEXT-INDENT: 24pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">该控制指令将<SPAN
lang=EN-US>C文件编译生成汇编文件(.SRC),该汇编文件可改名后,生成汇编.ASM文件,再用A51进行编译。</SPAN></SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<H2 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A
name=_Toc475103190><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\LiB目录下有几个C源文件,这几个C源文件有非常重要的作用,对它们稍事修改,就可以用在自己的专用系统中。</SPAN></P>
<H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A
name=_Toc475103191><SPAN lang=EN-US style="FONT-SIZE: 15pt">1.
</SPAN>动态内存分配</A></H3>
<P class=MsoNormal
style="MARGIN-LEFT: 90pt; TEXT-INDENT: -66pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">init_mem.C:此文件是初始化动态内存区的程序源代码。它可以指定动态内存的位置及大小,只有使用了init_mem(
)才可以调回其它函数,诸如malloc calloc,realloc等。</SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 90pt; TEXT-INDENT: -66pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">calloc.c:此文件是给数组分配内存的源代码,它可以指定单位数据类型及该单元数目。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 90pt; TEXT-INDENT: -66pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">malloc.c:此文件是malloc的源代码,分配一段固定大小的内存。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 90pt; TEXT-INDENT: -66pt; TEXT-ALIGN: left; tab-stops: 63.0pt"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">realloc.c:此文件是realloc.c源代码,其功能是调整当前分配动态内存的大小。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<H3 style="MARGIN-LEFT: 0cm; TEXT-INDENT: 0cm"><A
name=_Toc475103192><SPAN lang=EN-US style="FONT-SIZE: 15pt">2.
</SPAN><SPAN lang=EN-US>C51启动文件STARTUP.A51</SPAN></A></H3>
<P class=MsoBodyTextFirstIndent>启动文件<SPAN
lang=EN-US>STARTUP.A51中包含目标板启动代码,可在每个project中加入这个文件,只要复位,则该文件立即执行,其功能包括:</SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 45pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; tab-stops: list 45.0pt left 63.0pt; mso-list: l36 level1 lfo10"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings">l<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">定义内部<SPAN
lang=EN-US>RAM大小、外部RAM大小、可重入堆栈位置</SPAN></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 45pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; tab-stops: list 45.0pt left 63.0pt; mso-list: l36 level1 lfo10"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings">l<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">清除内部、外部或者以此页为单元的外部存储器</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 45pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; tab-stops: list 45.0pt left 63.0pt; mso-list: l36 level1 lfo10"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings">l<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">按存储模式初使化重入堆栈及堆栈指针</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><O:P></O:P></SPAN></P>
<P class=MsoNormal
style="MARGIN-LEFT: 45pt; TEXT-INDENT: -21pt; TEXT-ALIGN: left; tab-stops: list 45.0pt left 63.0pt; mso-list: l36 level1 lfo10"
align=left><SPAN lang=EN-US
style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings">l<SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN><SPAN
style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">初始化<SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -