中国矿业大学硬件课程报告--温度控制系统 - 图文 下载本文

temp1 db ? temp2 db ?

temphig db 200d ;为系统设臵的温度上限 templow db 100d ;为系统设臵的温度下限

data ends

code segment

assume cs:code,ds:data start: mov ax,data mov ds ,ax

read: mov dx,io0809a

out dx,al ;启动ADC0809芯片工作 call delay ;调用延时子程序

in al,dx ;采集ADC0809收集的模拟量

- 29 -

mov dx,io8255kz mov al,80h

out dx,al ;8255初始化

mov dis_num,al

call next1 ;调用温度过低警报子程序 call next2 ;调用温度过高警报子程序

call segret ;调用将模拟量分离的子程序 call clear ;LCD清 lea bx,hz_tab

mov ch,2 call lcd_disp lea bx,hz_tab

mov ch,3

call lcd_disp

jmp read mov ah,4ch int 21h

next1 proc push dx push ax push cx

mov cl,dis_num cmp cl,templow

jb n1

;显示第2行信息 ;显示第3行信息 ;跳转到read标志继续执行 ;退出 ;温度过低警报子程序 ;压栈

;当温度低于已设臵的温度下限 ;跳转到n1

- 30 -

pop cx ;出栈 pop ax pop dx

ret ;返回主程序 n1: mov dx,io8255c mov al,08h out dx,al pop cx pop ax pop dx

ret next1 endp

next2 proc push dx push ax push cx mov cl,dis_num

cmp cl,temphig ja n2

pop cx

输出高电平,使连接的绿灯亮;出栈 返回主程序

;温度过高警报子程序 ;压栈 ;当温度高于系统设臵的上限 ;跳转到n2 ;出栈

- 31 -

;pc3 ;

pop ax pop dx

ret ;返回主程序

n2: mov dx,io8255c mov al,10h ;pc4端口输出高电平 out dx,al pop cx pop ax pop dx

ret next2 endp

segret proc push ax mov ah,0 mov al,dis_num mov bl,10

div bl

;使连接的红灯亮 ;出栈 ;返回主程序

;将模拟量分离的子程序;将ax压栈 ;将ax的ah臵0 ;al放入dis_num ;bl放入10 ;将ax的值除以bl

- 32 -