基于单片机的多路数字温度测量系统设计 联系客服

发布时间 : 星期三 文章基于单片机的多路数字温度测量系统设计更新完毕开始阅读6d772874b90d6c85ec3ac6a9

六、附录:

1.系统程序:

;****************************************************************

;常数定义

;**************************************************************** TMEL EQU 0E0H ;20ms,定时器0时间常数 TMEH EQU 0B1H TMEPHEAD EQU 36H

;**************************************************************** ;工作内存定义

;**************************************************************** BITST DATA 20H TIMEISOK BIT BITST.1 TEMPONEOK BIT BITST.2 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H

;**************************************************************** ; 引脚定义

;**************************************************************** TEMPDIN BIT P3.7

;**************************************************************** ; 中断向量区

;****************************************************************

ORG 000H LJMP START

ORG 00BH LJMP T0IT

;**************************************************************** ;系统初始化

;****************************************************************

16

ORG 100H

START: MOV SP,#60H CLSMEM: MOV R0,#20H MOV R1,#60H CLSMEM1: MOV @R0,#00H INC R0

DJNZ R1,CLSMEM1

MOV TMOD,#00100001B MOV TH0,#TIMEL MOV TL0,#TIMEH SJMP INIT ERROR: NOP

LJMP START NOP INIT: NOP

SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN

;**************************************************************** ; 定时器0中断服务程序

;**************************************************************** T0IT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7

CJNE R7,#32H,T0ITI MOV R7,#00H SETB TIMEISOK TOIT1: POP PSW

17

RETI

;**************************************************************** ; 主程序

;**************************************************************** MAIN: LCALL LM35_1

JNB TIME1SOK,MAIN CLR TIME1SOK JNB TEMPONEOK,MAIN2 LCALL READTEMP1 LCALL CONVTEMP LCALL LM35_1

MAIN2: LCALL READTEMP SETB TEMPONEOK LJMP MAIN

;**************************************************************** ;子程序区

;**************************************************************** ; RESETLM35

;**************************************************************** INILM35: SETB TEMPDIN NOP NOP

CLR TEMPDIN MOV R6,#0A0H DJNZ R6,$ MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H DJNZ R6,$ MOV R6,#3CH

LOOPLM35: MOV C,TEMPDIN JC INILM35UT DJNZ R6,LOOPLM35

18

MOV R6,#064H DJNZ R6,$ SJMP INILM35 RET

INILM35UT: SETB TEMPDIN RET

; **************************************************************** ; 读LM35的程序,从LM35中读出一个字节的数据

; **************************************************************** READLM35: MOV R7,#08H SETB TEMPDIN NOP NOP

READLM35LOOP: CLR TEMPDIN NOP NOP NOP

SETB TEMPDIN MOV R6,#07H DJNZ R6,$ MOV C,TEMPDIN MOV R6,#3CH DJNZ R6,$ RRC A SETB TEMPDIN DJNZ R7,READLM35LOOP MOV R6,#3CH DJNZ R6,$ RET

; **************************************************************** ; 写LM35的程序,从LM35中写一个字节的数据

; **************************************************************** WRITELM35: MOV R7,#08H SETB TEMPDIN

19