movx @dptr,a ;启动A/D转换 nop nop nop
acall wait ;等待A/D转换 movx a,@dptr ;读转换结果 mov @r0,a ;保存转换结果 BIND: PUSH DPL ;取温度值 PUSH DPH MOV DPTR,#0500H MOV A,@R0 MOVC A,@A+DPTR MOV 40H,A
BIN2BCD: ;二进值码转换BCD码程序 MOV R1,#43H
MOV 43H,#00H ;转换前将BCD码清零 MOV 44H,#00H MOV R3,#8 ;移动8次,
START: MOV R1,#43H ;转换后BCD码地址 MOV A,40H RLC A MOV 40H,A
MOV R2,#02H ;转换后BCD码字节数 BCDCHG: MOV A,@R1 ADDC A,ACC DA A MOV @R1,A INC R1
DJNZ R2,BCDCHG DJNZ R3,START pop dpH POP DPL
chanf: mov a,3Ah ;显示缓冲区地址分配 anl a,#0FH mov 48h,a mov a,44h anl a,#0FH
mov 4ah,a mov a,43h anl a,#0FH mov 4ch,a mov a,43h swap a anl a,#0Fh mov 4bh,a
disp: acall sym ;调用判断热电阻是否正常或温度是否超限子程序 acall zero1 ;调用消隐“0”子程序 push dpl ;显示子程序 push dph
mov dptr,#tab ;取段码表首址 MOV 28H,#1eH MOV 29H,#066H dsp1: mov a,48h ;显示路数
movc a,@a+dptr ;查显示数据对应段码 mov p1,a ;送段码 clr p3.4 acall dll setb p3.4
dsp2: clr c ;判断温度是否为负。如是,显示负号 mov a,@r0 subb a,#56h jc plus mov 49h,#0bfh ajmp ka
plus: mov 49h,#0ffh ka: mov a,49h mov p1,a clr p3.3 acall dll setb p3.3
dsp3: mov a,4ah ;显示温度值百位 movc a,@a+dptr mov p1,a clr p3.2
acall dll setb p3.2
dsp4: mov a,4bh ;显示温度值十位 movc a,@a+dptr mov p1,a clr p3.1 acall dll setb p3.1
dsp5: mov a,4ch ;显示温度值个位 movc a,@a+dptr mov p1,a clr p3.0 acall dll setb p3.0 DJNZ 29H,KK1 MOV 29H,#01H
DJNZ 28H,KK1 ;延时,时间未到,循环显示该路温度值 AJMP KK2 KK1: AJMP DSP1
KK2: pop dph ;时间到,显示下一路 pop dpl inc r0 inc 3ah inc dptr
djnz 3bh,fturn ;8路未显示完,显示下一路 ajmp loop1 ;8路显示完,从第一路开始显示 fturn: ajmp read
SYM: mov a,@r0 ;判断热电阻是否正常或温度是否超限子程序 clr c subb a,#1eh jnc sym1
mov 4ah,#0bh ;热电阻开路或温度超过50度,显示“HHH” mov 4bh,#0bh mov 4ch,#0bh ajmp sym3 sym1: mov a,@r0 subb a,#0dbh
jc sym3
mov 4ah,#0ch ;热电阻短路或温度低于-120度,显示“-LLL” mov 4bh,#0ch mov 4ch,#0ch sym3: Ret
zero1: ;消隐“0”子程序 mov a,4ah jNz zero2 mov 4ah,#0Ah mov a,4bH jnz zero2 mov 4bh,#0ah zero2: ret
wait: mov r4,#03ah ;等待子程序 djnz r4,$ ret
dll: MOV R7,#015H ;延时子程序 DL1: MOV R6,#01aH DL2: DJNZ R6,DL2 DJNZ R7,DL1 RET
TAB: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H
DB 80H,90H,0ffh,89h,0C7h ;其中0FFH是消隐“0”用 ORG 051EH TAB2: H DB
1EH,1DH,1CH,1BH,1AH,19H,18H,17H,16H,15H,14H,14H,13H,12H,11H,10H,0FH,0EH,0DH,0CH,0BH,0AH DB
0AH,09H,08H,07H,06H,05H,04H,03H,02H,02H,01H,0H,01H,02H,03H,04H,05H,06H,07H,08H,09H,09H DB
0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,12H,13H,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,1DH DB
1EH,1FH,20H,21H,22H,23H,24H,25H,26H,27H,28H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH,30H,31H,31
DB
32H,31H,30H,2FH,2EH,2DH,2CH,2BH,2AH,29H,28H,28H,27H,26H,25H,24H,23H,22H,21H,20H,1FH,1F
H DB
32H,33H,34H,35H,36H,37H,38H,39H,3AH,3AH,3BH,3CH,3DH,3EH,3FH,40H,41H,42H,44H,45H,45H,46h DB
47h,48h,49H,4AH,4BH,4CH,4DH,4DH,4EH,4FH,50H,51H,52H,52H,53H,54H,55H,56H,57H,58H,58H,59H
DB 5AH,5BH,5CH,5DH,5EH,5FH,60H,61H,61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH DB 6AH,6BH,6CH,6DH,6EH,6EH,6FH,70H,71H,72H,73H,73H,74H,75H,76H,77H,78H END