⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 潘.asm

📁 几个单片机程序
💻 ASM
字号:
;开始温度检测
LCALL REST ;对DS18B20发复位命令
MOV A,#0CCH ;发跳过DS18B20的命令机器代码
LCALL WRBYTE
MOV A,#44H ;对DS18B20发温度转换命令
LCALL WRBYTE
LCALL DELAY ;DS18B20温度转换所需延时1S
MOV R1,#30H
MOV 30H,#28H;将所读的DS18B20序列号存于内部RAM中,地址单元为:30H-3FH。
MOV 31H,#9BH ;注意如果对于6个以上的话,一般把他们的序列号存于外部RAM中。
MOV 32H,#0BBH    
MOV 33H,#22H 
MOV 34H,#0H   
MOV 35H,#0H    
MOV 36H,#0H    
MOV 37H,#1FH    
MOV 38H,#28H    
MOV 39H,#3AH    
MOV 3AH,#0F0H  
MOV 3BH,#22H 
MOV 3CH,#0H  
MOV 3DH,#0H 
MOV 3EH,#0H
MOV 3FH,#0EDH
MOV R4,#2H ;总线上DS18B20的数目
CYCLE: LCALL RESET ;对DS18B20发复位命令.
MOV A,#55H ;总线发匹配命令。    
LCALL WRBYTE    
MOV R6,#8H ;DS18B20的序列号占8个字节。 
CY1: MOV A,@R1 ;总线发一个DS18B20的序列号。    
LCALL WRBYTE  
INC R1    
DJNZ R6,CY1    
MOV A,#0BEH ;发读取温度的命令的机器代码。    
LCALL WRBYTE    
LCALL READ ;读温度值,低字节送50H。
MOV 50H,ACC ;高字节送51H。    
LCALL READ   
MOV 51H,ACC  
LCALL RESET  ;发复位命令。    
LCALL DISP ;调用显示程序。    
DJNZ R4,CYCLE ;判断DS18B20有无都显示完毕。    
LJMP START 
RESET:PUSH B ;对DS18B20的复位子程序。    
PUSH ACC
BACK:MOV A,#200 ;使总线低电平保持600us。
L1:CLR  P0.0    
DJNZ ACC,L1    
SETB P0.0 ;释放总线。
MOV B,#30   
DJNZ B,$ 
CLR C
ORL C,P0.0   
JC BACK
MOV B,#80 
L2: ORL C,P0.0   
JC L3 ;复位成功,跳转。   
DJNZ B,L2   
SJMP BACK ;复位失败重来。 
L3:MOV B,#240   
DJNZ B,$   
POP ACC  
POP B 
RET
WRBYTE: PUSH PSW ;往DS18B20写一个字节子程序。    
SETB  PSW.3    
CLR PSW.4    
MOV R6,#8 
WRBIE:SETB P0.0    
MOV R7,#7    
RRC A    
CLR P0.0    
NOP    
NOP    
DJNZ R7,$    
MOV P0.0,C
MOV R7,#20    
DJNZ R7,$    
DJNZ R6,WRBIT    
SETB P0.0;总线在空闲状态时,应为高电平。
POP PSW  
RET 
DISP:PUSH  PSW
SETB PSW.4     
CLR  PSW.3    
MOV  A,51H ;将温度高字节数据拿出来分析,    
RLC A
CLR C   
MOV R6,#4 ;对温度值进行处理右移4位。 
DISPP:MOV A,51H 
RC A  
MOV 51H,A
MOV A,50H   
RRC A
MOV 50H,A
DJNZ R6,DISPP
MOV 10H,C ;将判断有无0.5送位地址10H  
MOV R0,50H ;将温度值的整数部分送R0.
LCALL CHULI ;将二进制的数转换成BCD码。
CHULI:PUSH PSW ;将二进制数转换成BCD码程序。    
SETEB PSW.4    
CLR PSW.3
MOV A,R0 
MOV B,#64H
DIV AB
MOV R3,A
MOV A,#0AH
XCH A,B 
DIV AB
MOV R4,A
MOV A,B
MOV R5,A
POP PSW
RET 
READ:PUSH B;从DS18B20里读取数据的子程序。    
PUSH PSW
SETB PSW.3
CLR PSW.4
MOV B,#8
END



 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -