1、QJ/MK0x.0xx-20001美 的 集 团 空 调 事 业 部 企 业 标 准QJ/MKxxxxxxxx A/D 采样程序的设计指引QJ/MK21 范围A/D 采样子程序设计指引 是有关软件工程师在微控制器软件开发工作中针对温度等模拟量的作用及其特性,提供数据采集功能方面可供适用的软件设计参考。2 引用资料采用日本 NEC 公司的 RA78K0S 汇编语言编写技术标准及其 78K0S 系列八位单片机 UPD78F9177 芯片的相关技术资料。3 定义汇编语言:是用于编写微处理器软件最基本的编程语言。汇编程序包:是一组程序的总称,用于把汇编语言的源程序文件转换成机器代码的程序,通常包括汇编
2、程序连接程序目标码转换程序和其它库管理程序表转换程序等。4 A/D 采样程序设计说明4.1 硬件资源的简单介绍根据软件设计任务要求的 A/D 转换模拟量输入通道来决定芯片管脚资源定义,如本A/D 采样子程序设计指引中所涉及到的室内环境温度和室内管温参数,就需要两路模拟量输入通道芯片管脚资源。4.2 功能该子程序模块可以被主程序流程直接调用实现室内环境温度和室内管温采集功能。4.3 性能模拟量采集精度一般依赖于单片机芯片内所集成的 A/D 转换器位数及包括传感器本身精度,如本采样子程序设计指引示范源程序采用的 UPD78F9177 芯片内的 A/D 转换器具有十位精度。4.4 算法本程序设计指引
3、模拟量采集算法选用求平均值算法,按一定的采样间隔时间连续采样六次,除去其中最大值和最小值求和后再求平均值,最后查表得出相应的温度值,具体的算法步骤参考程序流程图。4.5 流程逻辑参考温度采样子程序通用标准模块表格中的程序流程图。4.6 接口参数参考温度采样子程序通用标准模块表格中的子程序接口变量参数。5 采样初始化子程序设计说明该子程序主要实现初始化芯片的 A/D 转换控制器工作方式,如转换时间和精度等,可以考虑在微控制器上电复位时被主程序初始化流程调用。附加说明:本标准由电控开发部提出。由研发中心标准化中心归口管理。本标准由电控开发部负责起草。本标准主要起草人: 不少于三人QJ/MK3温度采
4、样子程序通用标准模块(基于 UPD78F9177 芯片的 RA78K0S 汇编语言编写)子程序名 ADS9166.ASM 日期 2003/5/20子程序功能说明:通常空调控制器至少都需要采集室内环境温度和室内蒸发器管温等主要模拟量以用来完成制冷或制热控制功能,本子程序功能模块就是通过 A/D 转换器实现室内环境温度和室内管温模拟量采样功能。日本 NEC 公司的八位单片机 UPD78F9177 芯片本身具有一个将模拟输入量转换为数字量的 A/D 转换器,它能控制最多达六个模拟输入通道,可以轻松实现温度采集功能。子程序接口变量参数变量名称 属性 内容定义TempSamp 公用变量 温度采样子程序入
5、口ADSInit 公用变量 温度采样初始化程序入口SampInter 公用变量 温度采样间隔时间TempA 外部引用变量 室内环境温度TempE 外部引用变量 室内管温TAErr 外部引用位变量 室内温度传感器开短路标志TEErr 外部引用位变量 室内管温传感器开短路标志SampCnt 局部变量 采样次数ADCSumL 局部变量 采样和低位ADCSumH 局部变量 采样和高位ADCMax 局部变量 采样最大值ADCMin 局部变量 采样最小值主程序流程中子程序接口引用说明:上电复位初始化过程CALL !ADSInit ;调用温度采样初始化程序主流程循环MainPro: ;主程序标号CALL !
6、TempSamp ;调用温度采样子程序BR MainProQJ/MK4温度采样初始化程序流程图ADSInit:入口初始化 A/D 转换控制器初始化 A/D 转换通道启动 A/D 转换返回温度采样子程序流程图TempSamp:入口SampInter 采样间隔时间?否 是否A/D 转换完成是第一次采样?否 是除去最大和最小值初始化最大和最小值采样求和第六次采样?否 是采样求均值判断模拟输入通道室内温度查表 室内管温查表设置管温输入通道 设置室温输入通道返回QJ/MK5温度采样源程序示例;*; MDV Air Conditioner temperature AD sample demo; Assem
7、bled by RA78K0S language; File name: ADS9166.asm; Date: 2003/5/20;*;$PROCESSOR(9166); public PUBLIC TempSampPUBLIC ADSInitPUBLIC SampInterEXTRN TempA ;indoor environment temperature variableEXTRN TempE ;indoor evaporator temperature variableEXTBIT TAErr ;indoor temperature sensor shortcircuit or cut
8、 flagEXTBIT TEErr ;evaporator temperature sensor short or cut falgDATAS1 DSEG SADDRPSampCnt: DS 1 ;sample counterADCSumL: DS 1 ;A/D sample data sumADCSumH: DS 1SampInter: DS 1 ;AD sample interval timerADCMax: DS 1 ;A/D sample maximum dataADCMin: DS 1 ;A/D sample minimum data;=; A/D control register
9、initialize;=ADSInit:SET1ADMK0MOV ADM0,#20H ;A/D conversion Time is 19.2us MOV ADS0,#0 ;select indoor temperature AD sample channelSET1ADCS0 ;A/D conversion startupRET;=; indoor =TempSamp:CMP SampInter,#50BNC $ADStart ;0.1 second A/D sample intervalQJ/MK6RETADStart:NOPBT ADIF0,$ADsampleBR ADStartADsa
10、mple:CLR1 ADIF0MOV A,ADCR0MOV SampInter,#0INC SampCntCMP SampCnt,#1BNZ $ADMinChkMOV ADCSumL,#0MOV ADCSumH,#0MOV ADCMax,#0MOV ADCMin,ARETADMinChk:CMP A,ADCMinBNC $ADMaxChkXCH A,ADCMinADMaxChk:CMP A,ADCMaxBC $ADSumXCH A,ADCMaxADSum: ;A/D sample data sumADD A,ADCSumLBNC $ADSum0INC ADCSumHADSum0:MOV ADC
11、SumL,ACMP SampCnt,#6BNC $ADMaxMinRETADMaxMin:MOV SampCnt,#0MOV A,ADCSumHRORC A,1XCH A,ADCSumHMOV A,ADCSumLRORC A,1XCH A,ADCSumLMOV A,ADCSumHRORC A,1QJ/MK7MOV A,ADCSumLRORC A,1MOV X,A ;send data to A/D sample bufferMOV A,ADS0CMP A,#0 ;sample channel checkBNZ $TempEChanMOV A,XCMP A,#0FEH ;shortcircuit
12、 checkBNC $SetTAFGCMP A,#2 ;cut circuit checkBC $SetTAFGCLR1 TAErrBR DetTempASetTAFG:SET1TAErr ;set indoor temperature sensor short or cut falgDetTempA:MOV A,#0ADDW AX,#TempTabMOVW HL,AXMOV A,HLMOV TempA,A ;indoor temperature measure valueMOV ADS0,#1 ;set evaporator temperature sample channel RETTem
13、pEChan:CMP A,#1BNZ $TempAChanCMP A,#0FEH ;shortcircuit checkBNC $SetTEFGCMP A,#2 ;cut circuit checkBC $SetTEFGCLR1 TEErrBR DetTempESetTEFG:SET1TEErr ;set evaporator temperature sensor short or cut falgDetTempE:MOV A,#0ADDW AX,#TempTabMOVW HL,AXMOV A,HLMOV TempE,A ;indoor evaporator temperature measu
14、re valueTempAChan:MOV ADS0,#0 ;set indoor temperature sample channel RETQJ/MK8TempDetect CSEGTempTab:DB 0 ;0DB 0 ;1DB 0 ;2DB 0 ;3DB 0 ;4DB 0 ;5DB 0 ;6DB 0 ;7DB 0 ;8DB 0 ;9DB 0 ;10DB 0 ;11DB 0 ;12DB 0 ;13DB 0 ;14DB 0 ;15DB 0 ;16DB 0 ;17DB 0 ;18DB 0 ;19DB 0 ;20DB 0 ;21DB 0 ;22 -15 84.219DB 1 ;23 -14 7
15、9.311DB 2 ;24 -13.5DB 2 ;25 -13 74.536DB 3 ;26 -12 70.170DB 4 ;27 -11.5DB 4 ;28 -11 66.090DB 5 ;29 -10 62.276DB 6 ;30 -9.5DB 6 ;31 -9 58.708DB 7 ;32 -8 56.369DB 8 ;33 -7.5DB 8 ;34 -7 52.244DB 9 ;35 -6.5DB 9 ;36 -6 49.316DB 10 ;37 -5.5DB 10 ;38 -5 46.573QJ/MK9DB 11 ;39 -4.5DB 11 ;40 -4 44.000DB 12 ;4
16、1 -3 41.588DB 13 ;42 -2.5DB 13 ;43 -2 39.824DB 14 ;44 -1.5DB 14 ;45 -1 37.199DB 14 ;46 -1DB 15 ;47 -0.5DB 15 ;48 0 35.202DB 16 ;49 0.5DB 16 ;50 1 33.327DB 17 ;51 1.5DB 17 ;52 2 31.564DB 18 ;53 2.5DB 18 ;54 3 29.906DB 18 ;55 3DB 19 ;56 3.5DB 19 ;57 4 28.346DB 20 ;58 4.5DB 20 ;59 5 26.878DB 21 ;60 5.5
17、DB 21 ;61 6 25.495DB 21 ;62 6DB 22 ;63 6.5DB 22 ;64 7 24.193DB 22 ;65 7DB 23 ;66 7.5DB 23 ;67 8 22.566DB 24 ;68 8.5DB 24 ;69 9 21.809DB 24 ;70 9.5DB 25 ;71 9.5DB 25 ;72 10 20.718DB 26 ;73 10.5DB 26 ;74 11 19.689DB 26 ;75 11DB 27 ;76 11.5DB 27 ;77 12 18.718DB 27 ;78 12DB 28 ;79 12.5DB 28 ;80 13 17.80
18、1DB 28 ;81 13DB 29 ;82 13.5QJ/MK10DB 29 ;83 14 16.934DB 30 ;84 14DB 30 ;85 15 16.116DB 30 ;86 15DB 31 ;87 15.5DB 31 ;88 16 15.342DB 31 ;89 16DB 32 ;90 16.5DB 32 ;91 17 14.618DB 32 ;92 17DB 33 ;93 17.5DB 33 ;94 18 13.918DB 33 ;95 18DB 34 ;96 18.5DB 34 ;97 19 13.263DB 34 ;98 19DB 35 ;99 19.5DB 35 ;100
19、 20 12.643DB 36 ;101 20.5DB 36 ;102 21 12.056DB 36 ;103 21DB 37 ;104 21.5DB 37 ;105 22 11.500DB 37 ;106 22DB 38 ;107 22.5DB 38 ;108 23 10.973DB 38 ;109 23DB 39 ;110 23.5DB 39 ;111 24 10.474 DB 39 ;112 24.5DB 40 ;113 25DB 40 ;114 25 10.000DB 40 ;115 25.5DB 41 ;116 25.5DB 41 ;117 26 9.5507DB 41 ;118 2
20、6.5DB 42 ;119 26.5DB 42 ;120 27 9.1245DB 42 ;121 27.5DB 43 ;122 27.5DB 43 ;123 28 8.7198DB 43 ;124 28.5 DB 44 ;125 28.5DB 44 ;126 29 8.3357QJ/MK11DB 44 ;127 29.5DB 45 ;128 29.5DB 45 ;129 30 7.9708DB 45 ;130 30.5DB 46 ;131 30.5DB 46 ;132 31 7.6241DB 47 ;133 31.5DB 47 ;134 32 7.2946DB 47 ;135 32.5DB 4
21、8 ;136 32.5DB 48 ;137 33 6.9814DB 48 ;138 33.5DB 49 ;139 33.5DB 49 ;140 34 6.6836DB 49 ;141 34.5DB 50 ;142 34.5DB 50 ;143 35 6.4021DB 51 ;144 36DB 51 ;145 36 6.1306DB 51 ;146 36.5DB 52 ;147 36.5DB 52 ;148 37 5.8736DB 52 ;149 37.5DB 53 ;150 37.5DB 53 ;151 38 5.6296DB 54 ;152 39DB 54 ;153 39 5.3969DB
22、54 ;154 39.5DB 55 ;155 39.5DB 55 ;156 40 5.1752DB 56 ;157 40.5DB 56 ;158 41 4.9639DB 56 ;159 41.5DB 57 ;160 41.5DB 57 ;161 42 4.7625DB 58 ;162 43DB 58 ;163 43 4.5705DB 58 ;164 43.5DB 59 ;165 43.5DB 59 ;166 44 4.3874DB 60 ;167 44.5DB 60 ;168 45 4.2126DB 61 ;169 45.5DB 61 ;170 46 4.0459QJ/MK12DB 61 ;1
23、71 46.5DB 62 ;172 46.5DB 62 ;173 47 3.8867DB 63 ;174 47.5DB 63 ;175 48 3.7348 DB 64 ;176 48.5DB 64 ;177 49 3.5896DB 65 ;178 49.5DB 65 ;179 50 3.4510DB 66 ;180 50.5DB 66 ;181 51 3.3185DB 67 ;182 51.5DB 67 ;183 52 3.1918DB 68 ;184 52.5DB 68 ;185 53 3.0708DB 69 ;186 53.5DB 69 ;187 54 2.9570DB 70 ;188 5
24、4.5DB 70 ;189 55 2.8442DB 71 ;190 55.5DB 71 ;191 56 2.7382DB 72 ;192 56.5DB 72 ;193 57 2.6368DB 73 ;194 57.5DB 73 ;195 58 2.5397DB 74 ;196 59 2.4468DB 75 ;197 59.5DB 75 ;198 60 2.3577DB 76 ;199 60.5DB 76 ;200 61 2.2725DB 77 ;201 62 2.1907DB 78 ;202 62.5DB 78 ;203 63 2.1124DB 79 ;204 64 2.0373DB 80 ;
25、205 64.5DB 80 ;206 65 1.9653DB 81 ;207 66 1.8963DB 82 ;208 66.5DB 82 ;209 67 1.8300DB 83 ;210 68 1.7665DB 84 ;211 69 1.7055DB 85 ;212 70 1.6469DB 85 ;213 70DB 85 ;214 70QJ/MK13DB 85 ;215 70DB 85 ;216 70DB 85 ;217 70DB 85 ;218 70DB 85 ;219 70DB 85 ;220 70DB 85 ;221 70DB 85 ;222 70DB 85 ;223 70DB 85 ;
26、224 70DB 85 ;225 70DB 85 ;226 70DB 85 ;227 70DB 85 ;228 70DB 85 ;229 70DB 85 ;230 70DB 85 ;231 70DB 85 ;232 70DB 85 ;233 70DB 85 ;234 70DB 85 ;235 70DB 85 ;236 70DB 85 ;237 70DB 85 ;238 70DB 85 ;239 70DB 85 ;240 70DB 85 ;241 70DB 85 ;242 70DB 85 ;243 70DB 85 ;244 70DB 85 ;245 70DB 85 ;246 70DB 85 ;247 70DB 85 ;248 70DB 85 ;249 70DB 85 ;250 70DB 85 ;251 70DB 85 ;252 70DB 85 ;253 70DB 85 ;254 70DB 85 ;255 70END