免费毕业论文--基于单片机的温度监测系统(一)(6)
2013-05-10 18:04
导读:别是:总线复位子程序;总线读8位数据位子程序;总线写8位数据位子程序。在读、写8位数据位的子程序中,涉及了读/写“0”时序和读/写“1”时序的汇
别是:总线复位子程序;总线读8位数据位子程序;总线写8位数据位子程序。在读、写8位数据位的子程序中,涉及了读/写“0”时序和读/写“1”时序的汇编语言实现。下面就是用汇编语言编写的三个子程序的源代码及其说明,晶振频率12M:
初始化DS 1820的子程序:
INIT:
L0:MOV P1,#OOH
MOV R2,#5
L1:MOV R1,#125 ;总线为低复位电平
L2:DJNZ R 1,L2
DJNZ R2,L 1 ;总线复位电平保持125X5=625 u s
MOV P1,#OFFH ;释放DS 1820总线
MOV R2,#63
L3:DJNZ R2,L3 ;释放DS 1820总线等待63 u s
MOV R3,#41 ;监测存在脉冲41 X 10 u s
L4:MOV C,P1.5
JNC L6 ;监测到存在脉冲,跳转至延时420 u s
DEC R3
MOV A,R3
JZ L5 ;接收到存在脉冲吗?不存在重新来
SJMP L4 ;继续监测存在脉冲
L5:SJMP L0
L6:MOV R1,#3 ;延时630 u s
L7:MOV R6,#210
L8:DJNZ R6,L8
DJNZ R1,L7
MOV P1,#OFFH ;初始化完成释放总线
RET ;退出初始化子程序
主机写时序时的子程序:
注:取A寄存器内的8位数据,写入总线
WRITE:
MOV R3,#8 ;写入DS 1820的bit数,一个字节8个bit
WRl:RRC A ;把一个字节分成8个bit环移给C
CLR P1.5 ;主机开始传输数据,总线要处于低电平状态
(科教作文网 zw.nseac.com整理)
MOV R4,#10 ;总线保持低电位l0 u s
WR2:DJNZ R4,WR2
JC WR5 ;对当前数据位进行判断,是写‘0’还是写‘1’
CLR P1.5 ;writer‘0’
MOV R2,#50 ;writer ‘0’延时55 p s,由DS1820取样
WR3:DJNZ R2,WR3
MOV P1,#OFFH ;总线释放101, s
MOV R5,#10
WR4:DJNZ R5,WR4
DJNZ R3,WR1 ;泻入下一个bit
SJMP WR7 ;全写完转入退出
WR5:SETB P1.5 ;writer ‘1’ ,DS1820总线释放
MOV R2,#55
WR6:DJNZ R2,WR6 ;等待551, s,DS 1820取样
DJNZ R3,WR 1 ;写入下一个bit
WR7:MOV P1,#OFFH
MOV R5,#5
WR8:DJNZ R5,WR8
RET ;退出WRITE子程序
主机读时序时的子程序: (转载自http://www.NSEAC.com中国科教评价网)
注:一读总线上传输的8位数据,结果存