温度巡检仪源程序Word下载.docx
- 文档编号:20205915
- 上传时间:2023-01-18
- 格式:DOCX
- 页数:18
- 大小:18.48KB
温度巡检仪源程序Word下载.docx
《温度巡检仪源程序Word下载.docx》由会员分享,可在线阅读,更多相关《温度巡检仪源程序Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
MOVR0,#00HDJNZR0,NRAM1MOV30H,#0AAH/*置上电标志*/MOV31H,#55HNOPNOPDISP_INIT:
NOPMOV20H,#00H/*内部状态位清零*/MOVDIS_BUF1,#0111001BMOVDIS_BUF2,#1110011BMOVDIS_BUF3,#0111110BMOVDIS_BUF4,#1000000BMOVDIS_BUF5,#1101101BMOVDIS_BUF6,#0000110B/*cpu-51写入显示缓冲区*/SETBDIS_DIN/*CH451串口方式设为四线制*/NOPNOPCLRDIS_DINNOPNOPSETBDIS_DINMOVTIME_CONT,#1HMOVSAMP_NUM,#00HMOVCHAN_NUM,#00HMOVCHAN_NUM1,#01HMOVTIME_COUNT,TIME_CONT/*定时时间设为100毫秒*/SETBIT1/*键盘中断设为边沿触发方式*/SETBPX1/*键盘中断设为高优先级*/SETBET0/*允许定时器0中断*/SETBEA/*开中断*/SETBTR0/*启动定时器0*/SETBSAMP_NO1MOVSAMP_NUM,#00HMAIN1:
JNBT_1S,MAIN1/*快速检测1通道温度值*/CLRT_1SLCALLSAMP/*采样一次*/MAIN2:
JNBSAMP_END10,MAIN1/*采完10次*/CLRSAMP_END10MOVDIS_CONH,#5H/*设定显示参数,不译码,扫描6位*/MOVDIS_CONL,#60HLCALLDISP_WRITEMOVDIS_CONH,#4H/*设定系统参数,启用显示及键盘功能*/MOVDIS_CONL,#03HLCALLDISP_WRITELCALLDISP_OUT/*显示“CPU51”*/CLREASETBEX1SETBEAWAIT:
JNBKEY_FLAG,WAITCLRKEY_FLAGMOVA,KEY_VALCJNEA,#8,WAIT1SETBST_FLAGWAIT1:
JNBST_FLAG,WAIT/*系统是否启动*/*巡检仪主程序*/CLREX1/*关键盘中断*/MOVDIS_CONH,#04H/*关显示器*/MOVDIS_CONL,#02HLCALLDISP_WRITEMOVDIS_CONH,#5H/*译码方式转为BCD方式*/MOVDIS_CONL,#0E0HLCALLDISP_WRITEMOVCHAN_NUM,#00HLCALLDISP_OUT/*输出显示数据*/MOVDIS_CONH,#4H/*开显示器*/MOVDIS_CONL,#03HLCALLDISP_WRITECLREASETBEX1/*开键盘中断*/SETBEAMOVTIME_CONT,#0AH/*定时时间设为1秒*/MOVTIME_COUNT,TIME_CONTMOVCHAN_NUM,#01H/*初始化检测通道,从第2通道开始*/SETBXJ_FLAG/*设为巡回检测状态*/SETBSAMP_NO1CLRSAMP_END10SETBTR1/*启动定时器1*/*主循环程序*/MAIN_LOOP:
JNBKEY_FLAG,MAIN_LOOP3/*是否有键按下*/CLRKEY_FLAG/*处理键盘命令*/MOVA,KEY_VALSETBEX1/*开键盘中断*/CJNEA,#8,MAIN_LOOP2/*是启动键?
*/JNBDD_FLAG,MAIN_LOOP1/*当前状态是定点检测方式*/SETBXJ_FLAG/*改为巡检方式*/CLRDD_FLAG/*清除定点标志*/MOVCHAN_NUM,#00H/*从1通道开始工作*/MOVSAMP_NUM,#00HSETBSAMP_NO1LCALLDISP_OUT/*显示输出*/MAIN_LOOP1:
SJMPMAIN_LOOP3MAIN_LOOP2:
CLRXJ_FLAG/*如为18键值则清除巡检标志*/SETBDD_FLAG/*改为定点检测方式*/MOVSAMP_NUM,#00HSETBSAMP_NO1MOVCHAN_NUM,KEY_VAL/*将按键值写入当前通道寄存器*/LCALLDISP_OUT/*显示该通道温度值*/MAIN_LOOP3:
JNBT_1S,MAIN_LOOP7/*1秒时间到*/LCALLSAMP/*启动AD转换*/CLRT_1SJNBSAMP_END10,MAIN_LOOP7/*采完10次*/MOVSAMP_NUM,#00HCLRSAMP_END10SETBSAMP_NO1LCALLDISP_OUT/*显示温度值*/JNBXJ_FLAG,MAIN_LOOP7/*巡检标志置位*/MOVA,CHAN_NUM/*当前通道号加1*/ADDA,#1MOVCHAN_NUM,ACJNEA,#8H,MAIN_LOOP7/*当前通道号为8*/MOVA,#00H/*当前通道号复归为1号*/MOVCHAN_NUM,AMAIN_LOOP7:
LCALLSEND/*调用串口发送程序*/LJMPMAIN_LOOP/*数据采样子程序*/SAMP:
PUSHACCPUSHPSWSETBRS0MOVA,CHAN_NUMMOVDPTR,#CHAN_ADD0/*输出温度检测通道,发采样脉冲*/ADDA,DPLMOVDPL,AMOVXDPTR,ANOPNOPMOVA,CHAN_NUMMOVDPTR,#AD_ADD0/*根据通道号计算出对应的AD地址*/ADDA,DPLMOVDPL,AMOVXDPTR,A/*启动AD转换器*/NOPNOPNOPSAMP1:
JBAD_END,SAMP1/*等待AD转换结束*/MOVXA,DPTR/*读AD转换值*/INCSAMP_NUM/*采样次数加1*/JNBSAMP_NO1,SAMP2/*是否首次采样*/MOVSAMP_SUMH,#00H/*10次累加和赋初值*/MOVSAMP_SUML,AMOVSAMP_MAX,A/*最大值赋初值*/MOVSAMP_MIN,A/*最小值赋初值*/CLRSAMP_NO1SJMPSAMP4SAMP2:
MOVSAMP_VAL,A/*每次采样值累加*/ADDA,SAMP_SUMLMOVSAMP_SUML,ACLRAADDCA,SAMP_SUMHMOVSAMP_SUMH,AMOVA,SAMP_VAL/*当前采样值是否为最大值?
*/CLRCSUBBA,SAMP_MAXJCSAMP3MOVA,SAMP_VAL/*更新最大值*/MOVSAMP_MAX,ASJMPSAMP4SAMP3:
MOVA,SAMP_VAL/*当前采样值是否为最小值?
*/CLRCSUBBA,SAMP_MINJNCSAMP4MOVA,SAMP_VAL/*更新最小值*/MOVSAMP_MIN,ASAMP4:
MOVA,SAMP_NUMCJNEA,#0AH,SAMP5/*是否采样完10次*/*去极值平均算术数字滤波*/CLRC/*从累加和中减去最大值*/MOVA,SAMP_SUMLSUBBA,SAMP_MAXXCHA,SAMP_SUMHSUBBA,#00HXCHA,SAMP_SUMH/*再从累加和中减去最小值*/SUBBA,SAMP_MINMOVSAMP_SUML,AMOVA,SAMP_SUMHSUBBA,#00HSWAPA/*剩余数值除以8*/RLAXCHA,SAMP_SUMLSWAPARLAADDA,#80H/*结果四舍五入*/ANLA,#1FHADDCA,SAMP_SUMLMOVSAMP_AVG,A/*保存去极值平均滤波后的最终采样值*/SETBSAMP_END10SJMPSAMP6SAMP5:
AJMPSAMP8/*采样值转为温度值*/SAMP6:
MOVR2,#00HMOVR3,SAMP_AVGMOVR6,#0C7H/*r6r7为定点小数0.779*/MOVR7,#6CHMOVA,R3/*r3*r6r7小数部分四舍五入取整*/MOVB,R7MULABMOVR4,BMOVR5,AMOVA,R3MOVB,R6MULABADDA,R4MOVR4,ACLRAADDCA,BMOVR3,AMOVA,R2MOVB,R7MULABADDA,R4MOVR4,AMOVA,R3ADDCA,BMOVR3,ACLRARLCAXCHA,R2MOVB,R6MULABADDA,R3MOVR3,AMOVA,R2ADDCA,BMOVR2,AMOVA,R4JNBACC.7,SAMP7INCR3CJNER3,#0,SAMP7INCR2SAMP7:
MOVTEMP_VAL,R3/*将温度值存入TEMP_VAL*/MOVA,CHAN_NUMMOVR0,#TEMP1ADDA,R0MOVR0,AMOVR0,TEMP_VALSAMP8:
CLRRS0POPPSWPOPACCRET/*温度值显示子程序*/DISP_OUT:
PUSHACCPUSHPSWPUSHBPUSH00HJNBST_FLAG,DISP_OUT0/*系统在工作状态,将温度值写入显示缓冲区*/MOVA,CHAN_NUMADDA,#1HMOVCHAN_NUM1,AMOVA,CHAN_NUMMOVR1,#TEMP1ADDA,R1MOVR1,A/*将温度值转为三位BCD码,存入R3,A,B*/MOVA,R1MOVB,#100DIVABMOVR3,AMOVA,#10XCHA,BDIVABMOVDIS_BUF1,CHAN_NUM1/*显示通道号*/MOVDIS_BUF2,#10010B/*显示“”*/MOVDIS_BUF3,#00H/*显示温度千位*/MOVDIS_BUF4,R3/*显示温度百位*/MOVDIS_BUF5,A/*显示温度十位*/MOVDIS_BUF6,B/*显示温度个位*/*数据显示输出*/DISP_OUT0:
MOVR1,#7H/*显示位数为6位*/MOVR2,#0DH/*从左至右开始描扫*/MOVR0,#50H/*显示区首址*/DISP_OUT1:
MOVDIS_CONL,R0MOVA,R2ORLA,#8HMOVDIS_CONH,AACALLDISP_WRITE/*将数据写入显示芯片*/INCR0DECR2DJNZR1,DISP_OUT1/*共写6位数据*/POP00HPOPBPOPPSWPOPACCRET/*显示芯片命令写入子程序*/DISP_WRITE:
PUSHACCPUSHBPUSH07HPUSH00HCLREX1CLRDIS_LOADMOVR7,#08HMOVA,DIS_CONLMOVB,DIS_CONHDISP_WRITE8:
RRCACLRDIS_DCLKNOPNOPMOVDIS_DIN,CNOPNOPSETBDIS_DCLKDJNZR7,DISP_WRITE8MOVA,BMOVR7,#04HDISP_WRITE4:
RRCACLRDIS_DCLKNOPNOPMOVDIS_DIN,CNOPNOPSETBDIS_DCLKDJNZR7,DISP_WRITE4NOPNOPSETBDIS_LOADSETBEX1POP00HPOP07HPOPBPOPACCRET/*键盘中断程序*/KEY_IN:
PUSHPSWPUSHACCPUSHDPHPUSHDPLPUSH06HCLREX1MOVSAMP_NUM,#00HCLRDIS_LOADMOVA,#07HMOVR7,#04HDIS_READ4:
RRCA/*发送读键码命令*/CLRDIS_DCLKNOPNOPMOVDIS_DIN,CNOPNOPSETBDIS_DCLKDJNZR7,DIS_READ4SETBDIS_LOADCLRAMOVR7,#07HDIS_READ7:
MOVC,DIS_DOUT/*读出键码*/CLRDIS_DCLKRLCASETBDIS_DCLKDJNZR7,DIS_READ7CLRIE1MOVKEY_CODE,ASUBBA,#40HMOVKEY_VAL,ASETBKEY_FLAGSETBEX1POP06HPOPDPLPOPDPHPOPACCPOPPSWRETI/*100MS定时中断程序*/TIME0:
PUSHPSWPUSHACCMOVTH0,#3CH/*计数器重新赋值*/MOVTL0,#0AFHCLRAMOVA,TIME_COUNTDECAMOVTIME_COUNT,AJZTIME1SJMPTIME0_1TIME1:
MOVTIME_COUNT,TIME_CONTSETBT_1STIME0_1:
POPACCPOPPSWRETI/*串口发送子程序*/SEND:
PUSHACCPUSHPSWMOVR0,#80HMOVR1,#TEMP1MOVR0,#0DBH/*数据起始标志,DBDB写入发送缓冲区*/INCR0MOVR0,#0DBHINCR0MOVR2,#8HMOVR3,#00HSEND1:
MOVA,R1/*温度值写入发送缓冲区*/MOVR0,AADDA,R0MOVR3,AINCR1INCR0DJNZR2,SEND1MOVA,R3MOVR0,AINCR0MOVR0,#0EEHMOVR0,#80H/*发送缓冲区中数据*/MOVR4,#0BHSEND2:
MOVSBUF,R0SEND3:
JNBTI,SEND3/*查寻方式发送*/CLRTIINCR0DJNZR4,SEND2POPPSWPOPACCRET/*程序出错恢复子程序*/ERR:
CLREA/*关中断*/MOVDPTR,#ERR1/*准备返回地址*/PUSHDPLPUSHDPHRETI/*清除高级中断激活标志*/ERR1:
MOV30H,#0AAH/*重建上电标志*/MOV31H,#55HCLRAPUSHACC/*压入复位地址*/PUSHACCRETI/*清除低级中断标志*/ORG1FFAHNOPNOPNOPLJMPERREND
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 巡检 源程序