嵌入式软件设计及编程思想分析报告.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机软件设计及编程思想 李海全 设计原则 1.可靠性 2.维护性(可读性) 3.移植性 文件结构 遵循一模块一文件格式 注释 特别是设计更改需注明 更改日期、更改人、更改记录(头、行) 文件头加注释说明功能 文件结构 程序版式(易读性) 以布局清晰为原则 不同函数体 不同功能(同一函数中、定义变量) 缩进 (不要使用空格、使用TAB(4格)) 程序版式(易读性) 推荐写法 if (condition) { … // program code } else { … // program code } 不推荐写法 if (condition){ … // program code } else { … // program code } 少用if (width height) dosomething(); 综合考虑所有条件判断 if考虑else,switch考虑default 程序版式(易读性) 如果出现嵌套的{},则使用缩进对齐,如: { … { … } … } 命令规则 注意大小写 int HowManyPeople; // 全局变量 int HowMuchMoney; 使用下划线 int draw_mode; 不要使用不明含义的缩写 设计理念 空间换时间 频繁计算的时间为主 例:中断中采样、扫描、读取DI控制DO等 应尽可能提高速度,减少调函数、循环次数 时间换空间 很少需要计算的 例:校准、按键操作等应优化代码减少存储空间 设计头文件 设计头文件 设计头文件 显示设计 数码 液晶 混合设计思路 段式显示 段式显示 设计显示驱动 设计显示驱动 动态扫描设计 动态扫描驱动 按键检测 按键设计 按键设计 按键设计 菜单设计 菜单设计 菜单设计 菜单设计 菜单设计 菜单设计 菜单设计 存储设计 存储设计 存储设计 存储设计一 存储设计二 存储设计三 DI读取 DI读取 DI读取 DI读取 DI读取 DO设置 DO设置 通信 通信编程需采用收数据帧方式处理,不同波特率延时不同,收帧最短帧间隔时间应大于1.5个字符时间 以9600波特率为例,如果接收的2个字符间隔时间超过1.5毫秒则认为是2帧。发送数据帧时应有延时,从收到帧结束到发送帧开始最短间隔应大于3.5个字符时间。波特率超过9600可以以9600的时间为准。 通信 通信 设计时应按帧接收 例: 可用1毫秒定时器做,检测是否有数据接收 struct { unsigned short int INNUM,START; unsigned char R_ALL,S_Dly,S_Flag,R_Dly,R_Flag; unsigned char inbuff[100]; unsigned char outbuff[270]; unsigned short int OUTNUM; unsigned char *sbuff; }UartUD1; 通信 设计时应按帧接收 例: 可用1毫秒定时器做,检测是否有数据接收 void USART1_SendRec_Dly(void) { if(UartUD1.S_Flag) { if(UartUD1.S_Dly==0) { UartUD1.S_Flag=0; USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); if(UartUD1.OUTNUM!=0) { UartUD1.OUTNUM--; USART_SendData(USART1,*UartUD1.sbuff); UartUD1.sbuff++; } } else UartUD1.S_Dly--; } else if(UartUD1.OUTNUM==0)USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 。。。。。。 } 通信 设计时应按帧接收 例: 可用1毫秒定时器做,检测是否有数据接收 void USART1_SendRec_Dly(void) { 。。。。 switch(Comm_Baud) { case 3: if(UartUD1.R_Dly=4) { UartUD1.R_Flag=1; if(UartUD1.START2)UartUD1.R_ALL=1;} else { UartUD1.R_Dly++; UartUD1.R_Flag=0; } break;

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档