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

📄 tc728720.asm

📁 use pic18f to read temp with tc21.
💻 ASM
字号:
;**********************************************************************
;                                                                     *
;    Filename:      TC728720.asm                                      *
;    Date:          11/25/03                                          *
;    File Version:  1.1                                               *
;                                                                     *
;    Author:        TSENG-HSUAN FAN                                   *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes:                                                           *
;                                                                     *
; 1. THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES,*
; WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED   *
; TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A         *
; PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE AUTHOR SHALL NOT,    *
; IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR          *
; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.                   *
; 2. THIS PROGRAM WAS TESTED ON SSE8720 DEMO BOARD.					  *
; 3. THE DEMONSTRATION BOARD SSE8720 SPECIFICATIONS CAN BE FOUND AT   *
; WWW.EVB.COM.TW	 												  *
;**********************************************************************
		list      p=18F8720
		#include <p18F8720.inc>

#DEFINE TMP_ENB		PORTH,0		;TC72   CE
#DEFINE SPI_CK		PORTC,3		;SERIAL CLOCK
#DEFINE SPI_DI		PORTC,5		;SERIAL DATA IN
#DEFINE SPI_DO		PORTC,4		;SERIAL DATA OUT
; REGISERS TO STORE DATA
MSB		EQU		0X34
LSB		EQU		0X35
CNT		RES		1
TEMP	RES		1

	
		ORG		0X00				; START OF PROGRAM
		CLRF	TRISD				; SET PORTD AS OUTPUT PORT
		MOVLW	0XFF				; TURN OFF LEDs
		MOVWF	PORTD				; "
		CALL	SPI_INIT			; INITILIZE SERIAL COMMUNICATION
		CALL	TC72_CONVERSION_MODE; LET TC72 STARTS CONVERTING EVERY 150ms
LOOP
		CALL	TC72_READING_MODE	; GET THE TEMPERATURE FROM TC72
		COMF	MSB,F				; LEDs ARE ACTINE LOW
		MOVFF 	MSB,PORTD			; THEREFORE, COMPLEMENT THE DATA AND DISPLAY
		CALL	DELAY_100MS			; WAIT 200ms
		CALL	DELAY_100MS			; "
		GOTO	LOOP				; INFINITE LOOP

;;;---------------------------------------------------------------------		
;;; TEMPERATURE SENSOR
;;;---------------------------------------------------------------------		
TC72_READING_MODE
		BSF		TMP_ENB			; START SPI COMMUNICATION
		NOP						; CLOCK SET UP DELAY
		NOP						; "
		MOVLW	0X02			; MSB ADDRESS 
		CALL	WRITE_SPI		; CALL WRITE SUBROUTINE
		CALL	READ_SPI		; CALL READ SUBROUTINE
		MOVWF	MSB				; COPY DATA TO MSB REGISTER
		CALL	READ_SPI		; READ LSB DATA
		MOVWF	LSB				; COPY DATA TO LSB REGISTER
		NOP						; TCCH DELAY
		NOP						; "
		bCf 	TMP_ENB			; Terminate SPI communication
		RETURN

TC72_CONVERSION_MODE
		BSF		TMP_ENB			; START SPI COMMUNICATION
		NOP						; CLOCK SET UP DELAY
		NOP						; "
		MOVLW	0X80			; CONTROL REGISTER ADDRESS 
		CALL	WRITE_SPI		; CALL WRITE SUBROUTINE
		MOVLW	0X00			; TEMP. CONVERSION MODE
		CALL	WRITE_SPI		; CALL WRITE SUBROUTINE
		NOP						; TCCH DELAY TIME
		NOP						; "
		bCf 	TMP_ENB			; Terminate SPI communication
		RETURN

TC72_SAVING_MODE
		BSF		TMP_ENB			; START SPI COMMUNICATION
		NOP						; CLOCK SET UP DELAY
		NOP						; "
		MOVLW	0X80			; CONTROL REGISTER ADDRESS 
		CALL	WRITE_SPI		; CALL WRITE SUBROUTINE
		MOVLW	0X01			; POWER SAVING MODE
		CALL	WRITE_SPI		; CALL WRITE SUBROUTINE
		NOP						; TCCH DELAY TIME
		NOP						; "
		bCf 	TMP_ENB			; Terminate SPI communication
		RETURN

READ_SPI
		MOVLW	0X08			; 8-BIT DATA
		MOVWF	CNT				; SET UP COUNTER
SPI_R_LOOP
		RLNCF	TEMP,F			; ROTATE TEMP REGISTER TO LEFT 1 BIT
		BSF		SPI_CK			; ASSERT CLOCK
		BCF		TEMP,0			; DETERMINE INCOMING DATA
		BTFSC	SPI_DI			; IN-DATA = 0, SET TEMP,0 LOW
		BSF		TEMP,0			; IN-DATA = 1, SET TEMP,0 HIGH
		BCF		SPI_CK			; DS-ASSERT CLOCK
		DECFSZ	CNT,F			; DECREMENT CONTER
		GOTO	SPI_R_LOOP		; NOT DONE YET
		MOVF	TEMP,W			; DONE. COPY DATA TO WREG REGISTER
		RETURN


WRITE_SPI
		MOVWF	TEMP			; MOVE COMMAND TO TEMP 
		MOVLW	0X08			; 8-BIT DATA
		MOVWF	CNT				; SET UP COUNTER
SPI_W_LOOP
		BCF		SPI_DO			; SHIFT OUT MSB
		BTFSC	TEMP,7			; DETERMINE HIGH OR LOW
		BSF		SPI_DO			; "
		BSF		SPI_CK			; ASSERT CLOCK
		RLNCF	TEMP,F			; ROTATE TEMP TO LEFT ONE BIT
		BCF		SPI_CK			; DE-ASSERT CLOCK
		DECFSZ	CNT,F			; DECREMENT COUNTER
		GOTO	SPI_W_LOOP		; NOT DONE YET
		RETURN

SPI_INIT
		MOVLW	B'00100000'		; SET UP THE PORT DIRECTION
		MOVWF	TRISC			; BIT5 INPUT, THE RESET OUTPUT
		MOVLW	B'00000000'		; CLEAR PORTC
		MOVWF	PORTC			; "
		movlw	0x0F			; SET PORTH AS DIGITAL IO
		movwf	ADCON1			; "
		clrf	PORTH			; CLEAR PORTH
		clrf	LATH			; "
		CLRF	TRISH  			; SET PORTH AS OUTPUT PORT
		clrf	PORTH			; "
		RETURN
		#INCLUDE <c:\PIC18\8720 folder\DELAY.ASM> 
		END

⌨️ 快捷键说明

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