- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第1页,共31页,星期日,2025年,2月5日基础要求熟练运用C语言编程。熟练掌握和运用一款单片机。包括硬件结构、寄存器、外设、了解基本汇编指令等。熟悉一款集成开发环境及编译器。独立编写并调通2000行以上的小型程序。第2页,共31页,星期日,2025年,2月5日一、如何编写高质量软件合理划分函数功能,合并常用函数严格的函数、变量命名方法合理划分软件层次。如硬件隔离层、驱动程序层、功能函数层、应用层。合理运用宏定义,提高程序可移植性经常查看反汇编代码,练习优化指令。第3页,共31页,星期日,2025年,2月5日函数划分常用的功能集合,可以合理合并成一个函数利用参数传递,将多个函数合并。例如:某菜单需要将选中的菜单条反色显示,因此需要2个中文显示函数:DisplayString(char*ptr,charx,chary);DisplayStringInvert(char*ptr,charx,chary);可以合并成一个函数DisplayString(char*ptr,charx,chary,boolInvertFlag);注意函数过分合并会造成运算性能下降。第4页,共31页,星期日,2025年,2月5日函数与变量命名严格按照模块名_功能名的方法命名,按正确的英文(甚至拼音也可)命名单词首字母大写例如:ADC_CailbrateZero()CPU_SleepDelay(intTime_ms)Flash_WriteWord(intAddr,intWord)第5页,共31页,星期日,2025年,2月5日软件层次划分合理划分软件层次,将使程序结构清晰层次良好的软件,移植性强对软件开发者来说,便于管理和维护,甚至可实现“代码免维护”大大提高开发速度。例:在某液晶上需要做中文菜单、数字显示、波形显示、滚动条等。为该应用编写液晶驱动函数。第6页,共31页,星期日,2025年,2月5日LCD驱动层划分范例每一层含义明确,功能完整独立每一层只调用其下一层的函数,禁止跨层调用函数。所有变量对于非其它层函数不透明。禁止跨层使用全局变量层次划分越多,执行效率越低更改或更换任何一层的函数,不影响其它层函数的执行。第7页,共31页,星期日,2025年,2月5日合理运用宏定义1.用宏定义作硬件隔离#defineLED1_POUTP1OUT#defineLED1_PDIRP1DIR#defineLED1_BIT(BIT2)/*更换IO只需改以上3行*/#defineLED_ONLED1_POUT|=LED1_BIT/*亮*/#defineLED_OFFLED1_POUT=~LED1_BIT/*灭*//*更换单片机只需修改以上2行*/第8页,共31页,星期日,2025年,2月5日用宏定义自动运算#defineOSC(1000)#defineBAUD(9600)...UBR00=((long)OSC*1000/8)/BAUD;UBR10=0x00;...#defineTIMER_PERIOD12000...TH1=(unsignedint)(65536-TIMER_PERIOD)/256;/*51单片机*/TL1=(unsignedint)(65536-TIMER_PERIOD)%256;...第9页,共31页,星期日,2025年,2月5日用宏定义作编译开关#defineAVE0#defineRMS1#definePEK2#defineUMODEAVE/AVE:平均值RMS真有效值PEK峰值*/...#if(UMODE==RMS)VAC_Ch1=(longint)TempIntV1*TempIntV1;VAC_Ch2=(longint)TempIntV2*TempIntV2;#endif#if(UMODE==AVE)VAC_Ch1=absv(TempIntV1);VAC_Ch2=absv(TempIntV2);#endif...第10页,共31页,星期日,2025年,2月5日用宏定义作功能开关#defineON1#defineOFF0#defineHI_LO2#defineLEV_21#define
您可能关注的文档
最近下载
- 2024-2025学年北京海淀区三上期末数学试卷及答案.pdf VIP
- 国家开放大学(电大)《社会统计学》期末考试复习试题及答案解析.docx VIP
- 八年级数学上册专题14.6 因式分解的应用(压轴题专项讲练)(人教版)(原卷版).docx VIP
- 硬笔楷书笔画.ppt VIP
- 北师大版七年级数学寒假班讲义(基础班).pdf VIP
- 2025年垃圾发电厂数字化升级研究.docx VIP
- 儿童慢性鼻窦炎的诊断和治疗中国专家共识(杭州2024).pptx VIP
- 辽宁初中数学中考考点.docx VIP
- 人呼吸道合胞病毒下呼吸道感染治疗及预防指南(2024版).pptx VIP
- 静设备基础知识.pptx
原创力文档


文档评论(0)