片机的多路温度采集系统程序

上传人:tian****1990 文档编号:72919153 上传时间:2019-01-24 格式:DOC 页数:13 大小:129.68KB
返回 下载 相关 举报
片机的多路温度采集系统程序_第1页
第1页 / 共13页
片机的多路温度采集系统程序_第2页
第2页 / 共13页
片机的多路温度采集系统程序_第3页
第3页 / 共13页
片机的多路温度采集系统程序_第4页
第4页 / 共13页
片机的多路温度采集系统程序_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《片机的多路温度采集系统程序》由会员分享,可在线阅读,更多相关《片机的多路温度采集系统程序(13页珍藏版)》请在金锄头文库上搜索。

1、 ORG 0000H AJMP MAIN; BUF EQU 40H ;显示缓冲区 MOTATA EQU 50H ;AD0809数据存放于此 WH EQU 48H ;温度上限数据存放区 WL EQU 58H ;温度下限数据存放区 BUFF1S EQU 38H; BUFF1MS EQU 39H; BUFF5S EQU 3AH; INNAL EQU 3CH; ALARMBUF EQU 33H BUFFH EQU 31H ;八路LED报警信号 红灯 BUFFL EQU 32H ;八路LED报警信号 绿灯 BACK EQU 34H ;利用与BUF地址的重复修改路数 CHANNEL EQU 35H TEM

2、PBUF EQU 36H READ_AD BIT 30H ;是否要读写AD0809的标志位 DISPIN BIT 31H; SETWARN BIT 32H SOLIDISP BIT 33H ENTER BIT P1.2 SETH BIT 35H SETL BIT 36H SETIN BIT P1.3 ABYTEIN BIT p1.1 ORG 0003H AJMP INT_0; ORG 000BH LJMP INT_T0 ORG 0100HMAIN: MOV SP, #70H ;设置堆栈位置 SETB READ_AD ;初始化标志位 SETB EA ;开总中断 CLR SETWARN ;清除温度

3、设置标志位 SETB SETIN;当其为0时表示要进行通道数采集 LCALL INITWARN ;初始化温度上下限 LCALL INIT_2;初始化2#工作寄存器区 ;主循环,启动ADC0809,从第一个通道开始读取LOOP:JNB READ_AD,DIS ;若不读AD0809,则调显示,次标志位也表示1s延时结束 ;延时已完毕,则计算要显示的温度路数及温度值送缓冲区 LCALL WARN;报警 CLR READ_AD;清楚标志位 LCALL READ;读取一次AD0809 LCALL DLY1MS;此处加1ms的延时,否则数码管会因中断的存在而产生闪动 LCALL ADJUST;调整显示;在

4、此完成键盘检测及显示任务DIS: LCALL DISPLAY; LCALL KEYCHK;调键盘检测子程序 CJNE A,#0FFH, AKEY;若有键按下,则跳转 LJMP LOOP ;若没有则循环AKEY: LCALL KEYFUNC; CJNE A,#0FFH,CALLRPD;验证按下的键是否为数字键,若是则处理输入 LJMP LOOP;不为数字键则返回循环CALLRPD: LCALL KEYRPD; SJMP LOOP;*初始化2#工作寄存器区*INIT_2: PUSH PSW;初始化2号工作寄存器区 SETB RS1; CLR RS0;选择2号工作寄存器区 MOV R2, #00H;

5、存放要显示的路数 CLR DISPIN;初始化路显示标志位; MOV R0, #MOTATA;R0充当指向MOTATA的指针 POP PSW; RET;*调整指针*PADJUST:ONADJUST: DJNZ R2,INADJUST; RET;返回INADJUST: INC R0; SJMP ONADJUST;*计算并调整显示缓存区的数据*ADJUST: PUSH PSW ;保护 SETB RS1; CLR RS0;选择2号工作寄存器区 CJNE R2,#08H,NE08; GE08: MOV R2,#00H; MOV R0,#MOTATA; SJMP LESS08; NE08: JNC GE

6、08;LESS08: JB SETWARN, DISPWARN;若在设定温度,则也不调整显示JB SOLIDISP, ADJEND ;若为固定显示,则跳过调整 JB DISPIN,DLY_5S ;若有键盘值输入,则延时5秒来暂时固定显示 INC R0;调整R0,使其指向下一个要显示的温度值地址 INC R2 ;调整R2 mov channel,r2; SJMP ADJEND;DLY_5S: DJNZ BUFF5S,ADJEND; CLR DISPIN; LJMP ADJENDDISPWARN: JB SETH,DISHIGH;若在调整上限值则跳转到上限温度显示JB SETL,DISLOW ;若

7、在调整下限值则跳转到下限温度显示 SJMP ADJEND;若不在调整则显示输入路数的当前检测温度值DISLOW: MOV R0,#WL;将指针调整到温度上限存放区SJMP ADAPT;跳转到指针调整处DISHIGH:MOV R0,#WH;将指针调整到温度下限存放区ADAPT: MOV R2,CHANNEL;调整R2的值为通道数LCALL PADJUST;指针指向R2ADJEND: LCALL LOADTEMP ;将当前指针指向数据放到缓冲区POP PSW; RET;* 将当前指针指向数据放到缓冲区*LOADTEMP: LCALL COMPUTE;调用COMPUTE得到要显示的当前温度值 MOV

8、 R1,#BUF; MOV A,channel;MOV R1,A;将路数送入显示缓冲区 INC R1;调整到要显示温度值的缓冲区JB SETH,DISPH;若设定温度上限,则显示HJB SETL,DISPL;若设定温度下限,则显示L Mov a,#10h;消隐 SJMP DISP2DISPH: MOV A,#11HSJMP DISP2DISPL: MOV A,#12HDISP2: mov r1,a; INC R1; MOV A,R5; ANL A,#0FH;MOV R1,A; 最低位 INC R1; MOV A,R5; ANL A,#0F0H; SWAP A;MOV R1,A;次低位 ,应当在

9、此处添加小数点 INC R1; MOV A,R4; ANL A,#0FH;MOV R1,A;次高位 INC R1; MOV A,R4; ANL A,#0F0H; SWAP A; MOV R1,A;最高位RET;*读取一次0809的内容*READ: MOV R6,#08H ;用中断的方式读取一次AD0809 MOV R0,#MOTATA;0号工作寄存器区 MOV DPTR,#0FFFEH;A0作为地址 MOV A,#00H ;表示先检测第一个通道MOV INNAL,A;将检测的路数保存 MOVX DPTR,A;开启ADC0809SETB EX0 ;开外部中断0 RET;若已读取完毕,则返回;*显示子程序*;要显示的数据入口为BUF(6位);1号工作寄存器区DISPLAY: PUSH PSW ;压栈保护 SETB RS0;

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

当前位置:首页 > 办公文档 > 其它办公文档

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