MOV A,25H ;選轉(zhuǎn)換后的十位簡(jiǎn)單檢測(cè)是否能轉(zhuǎn)換成功
CPL A
MOV P0,A
NEXT: LJMP LOOP
;轉(zhuǎn)換得到溫度的各位
TEMP_PROC:
MOV A,MSB
MOV TEMP_FU,#'+'
RLC A
JNC TEMP_VALUE
MOV TEMP_FU,#'-'
MOV A,LSB ;若為負(fù)值,取反加一
CPL A
INC A
MOV LSB,A
MOV A,MSB
CPL A
MOV MSB,A
TEMP_VALUE:
MOV A,LSB
ANL A,#0FH ;小數(shù)部分,低字節(jié)低四位
MOV B,#10 ;小數(shù)部分處理,乘以10,再除以16即為小數(shù)值
MUL AB
MOV B,#16
DIV AB
MOV TEMP_XIAO,A ;存儲(chǔ)小數(shù)值
MOV A,LSB
SWAP A ;交換指令,整數(shù)部分在低位
ANL A,#0FH ;屏蔽高四位得到低4位的整數(shù)部分
MOV R0,A ;暫存低四位
MOV A,MSB ;取高字節(jié)的整數(shù)部分
SWAP A
ORL A,R0 ;與低位相或,得到實(shí)際溫度的整數(shù)部分
MOV B,#100
DIV AB
MOV TEMP_BAI,A ;存儲(chǔ)百位
MOV A,B ;十位個(gè)位數(shù)據(jù)
MOV B,#10
DIV AB
MOV TEMP_SHI,A
MOV TEMP_GE,B
RET
TEMPER_COV1:
MOV A,TEMPER_H
ANL A,#07H
SWAP A
ORL A,TEMPER_NUM
MOV TEMPER_NUM,A ; 保存變換后的溫度數(shù)據(jù)
LCALL BIN_BCD
RET
;-------------------將16進(jìn)制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼
BIN_BCD:
MOV DPTR,#TEMP_TAB
MOV A,TEMPER_NUM
MOVC A,@A+DPTR
MOV TEMPER_NUM,A
RET
TEMP_TAB:
DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 08H,09H,10H,11H,12H,13H,14H,15H
DB 16H,17H,18H,19H,20H,21H,22H,23H
DB 24H,25H,26H,27H,28H,29H,30H,31H
DB 32H,33H,34H,35H,36H,37H,38H,39H
DB 40H,41H,42H,43H,44H,45H,46H,47H
DB 48H,49H,50H,51H,52H,53H,54H,55H
DB 56H,57H,58H,59H,60H,61H,62H,63H
DB 64H,65H,66H,67H,68H,69H,70H,71H
DB 72H,73H,74H,75H,76H,77H,78H,79H
DB 80H,81H,82H,83H,84H,85H,86H,87H
DB 88H,89H,90H,91H,92H,93H,94H,95H
DB 96H,97H,98H,99H