基于单片机的测温系统(5)

2019-03-10 23:08

MOV A,R6 ;开始处理整数部分 MOV B,#100 DIV AB

MOV R4,A ;存百位 MOV A,B MOV B,#10 DIV AB

MOV R5,A ;存十位 MOV R6,B ;存个位

MOV A,R7 ;开始处理小数部分地 MOV B,#5 MUL AB MOV B,#10 DIV AB

MOV 40H,A ;存进位 MOV A,R7 MOV B,#2 MUL AB ADD A,40H MOV B,#10 DIV AB

MOV 40H,A ;存进位 MOV A,R7 MOV B,#6 MUL AB ADD A,40H MOV B,#10 DIV AB

MOV R7,A ;暂存小数最高位 MOV A,B CLR C

SUBB A,#5

JC ZHUANHUAN1 INC R7 ZHUANHUAN1:RET

;************************************************************ ;程序名称:JIANTIAO ;功能:扫描键盘 ;入口参数:R5R6R7

;出口参数:30H,31H,32H

;************************************************************ JIANTIAO:

JB P1.7,QUIT ; 如果有Enter键入,则开始键盘输入

21

LCALL DELAY JB P1.7,QUIT

CLR 21H.1 ; 每次进来都赋值输入标志,设置为0 MOV 30H, R5 ;以当前所测温度为基准,进行加减 MOV 31H, R6 MOV 32H, R7 LOOP:

JB 21H.1,QUIT ;如果输入完成,20H.1则为1,退出键盘程序

JB P1.7,JIA LCALL DIFINE JIA: JB P1.5,JIAN LCALL JIAYI

JIAN: JB P1.6,XIANSHI LCALL JIANYI

XIANSHI:LCALL QINGLING LCALL SHUCHU SJMP LOOP QUIT:RET

;********************************************************** ;程序名称:DIFINE

;功能:确认键盘输入和退出键盘输入 ;入口参数:ENTER_FLAG ;出口参数:ENTER_FLAG

;********************************************************** DIFINE:

LCALL DELAY

JB P1.7,LOOP ;按键抖动处理 SETB 21H.1

LCALL DELAY RET

;***************************************************************** ;程序名称:JIAYI ;功能:数值上调处理

;入口参数: 30H,31H,32H ;出口参数:R5R6R7

;***************************************************************** JIAYI:

LCALL DELAY JB P1.5,LOOP

INC 32H ;小数位加1 MOV A,32H

CJNE A,#0AH,JIANEXT ;小数位增加到10,回0

22

MOV 32H,#00H

INC 31H ;个位进1 MOV A,31H

CJNE A,#0AH,JIANEXT MOV 31H,#00H

INC 30H ;十位进1 MOV A,30H

CJNE A,#0AH,JIANEXT ;十位超过99.9,溢出了 MOV R0,#200

CUOWU1:LCALL CUOWU ;出错,显示8888 DJNZ R0,CUOWU1

DEC 30H ;退回99.9 MOV 31H,#09H MOV 32H,#09H JIANEXT:

MOV R5,30H MOV R6,31H MOV R7,32H LCALL DELAY RET

;***************************************************************** ;程序名称:JIANYI ;功能:数值下调处理

;入口参数: 30H,31H,32H ;出口参数:R5R6R7

;***************************************************************** JIANYI:

LCALL DELAY

JB P1.6,LOOP ;按键抖动处理 DEC 32H ;小数位减一 MOV A,32H

CJNE A,#0FFH,JIANNEXT ;小数位减到0,回到9

MOV 32H,#09H

DEC 31H ;个位减一 MOV A,31H

CJNE A,#0FFH,JIANNEXT ;个位减到0,回到9 MOV 31H,#09H

DEC 30H ;十位减一 MOV A,30H

CJNE A,#0FFH,JIANNEXT ;十位低于0,溢出了 MOV R0,#200

CUOWU2:LCALL CUOWU ;出错,显示8888

23

DJNZ R0,CUOWU2 INC 30H

MOV 31H,#00H ;退回00.0 MOV 32H,#00H JIANNEXT:

MOV R5,30H MOV R6,31H MOV R7,32H LCALL DELAY RET

DELAY: MOV R0,#250 ;延时程序 LOOP1: MOV R1,#100 DJNZ R1,$ DJNZ R0,LOOP1 RET

;***************************************************************** ;程序名称:BAOJING ;功能:报警控制 ;入口参数: ;出口参数:

;***************************************************************** BAOJING:

MOV A,30H ;三个Buffer都是0的话,说明还没有输入数值,直接退出

JNZ BIJIAO MOV A,31H JNZ BIJIAO MOV A,32H JZ SQUIT BIJIAO:

MOV A,30H

CLR C ;置C为0 SUBB A,R5

JNZ GUODU ;十位不等转移 MOV A,31H SUBB A,R6

JNZ GUODU ;个位不等转移 MOV A,32H SUBB A,R7

JNZ GUODU ;小数位不等转移 RET GUODU:CLR P2.4

JC MINGJIAO ;当前所测温度大于设置的温度,则鸣叫

24

RET

MINGJIAO:LCALL CUOWU LJMP JIANTIAO SQUIT:RET

;***************************************************************** ;程序名称:CUOWU

;功能:程序出错处理,显示四个8,即8888 ;入口参数:无

;出口参数:R4R5R6R7

;***************************************************************** CUOWU: SETB P2.4 MOV R4,#08H MOV R5,#08H MOV R6,#08H MOV R7,#08H LCALL QINGLING LCALL SHUCHU RET

;***************************************************************** ;程序名称:QINGLING

;功能:将R4R5R6R7转换为满足输出的类型 ;输入参数:R4R5R6R7 ;输出参数:R4R5R6R7

;***************************************************************** QINGLING:

MOV DPTR,#TABLE ;指向表首 MOV A,R4 ;转换为表格中的数据 MOVC A,@A+DPTR MOV 35H,A MOV A,R5

MOVC A,@A+DPTR MOV 36H,A MOV A,R6

MOVC A,@A+DPTR MOV 37H,A MOV A,R7

MOVC A,@A+DPTR MOV 38H,A

INC 37H ;小数点 MOV A,35H

CJNE A,#0FCH,ANDY2 ;高位清零 MOV 35H,#00H MOV A,36H

25

CJNE A,#0FCH,ANDY2 MOV 36H,#00H

ANDY2: JB F0,ANDY3 ;判断是否为负数加符号 SJMP ANDY ;如果为正数则不加符号 ANDY3: MOV A,35H

CJNE A,#00H,ANDY ;最高位是否为零 MOV A,36H

CJNE A,#00H,IVERSON ;中位是否为零

MOV 36H,#02H ;R5用来显示符号 SJMP ANDY

IVERSON: MOV 35H,#02H ;R4用来显示符号 ANDY: RET

TABLE:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H

;***************************************************************** ;程序名称:SHUCHU

;功能:显示数据到数码管中。 ;入口参数:R4R5R6R7 ;出口参数:无

;***************************************************************** SHUCHU:

MOV R4,35H MOV R5,36H MOV R6,37H MOV R7,38H

MOV R0,#07H ;分别对应四个字

LOOP2:MOV R1,#08H ;每个字八位 MOV A,@R0 LOOP3: RRC A CLR P1.1 MOV P1.0,C SETB P1.1

DJNZ R1,LOOP3 DEC R0

CJNE R0,#03H,LOOP2 RET

;********************************************************* END

26


基于单片机的测温系统(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:锅炉技术协议

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: