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

📄 111111111111111.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
					CLR EA
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:	MOV DATIN,#044H		//convert
					LCALL WRITE
					MOV 070H,#250			//DELAY  >600MS
WAT:			MOV R1,#250
					LCALL DELAY10US
					DJNZ 070H,WAT
CNVTWAIT: LCALL RESET				// RESET
					MOV DATIN,#0CCH		//skip rom
					LCALL WRITE
					MOV DATIN,#0BEH		//read code
					LCALL WRITE

					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
					MOV R5,#240				// delay 600ms
KEEP1: 		MOV R1,#240
					LCALL DELAY10US
					DJNZ R5,KEEP1
									


	//************************************************//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


	/////////////////////////
				;	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
				;	MOV R5,#240				// delay 600ms
;KEEP1: 		MOV R1,#240
;					LCALL DELAY10US
;					DJNZ R5,KEEP1
;					//////////////////////////

MOV A,DAT4
					ANL A,#0F0H
					CLR C
					ADD A,#010H     	//P or N,
					JC NEG
POSITIVE: MOV A,DAT3				//positive    小数位   
					ANL A,#0FH
					MOV B,#10
					MUL AB
					MOV B,#16
					DIV AB
					MOV R7,A
					MOV A,B
					CLR C
					CJNE A,#08,POS1
					JC POS2
POS1:			INC R7
					MOV DAT1,#01H
					MOV DAT2,R7
					LCALL SEND
					SJMP POS3
POS2:			MOV DAT1,#01H
					MOV DAT2,R7
					LCALL SEND
POS3:			MOV A,DAT3
					ANL A,#0F0H
					RR A
					RR A
					RR A
					RR A
					MOV R6,A
					MOV A,DAT4
					ANL A,#00FH
					RL A
					RL A
					RL A
					RL A
					ORL A,R6
					ADD A,#00H
					CLR C
					DA A
					MOV R5,A
					MOV BIT3,R5
					ANL BIT3,#00FH
					ANL A,#0F0H
					RR A
					RR A
					RR A
					RR A
					MOV DAT2,A
					MOV DAT1,#03H
					LCALL SEND
					MOV DAT2,R5
					ORL DAT2,#80H
					MOV DAT1,#02H
					LCALL SEND
					JNC ENDD
					MOV DAT1,#04H
					MOV DAT2,#01H
					LCALL SEND
ENDD:			LJMP MAIN
NEG:			CLR C
					MOV A,DAT3
					CPL A
					ADD A,#01H
					MOV A,DAT4
					CPL A
					ADDC A,#00H
					MOV DAT1,#04H
					MOV DAT2,#0AH
					LCALL SEND
					JMP POSITIVE

⌨️ 快捷键说明

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