软件设计详细说明

上传人:luoxia****01803 文档编号:74516945 上传时间:2019-01-28 格式:PDF 页数:22 大小:308.06KB
返回 下载 相关 举报
软件设计详细说明_第1页
第1页 / 共22页
软件设计详细说明_第2页
第2页 / 共22页
软件设计详细说明_第3页
第3页 / 共22页
软件设计详细说明_第4页
第4页 / 共22页
软件设计详细说明_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《软件设计详细说明》由会员分享,可在线阅读,更多相关《软件设计详细说明(22页珍藏版)》请在金锄头文库上搜索。

1、公司通用文档头 软软 件件 设设 计计 详详 细细 说说 明明 项目名项目名 TMPT 日期日期 2002/9/12 版本号版本号 V0.1 设计者设计者 AJIE http:/ http:/ Author: ajie 文档更新表更新日期更新原因 更新日期更新日期 更新原因更新原因 2002/9/10 增加测量准确度更改温度查表算法 2002/9/11 目录目录 软件各模块的功能实现软件各模块的功能实现 主要是各执行模块的规划主要是各执行模块的规划 一实时时钟不考虑其他模块影响时的功能实现与其他模块的联系最小时间片段 二AD 转换 三UART RX 功能 四UART TX 功能 五显示切换按键

2、处理 六LCD 显示 七软件看门狗 任何一个模块的设计都应该是先从不考虑其他模块的影响开始 然后把其他模块的影响加 进来遵从一种从简单到复杂的原则这里我只有第一个模块是完整的后面我都不写了 因为是让大家看看所以举一反三吧 程序空间规划程序空间规划 一 ROM 空间规划 二二 RAM 空间规划变量的定义及各变量的作用解释 其实是对你上面模块变量的一种总结但已经联系到了具体的编程 程序状态转移图程序状态转移图 适合复杂的控制情况此处因为只有一种稳态单循环所以不画了你可以看看无绳电 话或者是手机的软件设计中的程序状态转移图那个是复杂的画得很详细 程序结构规划程序结构规划 就是监控程序的规划主程序在什

3、么状态时应该监控哪些功能应该处在哪种循环扫描状 态下需要注意的只有一点执行程序段的时间不能超过最短扫描时间否则你在执行程序 时有功能要求处理而你没扫描到直到下次功能要求处理这就使程序发生错误可以参 考一下北航的 单片机应用程序设计技术 周航慈著 那里对监控程序的写法说得好清楚的 由于这里只有一种稳态一个主扫描循环功能比较单一这部分我就不列出来了 程序流程图程序流程图 一般用 VISIO 画速度很快的这个肯定大家都会 这样做的好处让你看见一个复杂系统原来并不复杂理顺关系从简单到复杂一步一 步来你很快就明白了这样在升级或者是修改时你可以马上找到相应的模块改之并 知道哪些相关模块需要修改否则根本不用

4、考虑 由于后面部分都是大家看看就知道该怎么干的 我就不多说了 后面也没有相关的具体例子 模块一模块一 实时时钟实时时钟 采用 TIMER1 来计时 设定为每过 025 S 中断一次 则 一初始化 1初始化比较寄存器和控制寄存器 #0FFH CR10 比较寄存器 计数器 TM1 中的值等于比较比较寄存器中的值 时产生中断 INTTM1 #0FH TCL1 Timer clock select register 1 TCL1.3 TCL1.2 TCL1.1 TCL1.0 TIMER1 CLOCK 0 1 1 0 fx / 2 pwr 2 0 1 1 1 fx / 2 pwr 3 1 0 0 0 f

5、x / 2 pwr 4 1 0 0 1 fx / 2 pwr 5 1 0 1 0 fx / 2 pwr 6 1 0 1 1 fx / 2 pwr 7 1 1 0 0 fx / 2 pwr 8 1 1 0 1 fx / 2 pwr 9 1 1 1 0 fx / 2 pwr 10 1 1 1 1 fx / 2 pwr 12 TCL1.7 TCL1.6 TCL1.5 TCL1.4 TIMER2 CLOCK NOT USED . DEFINED AS 0 0 0 0 #01H TMC1 0 0 0 0 0 TMC12 TCE2 TCE1 TMC12 0 8bit_timer register X 2

6、channels mode ( TM1 TM2 ) 1 16bit_timer register X 1 channel mode ( TM ) TCE2 0 operation stop ( TM2 clear to 0 ) 1 operation enable TCE1 0 operation stop ( TM2 clear to 0 ) 1 operation enable 2开放中断口 二INTTM1 中断处理 进入中断即表示时间已过 025 秒 1用 QTR_SECOND_CNT 统计中断次数每中断一次QTR_SECOND_CNT 加 1 当 QTR_SECOND_CNT 等于 4

7、 时表示时间已过一秒则清 QTR_SECOND_CNT 并置位一秒标志 F_ONE_SECOND RAM QTR_SECOND_CNT INIT #0 此变量用来统计 0.25 秒的中断次数如果已有 4 次则表示时间 已过一秒则清此变量 FLAG F_ONE_SECOND INIT #0 此标志用来标示时间是否已过一秒如果过一秒则置位此标志 1 秒的相关处理结束后清此标志 2判断发送数据计时器 UART_TM_CNT 是否等于 0如果等于 0则不作任何 处理跳出中断如果不等于 0则 UART_TM_CNT 减一 UART_TM_CNT 用来统计发送一个 MSG 后的时间详细说明见发送模块里 面

