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

📄 模块化编程的分层设计经验和文档管理办法(xwj).htm

📁 编程规范大全
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<TD>
<P align=center>&nbsp;[<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=16591"><U><FONT style="BACKGROUND-COLOR: #ffff00" color=#ff0000>岁月如歌——记匠人的百宝箱博客开通一周年</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=17379"><U><FONT color=#0000ff>事件驅動觀念</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=17377"><U><FONT color=#0000ff>单片机程序设计中运用事件驱动机制</FONT></U></A>]</P></TD>
<TR>
<TD>
<P align=center>[<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18941"><U><FONT color=#0000ff>计算机族必喝的健康饮料</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18714"><U><FONT color=#0000ff>男人·女人·电脑</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18713"><U><FONT color=#0000ff>学编程的人不能不看的好文章</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18742"><U><FONT color=#0000ff>PIC机与MCS-51的区别</FONT></U></A>]</P></TD>
<TR>
<TD>
<P align=center>[<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=19794"><U><FONT color=#0000ff>一种软件去除键抖动的方法</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=19752"><U><FONT color=#0000ff>司马光,你干嘛砸缸?</FONT></U></A>] [<A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=19748"><U><FONT color=#0000ff>编码规范</FONT></U></A>]&nbsp;</P></TD>
<TR>
<TD>
<P align=center><FONT color=#ff0000>调查:[</FONT><A href="http://21icbbs.com/club/vote/showvote.asp?id=98" target=_blank><U><FONT color=#ff0000>您认为《匠人的百宝箱》如何?</FONT></U></A><FONT color=#ff0000>] [</FONT><A href="http://21icbbs.com/club/vote/showvote.asp?id=129" target=_blank><U><FONT color=#ff0000>您最喜欢《匠人的百宝箱》中哪个栏目?</FONT></U></A><FONT color=#ff0000>] [</FONT><A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18993"><U><FONT color=#ff0000>请网友来评选最佳队员专栏</FONT></U></A><FONT color=#ff0000>]</FONT>&nbsp;</P></TD></TR></TBODY></TABLE></P></TD></TR></TBODY></TABLE></P>
<P align=left>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="100%" bgColor=#cccccc border=0>
<TBODY>
<TR bgColor=#f8f8f8>
<TD>
<P align=left><FONT color=#ff0000 size=4><STRONG><img src=images/face/1.gif ><a href=blog.asp?name=cxjr&subjectid=66>[编程技巧]<a href=more.asp?name=cxjr&id=9721>模块化编程的分层设计经验和文档管理办法(xwj)</a></STRONG></FONT><BR>程序匠人&nbsp;&nbsp;&nbsp; 2006-2-28 21:33:00&nbsp;&nbsp;&nbsp;&nbsp; <a href=more.asp?name=cxjr&id=9721>阅读全文(839)</a> | <a href=more.asp?name=cxjr&id=9721#comment>回复(0)</a> | <a href=showtb.asp?id=9721 target=_blank>引用(0)</a><BR><FONT face=宋体 size=4><STRONG>[</STRONG></FONT><A href="http://blog.21ic.org/more.asp?name=cxjr&amp;id=6250" target=_blank><FONT face=宋体 color=#ff0000 size=4><STRONG>广告8号位</STRONG></FONT></A><FONT face=宋体 size=4><STRONG>]&nbsp;[</STRONG></FONT><A href="http://blog.21ic.org/more.asp?name=cxjr&amp;id=7705"><U><FONT style="BACKGROUND-COLOR: #000000" face=宋体 color=#ffffff size=4><STRONG>免责声明</STRONG></FONT></U></A><FONT face=宋体 size=4><STRONG>] [</STRONG><A href="http://blog.21ic.com/more.asp?name=cxjr&amp;id=18993"><U><FONT style="BACKGROUND-COLOR: #ffff00" color=#ff0000 size=3><STRONG>请网友来评选最佳队员专栏!</STRONG></FONT></U></A><STRONG>]</STRONG></FONT></P></TD></TR>
<TR bgColor=#ffffff>
<TD height=0>
<DIV align=left><P>模块化编程的分层设计经验 和文档管理办法(xwj)<BR>xwj 发表于 2006-2-26 23:28:00 </P>
<P>模块化编程的分层设计经验 </P>
<P>操作要点:<BR>1、每一层直接对下一层操作,尽量避免交叉调用或越级调用<BR>2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层<BR>3、相同功能的外部函数尽量一致,尽量保证通用性<BR>4、对于初次编程的模块,要严格保证中间各层的正确性</P>
<P>好处:<BR>1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层<BR>2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了<BR>3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了<BR>4、对于C语言编程,只需简单修改物理层就可完成不同单片机间的移植</P>
<P>呵呵,一些经验,大家有好的想法可以继续补充指正</P>
<P>一般分为以下几层:<BR>&nbsp;&nbsp; ---应用层--面向用户<BR>软|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>件|---协议层--现成的协议栈、软件包、标准库,大多是移植,不自己写,如FAT、TCPIP、OS、GAME等<BR>相|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>关|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>&nbsp;&nbsp; ---功能层--实现器件无关性,实现器件的各种功能扩展和器件通用性处理,如LCD的线、圆、矩形等功能,如EEPROM的块写,自己的print<BR>硬|&nbsp;&nbsp;&nbsp;&nbsp; ↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>件|---器件层--实现硬件无关性,保证IO无关性,只提供器件的基本功能,如字节读写、点<BR>驱|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>动 ---物理层--IO相关,直接操作硬件,实现硬件连接的多种方案</P>
<P>对应文件举例1:<BR>&nbsp;&nbsp; ---应用层--面向用户的主程序<BR>软|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等<BR>相|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>关|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>&nbsp;&nbsp; ---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;引出LCD的线、圆、矩形、填充等功能<BR>硬|&nbsp;&nbsp;&nbsp;&nbsp; ↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>件|---器件层--文件lcd61202.c;lcd1520.c;lcd6963.c;lcd133x.c;lcd44780.c;lcd162x.c;lcd856x.c或者lcd1602.c;lcd12864.c;lcd320240.c等,引出基本的初始化、定位、写点、写字节函数<BR>驱|&nbsp;&nbsp;&nbsp;&nbsp; ↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>动 ---物理层--文件lcd61202_io.c;lcd61202_bus.c;引出器件的基本读写函数</P>
<P>对应文件应用举例2:<BR>&nbsp;&nbsp; ---应用层--面向用户的主程序<BR>软|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等<BR>相|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>关|&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>&nbsp;&nbsp; ---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;如EEPROM的块写统一化<BR>硬|&nbsp;&nbsp;&nbsp;&nbsp; ↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>件|---器件层--文件ee24xx.c;ee93xx.c;ee_sdcard.c;ee29xx.c;ee28f.c;ee39xx.c;等<BR>驱|&nbsp;&nbsp;&nbsp;&nbsp; ↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ↓<BR>动 ---物理层--文件bus_i2c.c;bus_spi.c等<BR>&nbsp;<BR>&nbsp;<BR>阅读全文(59) | 回复(1) | 引用(0) </P>
<P><BR>网友huangxd 的相关文章 <BR>xwj发表评论于2006-2-26 23:30:00 </P>
<P>我的工程文件的组织方法(高手莫进) <BR>&nbsp;huangxd 发表于 2005-7-11 10:28 侃单片机 ←返回版面&nbsp;&nbsp;&nbsp; </P>
<P>一个大的单片机程序往往包含很多模块,我是这样组织的<BR>1。每一个C源文件都要建立一个与之名字一样的H文件,里面仅仅包括该C文件的函数的声明,其他的什么也</P>
<P>不会有,比如变量的定义啊等等不应该有。<BR>2。建立一个所有的文件都要共同使用的头文件,里面当然就是单片机的管脚使用的定义,还有里面放那些需</P>
<P>要的KEIL系统的头文件,比如 #include&lt;reg52.h&gt;,#include&lt;absacc.h&gt;等等,把这个文件命名为common.h,</P>
<P>或者干脆就叫main.h<BR>3,每个C源文件应该包含自己的头文件以及那个共同的使用的头文件,里面还放自己本文件内部使用的全局</P>
<P>变量或者以extern定义的全局变量<BR>4。主文件main.c里面包含所有的头文件包括那个共同使用的文件,main.c里面的函数可以再做一个头文件,</P>
<P>也可以直接放在文件的开头部分声明就可以了,里面一般还有中断服务程序也放在main.c里面<BR>5。对于那些贯穿整个工程的变量,可以放在那个共同的使用的头文件里面,也可以用extern关键字在某<BR>个C源文件里面定义,哪个文件要使用就重复定义一下<BR>6.建立工程的时候,只要把C源文件加到工程中,把H文件直接放到相应的目录下面就可以了,不需要加到工程里面。<BR><FONT size=6>&nbsp;<BR>相关连接:[</FONT><A href="more.asp?name=cxjr&amp;id=4343"><U><FONT color=#ff0000 size=6>编程规范</FONT></U></A><FONT size=6>]</FONT><BR>&nbsp;<A></A></P></DIV></TD></TR></TBODY></TABLE><FONT color=#ff0000></FONT>
<P align=right><A href="http://blog.21ic.org/blog.asp?name=cxjr" target=_blank><FONT color=#ff0000>如果你的‘芯’是一座作坊,我愿做那不知疲倦的程序匠。打造一流博客,我们每天在努力!</FONT></A></P><A href="http://blog.21ic.org/blog.asp?name=cxjr" target=_blank><FONT color=#ff0000></FONT></A><br><a name='comment'></a><table width='90%' border='0' align='center' cellspacing='0' cellpadding='0'> <tr> <td><strong>发表评论:</strong></tr></td></table>
<table width='90%' border='0' align='center' cellspacing='0' cellpadding='0'> <tr> <td><table align='left' width='100%' border='0' cellspacing='0' cellpadding='0'>
<form action='more.asp?name=cxjr&id=9721&action=addcomment_ic' method='post' name='commentform' onSubmit='return Verifycomment()'>
<tr><td height='25'  align='left'>昵称:<input name='UserName' type='text' id='UserName' size='15' maxlength='20' value=''></td></tr>
<tr><td height='25' align='left'>密码:<input name='Password' type='password' id='Password' size='15' maxlength='20' value=''> (游客无须输入密码)</td></tr>
<tr ><td height='25' align='left'  >验证码:<input name='GetCode' type='text' id='GetCode' size='12' maxlength='20' />&nbsp;<img src='inc/code.asp' width='40' height='10' border='0' /><td></tr><tr ><td height='25' align='left'  >主页:<input name='homepage' type='text' id='homepage' size='42' maxlength='50' value='http://'><td></tr><tr ><td height='25' align='left'  >标题:<input name='commenttopic' type='text' id='commenttopic' size='42' maxlength='50' value='回复:模块化编程的分层设计经验和文档管理办法(xwj)'><td></tr><tr height='200'><td ><INPUT type='hidden' name='edit' id='edit' value=''>
<link rel="STYLESHEET" type="text/css" href="images/edit.css">
<Script Src="images/DhtmlEdit.js"></Script>
<table id="oblog_Container" class="oblog_Body" height=100% width=350 cellpadding=1 cellspacing=0 border=0 >
  <tr> 
    <td  height="10"> <table cellpadding=0 cellspacing=0 >
        <tr class="yToolbar" ID="ExtToolbar0" > 
          <td> <select language="javascript" class="oblog_TBGen" id="FontSize" onchange="FormatText('fontsize',this[this.selectedIndex].value);">
              <option class="heading" selected>字号 
              <option value="1">1 
              <option value="2">2 
              <option value="3">3 
              <option value="4">4 
              <option value="5">5 
              <option value="6">6 
              <option value="7">7</option>
            </select> 
          <td class="oblog_Btn" TITLE="加粗" LANGUAGE="javascript" onclick="FormatText('bold', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/bold.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="斜体" LANGUAGE="javascript" onclick="FormatText('italic', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/italic.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="下划线" LANGUAGE="javascript" onclick="FormatText('underline', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/underline.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="取消格式" LANGUAGE="javascript" onclick="FormatText('RemoveFormat', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/removeformat.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="左对齐" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifyleft', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/aleft.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="居中" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifycenter', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/center.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="右对齐" NAME="Justify" LANGUAGE="javascript" onclick="FormatText('justifyright', '');ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/aright.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td class="oblog_Btn" TITLE="插入表情" LANGUAGE="javascript" onclick="oblog_foremot()" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/smiley.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>
          <td id="forecolor" name=forecolor class="oblog_Btn" TITLE="字体颜色" LANGUAGE="javascript" onclick="oblog_foreColor();" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn'; > 
            <img class="oblog_Ico" src="images/fgcolor.gif" WIDTH="16" HEIGHT="16" unselectable="on" > </td>
          <td id="backcolor" class="oblog_Btn" TITLE="字体背景颜色" LANGUAGE="javascript" onclick="oblog_backColor();ondrag='return false;'" onmouseover=this.className='oblog_BtnMouseOverUp'; onmouseout=this.className='oblog_Btn';> 
            <img class="oblog_Ico" src="images/fbcolor.gif" WIDTH="16" HEIGHT="16" unselectable="on"> </td>

⌨️ 快捷键说明

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