数字温度计设计汇编源程序Word文档格式.doc
《数字温度计设计汇编源程序Word文档格式.doc》由会员分享,可在线阅读,更多相关《数字温度计设计汇编源程序Word文档格式.doc(15页珍藏版)》请在冰豆网上搜索。
![数字温度计设计汇编源程序Word文档格式.doc](https://file1.bdocx.com/fileroot1/2022-11/3/8e15dbf9-e4f7-4b15-bf26-2de15ea924b9/8e15dbf9-e4f7-4b15-bf26-2de15ea924b91.gif)
TEMP_LOWEREQU2BH
==========================工作内存定义============================
BITST DATA20H
TIME1SOK BITBITST.1
TEMPL DATA26H
TEMPH DATA27H
TEMPHC DATA28H
TEMPLC DATA29H
=============================引脚定义===========================
TEMPDIN BITP3.7
ALARMDINBITP1.6
RSTBITP1.2
CLKBITP1.1
IOBITP1.0
=============================中断向量区=========================
ORG 0000H
LJMP START
ORG 000BH
LJMP T0IT
=============================系统初始化==========================
ORG 0100H
START:
MOV SP,#60H
CLSMEM:
MOV R0,#20H
MOV R1,#60H
CLSMEM1:
MOV @R0,#00H
INC R0
DJNZ R1,CLSMEM1
MOV TMOD,#00010001B;
定时器0工作方式1(16BIT)
MOV TH0,#TIMEH
MOV TL0,#TIMEL;
20ms
MOVSECOND,#00H
MOVMINUTE,#00H
MOVHOUR,#14H
MOVDAY,#17H
MOVMONTH,#01H
MOVWEEK,#01H
MOVYEAR,#13H
MOVTEMP_UPPER,#0AH
MOVTEMP_LOWER,#8AH
SETB ET0
SETB EA
MOV PSW,#00H
=================================================================
=============================主程序=============================
LCALLSETDS1302
START1:
LCALL READ_TEMP ;
读出温度值子程序
LCALL CONVTEMP ;
温度BCD码计算处理子程序
LCALL REFBCD ;
显示区BCD码温度值刷新子程序
LCALLGETDS1302
SETB TR0
LCALLALARM_JUDGE
JNBF0,MAIN
LCALLALARM_BEEP
MAIN:
LCALL DISP_TEMP ;
调用显示子程序
LCALLDISPLAY_TIME
JNB TIME1SOK,MAIN
CLR TIME1SOK;
测温每1s一次
MAIN1:
LCALLDISPLAY_DATE
JNB TIME1SOK,MAIN1
LJMPSTART1
======================定时器0中断服务程序=======================
T0IT:
PUSH PSW
MOV PSW,#10H
MOV TH0,#TIMEH
MOV TL0,#TIMEL
INC R7
CJNE R7,#50,T0IT1
MOV R7,#00H
SETB TIME1SOK ;
1s定时到标志
T0IT1:
POP PSW
RETI
=============================子程序区===========================
=============================初始化DS18B20=======================
INITDS1820:
SETB TEMPDIN
NOP
CLR TEMPDIN
MOV R6,#0A0H
DJNZ R6,$
MOV R6,#0A0H
SETB TEMPDIN
MOV R6,#32H
MOV R6,#3CH
LOOP1820:
MOV C,TEMPDIN
JC INITDS1820OUT
DJNZ R6,LOOP1820
MOV R6,#064H
SJMP INITDS1820
INITDS1820OUT:
SETB TEMPDIN
RET
======读DS18B20的程序,从DS18B20中读出一个字节的数据=============
READDS1820:
MOV R7,#08H
SETB TEMPDIN
NOP
READDS1820LOOP:
CLR TEMPDIN
NOP
SETB TEMPDIN
MOV R6,#07H ;
DELAY15us
DJNZ R6,$
MOV C,TEMPDIN
MOV R6,#3CH ;
DELAY120us
RRC A
DJNZ R7,READDS1820LOOP
DELAY120us
========写DS18B20的程序,从DS18B20中写一个字节的数据=============
WRITEDS1820:
WRITEDS1820LOP:
MOV TEMPDIN,C
MOV R6,#34H ;
DELAY104us
DJNZ R7,WRITEDS1820LOP
=========================READTEMP===========================
READ_TEMP:
LCALL INITDS1820
MOV A,#0CCH
LCALL WRITEDS1820 ;
SKIPROM
MOV R6,#34H ;
DJNZ R6,$
MOV A,#44H
STARTCONVERSION
MOV R6,#34H ;
DELAY104
READTEMP1:
LCALL INITDS1820
LCALL WRITEDS1820 ;
MOV R6,#34H ;
MOV A,#0BEH
LCALL WRITEDS1820 ;
SCRATCHPAD
MOV R5,#09H
MOV R0,#TEMPHEAD
MOV B,#00H
READTEMP2:
LCALL READDS1820
MOV @R0,A
INC R0
DJNZ R5,READTEMP2
MOV A,TEMPHEAD+0
MOV TEMPL,A
MOV A,TEMPHEAD+1
MOV TEMPH,A
READTEMPOUT:
RET
==================处理温度BCD码子程序==========================
CONVTEMP:
MOV A,TEMPH
ANL A,#80H
JZ TEMPC1
CLR C
MOV A,TEMPL
CPL A
ADD A,#01H
MOV A,TEMPH ;
-
ADDC A,#00H