8、关于此变量的定义 三主循环 判断 F_ONE_SECOND 标志是否置位如果置位则表示一秒已过进入修改时 间模块UPDATE_TIME 1 清一秒标志 F_ONE_SECOND 2 一秒计数器 ONE_SECOND_CNT 加 1判断 1 秒计数器等于 5 否如果不等 于 5则该计数器加一并进入下一步如果等于 5 则表示 5 秒钟已过再 判断 ADCR_CNT 是否等于 8如果不等于 8表示一分钟内还没采样 8 次温 度值则 ADCR_CNT 加一并打开 A/D 中断再进入下一步如果等于 8 则表示一分钟内已采样 8 次温度值则不作任何处理进入下一步 3 修改实时时钟UPDATE_CLOCK

9、1 秒处理 秒加 1再判断秒是否大于 59如果大于 59 则进入分处理并 清秒变量否则直接结束 RAM SECOND 0 59 INIT #0 1 bytes HEX 2分处理 进入后分加一并置位发送时间标志 F_SEND_TM_MSG 和 置位计算温度累加值标志 F_ADD_TMPT清温度转换次数变 量 ADCR_CNT 如果分大于 59 则进入时处理并清分变量 否则结束修改 RAM MINUTE 0 59 INIT #0 1 bytes HEX 3时处理 进入后时加 1则判断时间是否已过 23 小时如果已过则 进入天处理并清时变量否则结束修改 RAM HOUR 0 23 INIT #0 1

10、 bytes HEX 4天处理 进入后天加 1判断该月的最大天数用天变量与之进行比 较如果已过则天初始化为 1并进入月处理否则结束修 改 RAM DATE 1 31 INIT #1 1 bytes HEX 5月处理 进入后月加 1判断月是否已大于 12 如果大于则月置 值 1并结束修改 RAM MONTH 1 12 INIT #1 1 bytes HEX 与其他模块的联系的详细说明 一A/D 转换模块 在主循环中增加一个 RAM ONE_SECOND_CNT 统计 1 秒 的次数,每过 5 秒则判断此一分钟里面是否已经获得了 8 次 ADCR 值如果是 则不做任何相关处理否则继续开 ADCR

11、中断并累加 ADCR 的中断计数值 即 ADCR_CNT 加 1 二何一个循环路径的执行时间不能超过 1 秒否则影响实时时钟 三UART 通讯模块 1 TD338 UART 发送完一个 MSG 后等待 DECT FP 回答如果 3 秒后还没有 收到回送信息则重发此 MSG 包重发三次还没有收到则放弃在 UART 通讯中发完一个数据包后即置 UART_TIME_CNT 为 120.25 s * 12 = 3 TIMER1 每中断一次即对此 RAM 进行操作如果 UART_TIME_CNT 为 0则不进行任何处理否则每次减 1 TD338 UART 在发送完一个 MSG 后即等待 DECT FP

12、的 ACK MSG如果 收到 ACK MSG 则清 UART_TIME_CNT 否则对 UART_TIME_CNT 进行判 断如果 UART_TIME_CNT 等于 0则表示 3 秒已过无 ACK MSG重发 上次所发数据 用此计时模块来统计 3 秒时间已过否 存在一定的误差 误差范围在 0.25s 内 2时钟每过一分钟则置时间发送标志通过 UART 口给 DECT FP 发送 SEND_TIME_MSG 模块二模块二 AD 转换转换 在 AD 转换中我们用 ANI0 来用做模拟信号输入口转换时间是 100/fx 用软件启动 初始化为 Stop conversion 则 一 初始化 #20H

13、ADM CS TRG FR1 FR0 ADM3 ADM2 ADM1 HSC CS A/D convertion operation control 0 operation stop 1 operation start TRG External trigger selection 0 no external trigger ( software starts ) 1 conversion starts by external trigger ( hardware starts ) FR1 FR0 HSC 0 0 1 160 / fx 0 1 1 80 / fx 1 0 0 100 / fx 1

14、0 1 200 / fx ADM3 ADM2 ADM1 Analog Input Channel Selection 000 111 VS ANI0 ANI7 #01H ADIS number of analog input input channel selection register 0 0 0 0 ADIS3 ADIS2 ADIS1 ADIS0 ADIS3 ADIS2 ADIS1 ADIS0 0 0 0 0 no analog input channel 0 0 0 1 1 channel ( ANI0 ) 0 0 1 0 2 channel ( ANI0 , ANI1 ) 0 0 1

15、 1 3 channel ( ANI0 ANI2 ) 0 1 0 0 4 channel ( ANI0 ANI3 ) 0 1 0 1 5 channel ( ANI0 ANI4 ) 0 1 1 0 6 channel ( ANI0 ANI5 ) 0 1 1 1 7 channel ( ANI0 ANI6 ) 1 0 0 0 8 channel ( ANI0 ANI7 ) 二 在改变实时时钟模块UPDATE_TIME下进行如下判断 时钟已过 5 秒否 如果已过 清 1 秒计时器 并判断这一分钟内是否已进行了 8 次 A/D 转换如果是则不再进行 A/D 转换如果不是则打开 AD 转换 即 #1 CS 时钟没过 5 秒则不作处理 RAM ONE_SECOND_CNT INIT #0 统计秒的次数 RAM ADCR_CNT INIT #0 统计一分钟内 A/D 转换的次数 如果一分钟内转换了 8 次则不 再转换 ADCR_C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Windows相关

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号