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

📄 h1820.asm

📁 汇编程序(cygnal c8051f021)
💻 ASM
字号:
$INCLUDE(C8051F020.INC)
DAT3 DATA 030H
DAT4 DATA 031H
BIT1 DATA 032H
BIT2 DATA 033H
BIT3 DATA 034H
BIT4 DATA 035H

DATIN DATA 021H
DATOUT DATA 022H
DAT1 DATA 023H
DAT2 DATA 024H

DIN BIT P1.1
LOAD BIT P1.2
CLK BIT P1.3

ORG 0000H
AJMP START
ORG 0100H

START:		MOV WDTCN,#0DEH
					MOV WDTCN,#0ADH
CLOCK:		MOV OSCXCN,#067H
					CLR A
					DJNZ ACC,$
					DJNZ ACC,$
WAIT:			MOV A,OSCXCN
					JNB ACC.7,WAIT
					ORL OSCICN,#80H
					ORL OSCXCN,#80H
SETT: 		MOV XBR2,#40H
					MOV P1MDOUT,#0FFH
					MOV P2MDOUT,#0FFH
					MOV TMOD,#10H
					MOV DAT1,#09H //硬件译码
					MOV DAT2,#0FFH 
					LCALL SEND
					MOV DAT1,#0AH //强度5
					MOV DAT2,#04H
					LCALL SEND
					MOV DAT1,#0BH //限扫4
					MOV DAT2,#03H
					LCALL SEND						
					MOV DAT1,#0CH// 启动	
					MOV DAT2,#01H
					LCALL SEND

MAIN:			LCALL RESET				//reset
					JNB PSW.1,MAIN
					MOV DATIN,#0CCH  //skip rom
					LCALL WRITE
CONVERT:	LCALL RESET				//RESET
					JNB PSW.1,CONVERT
					MOV DATIN,#0CCH		//SKIP ROM
					LCALL WRITE
					MOV DATIN,#044H		//convert
					LCALL WRITE
					LCALL READ				//read time
CNVTWAIT: JNB P2.0,CNVTWAIT
RST:			LCALL RESET				// RESET
					JNB PSW.1,RST
					MOV DATIN,#0CCH		//skip rom
					LCALL WRITE
					MOV DATIN,#0BEH		//read code
					LCALL WRITE
					LCALL READT
SST:			JNB P2.0,SST
					LCALL READ				//read data(dat4,dat3)
					MOV DAT3,DATOUT
					LCALL READ
					MOV DAT4,DATOUT
					MOV A,DAT3
					ANL A,#0FH
					MOV DAT1,#01H
					MOV DAT2,A
					LCALL SEND
				  MOV A,DAT3
					ANL A,#0F0H
					RR A
					RR A
					RR A
					RR A
					MOV DAT1,#02H
					MOV DAT2,A
					LCALL SEND
					MOV A,DAT4
					ANL A,#0FH
					MOV DAT1,#03H
					MOV DAT2,A
					LCALL SEND
					MOV A,DAT4
					ANL A,#0F0H
					RR A
					RR A
					RR A
					RR A
					MOV DAT1,#04H
					MOV DAT2,A
					LCALL SEND				
ENDD:			LJMP MAIN

	//************************************************//RESET DS18B20
RESET:		SETB P2.0
					MOV R0,#01H
					LCALL DELAY2US
					CLR P2.0
					MOV R1,#50					//500 US
					LCALL DELAY10US
					SETB P2.0
					MOV R1,#06H						//60 US
					LCALL DELAY10US
					JNB P2.0,RETT
					SETB PSW.1 	
					MOV R1,#24					//240 US
					LCALL DELAY10US
RETT:			RET
	//************************************************//READ DS18B20 DATA
READ:			MOV R2,#08H
READLOOP:	CLR P2.0         //P2.0=0
					MOV R0,#02H
					LCALL DELAY2US	 //4 US
					SETB P2.0        //P2.0=1
					MOV R0,#02H			 //4 US
					LCALL DELAY2US
					CLR C
					MOV C,P2.0			 //START READ
					MOV DATOUT.7,C
					MOV A,DATOUT
					RR A
					MOV DATOUT,A
					MOV R1,#06H			 //60 US
					LCALL DELAY10US
					DJNZ R2,READLOOP
					SETB P2.0
					MOV R0,#01H 		 //2 US
					LCALL DELAY2US
					RET
	//*************************************************//写数据   P2.0=1
WRITE:		MOV R3,#08H
WRITELOOP:CLR P2.0				 //P2.0=0
					MOV R0,#01H 		 //2 US
					LCALL DELAY2US
					MOV C,DATIN.0
					MOV P2.0,C			 //START WRITE
					MOV A,DATIN
					RR A
					MOV DATIN,A
					MOV R1,#06H      //60 US
					LCALL DELAY10US  
					DJNZ R3,WRITELOOP
					SETB P2.0
					MOV R0,#01H 		 //2 US
					LCALL DELAY2US
					RET
	//**************************************************//读时间间隙  
READT:		CLR P2.0         //P2.0=0
					MOV R0,#01H
					LCALL DELAY2US	 //2 US
					SETB P2.0        //P2.0=1
					MOV R0,#02H			 //4 US
					LCALL DELAY2US
					MOV R1,#06H
					LCALL DELAY10US
					RET
	//**************************************************//MAX7219SEND
SEND:			MOV R0,#08H       //7219 SEND
					CLR LOAD
					MOV 050H,A
					PUSH 050H
SENDLOOP: CLR CLK										
					MOV C,DAT1.7
					MOV DIN,C
					SETB CLK
					MOV A,DAT1
					RL A
					MOV DAT1,A
					DJNZ R0,SENDLOOP
SEND1:		MOV R3,#08H
SENDLOOP1:CLR CLK
					MOV C,DAT2.7
					MOV DIN,C
					SETB CLK
					MOV A,DAT2
					RL A
					MOV DAT2,A
					DJNZ R3,SENDLOOP1
					SETB LOAD
					POP 050H
					MOV A,050H
					RET
	//*****************************************************//DELAY 2 US
DELAY2US:	MOV TH0,#0FFH			//2US
					MOV TL0,#0FFH
					SETB TR0
LOOP1:		JBC TF0,LOOP2
					SJMP LOOP1
LOOP2:		CLR TR0
					CLR TF0
					DJNZ R0,DELAY2US
					RET
	//******************************************************//DELAY 10 US
DELAY10US:MOV TH1,#0FFH  //10US
					MOV TL1,#0F7H
					SETB TR1
LOOP3:		JBC TF1,LOOP4
					SJMP LOOP3
LOOP4:		CLR TR1
					CLR TF1
					DJNZ R1,DELAY10US
					RET
					END


⌨️ 快捷键说明

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