📄 温度采集4.asm
字号:
ORG 0000H
lJMP MAIN
ORG 0030H
/*****************************主机复位子程序*********************/
RESET: NOP
L0: CLR P1.7
MOV R2,#200
L1: NOP
DJNZ R2,L1
SETB P1.7
MOV R2,#30
L4: DJNZ R2,L4
CLR C
ORL C,P1.7
JC L3
MOV R6,#80
L5: ORL C,P1.7
JC L3
DJNZ R6,L5
SJMP L0
L3: MOV R2,#250
L2: DJNZ R2,L2
RET
/*****************************写一个字节*************************/
WRITE: MOV R3,#8
WRI1: SETB P1.7
MOV R4,#8
RRC A
CLR P1.7
WRI2: DJNZ R4,WRI2
MOV P1.7,C
MOV R4,#20
WRI3: DJNZ R4,WRI3
DJNZ R3,WRI1
SETB P1.7
RET
/**************************读一个字节**************************/
READ: MOV R6,#8
RE1: CLR P1.7
MOV R4,#6
NOP
SETB P1.7
RE2: DJNZ R4,RE2
MOV C,P1.7
RRC A
MOV R5,#30
RE3: DJNZ R5,RE3
DJNZ R6,RE1
MOV 3DH,A
SETB P1.7
RET
/**************************主程序****************************/
MAIN: MOV 31H,#1
MOV 30H,#0
MOV 37H,#0
MOV 38H,#0
MAIN1: CLR RS1
CLR RS0
LCALL RESET
MOV A,#0CCH
LCALL WRITE
MOV A,#44H
LCALL WRITE
MOV R7,#10
/********************调用显示延时**********************/
K1: MOV 3AH,30H ;显示整数的十位
MOV 39H,#0FEH
LCALL DISPLAY
LCALL DEL_1MS
MOV 3AH,31H ;显示整数的个位
MOV 39H,#0FDH
MOV A,39H
MOV DPTR,#7FFFH
MOVX @DPTR,A ;送位码
MOV DPTR,#TAB
MOV A,3AH
MOVC A,@A+DPTR
ORL A,#80H
MOV DPTR,#0BFFFH
MOVX @DPTR,A ;送段码
LCALL DEL_1MS
MOV 3AH,37H ;显示小数的十位
MOV 39H,#0FBH
LCALL DISPLAY
LCALL DEL_1MS
MOV 3AH,38H ;显示小数的个位
MOV 39H,#0F7H
LCALL DISPLAY
LCALL DEL_1MS
DJNZ R7,K1
K00: LCALL RESET
MOV A,#0CCH
LCALL WRITE
MOV A,#0BEH
LCALL WRITE
LCALL READ
MOV A,3DH
MOV 30H,A ;读到低8位 处理整数位时用
MOV 20H,A ;处理小数位时用
LCALL READ
MOV A,3DH ;读到高8位
MOV 31H,A ;处理整数位时用
/**********************处理整数位***************************/
ZHENGSHU: ANL 30H,#0F0H
ANL 31H,#0FH
MOV A,30H
ORL A,31H ;得到整数位
SWAP A
MOV B,#10
DIV AB
MOV 30H,A ;商入30H 得整数的十位
MOV 31H,B ;余数入31H 整数的个位
/********************处理小数位***************************/
NOP
NOP
NOP
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#00H
MOV A,20H
JNB ACC.0,K0
ADD A,#06H
MOV 33H,A
K0: MOV A,20H
JNB ACC.1,K2
MOV A,33H
ADD A,#06H
MOV 34H,A
K2: MOV A,20H
JNB ACC.2,K3
MOV A,34H
ADD A,#13H
MOV 35H,A
K3: MOV A,20H
JNB ACC.3,K4
MOV A,35H
ADD A,#25H
DA A
K4: MOV 36H,A ;小数位和存在36H中
MOV A,36H
MOV B,#10
DIV AB
MOV 37H,A ;商存于37H中 小数的十位
MOV 38H,B ;余数存于38H中 小数的个位
MOV 3AH,30H ;显示整数的十位
MOV 39H,#0FEH
LCALL DISPLAY
LCALL DEL_1MS
MOV 3AH,31H ;显示整数的个位
MOV 39H,#0FDH
MOV A,39H
MOV DPTR,#7FFFH
MOVX @DPTR,A ;送位码
MOV DPTR,#TAB
MOV A,3AH
MOVC A,@A+DPTR
ORL A,#80H
MOV DPTR,#0BFFFH
MOVX @DPTR,A ;送段码
LCALL DEL_1MS
MOV 3AH,37H ;显示小数的十位
MOV A,3AH
MOV 39H,#0FBH
LCALL DISPLAY
LCALL DEL_1MS
MOV 3AH,38H ;显示小数的个位
MOV 39H,#0F7H
LCALL DISPLAY
LCALL DEL_1MS
LJMP MAIN1
/**********************显示子程序**************************/
DISPLAY: MOV A,39H
MOV DPTR,#7FFFH
MOVX @DPTR,A ;送位码
MOV DPTR,#TAB
MOV A,3AH
MOVC A,@A+DPTR
JUMP: MOV DPTR,#0BFFFH
MOVX @DPTR,A ;送段码
RET
DEL_1MS: MOV 40H,#02H
DE1: MOV 41H,#50H
DE2: DJNZ 41H,DE2
DJNZ 40H,DE1
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -