当前位置:首页 > 基于单片机的多路数字温度测量系统设计
六、附录:
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
共分享92篇相关文档