manhdt3
24-09-2011, 01:38 AM
em đang làm về cảm biến nhiệt độ này dung assembly đây là code e viết. e mô phỏng toàn chỉ thấy gia giá trị là ff thôi mặc dù thây đổi giá trị từ ds1820 mong các bác giúp đỡ em cám ơn ah!
đây là code e viết
PROCESSOR P16F877A
INCLUDE<P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF
T1 EQU 0X20
T2 EQU 0X21
TAM EQU 0X22
DEM EQU 0X23
NHO EQU 0X24
TEMP1 EQU 0X25
TEMP2 EQU 0X26
XEM EQU 0X27
THEM EQU 0X28
;--------------------------TRE THOI GIAN T1X5 uS
ORG 0X00
GOTO MAIN
DELAY
MOVWF T1
MOVLW D'1'
MOVWF T2
D1
DECFSZ T1
GOTO +2
DECFSZ T2
GOTO D1
RETURN
;---------------------------------
WRITEBYTE
MOVWF TAM
MOVLW D'8' ; 8 LAN VONG LAP
MOVWF DEM
D2
RRF TAM,1
BTFSS STATUS,C
GOTO OUT_0
GOTO OUT_1
;-------------------------------
OUT_0 ; suat 1 bit ra ngoai
BCF PORTB,4
MOVLW D'20' ;20X5uS
CALL DELAY
BSF PORTB,4
GOTO OUTBYTE1
;==================OUT BIT 1
OUT_1
BCF PORTB,4
BSF PORTB,4
MOVLW D'20'
CALL DELAY
GOTO OUTBYTE1
OUTBYTE1
DECFSZ DEM,1
GOTO D2
RETLW 0
;==============================================
READ_BYTE
MOVLW D'12'
MOVWF DEM
D3
CALL READ_BIT
BSF STATUS,RP0
BCF TRISB,4
BCF STATUS,RP0
MOVWF NHO
RRF NHO,1
RLF TEMP1
RLF TEMP2,1
DECFSZ DEM
GOTO D3
MOVLW D'10'
CALL DELAY
RETLW 0
READ_BIT
BCF PORTB,4
NOP
NOP
NOP
NOP
NOP
NOP
BSF PORTB,4
NOP
NOP
NOP
NOP
BSF STATUS,RP0 ; BANK 1
BSF TRISB,4 ; PORTA,BIT 4 LAM DAU VAO
BCF STATUS,RP0 ; BANK 0
BTFSC PORTB,4
RETLW 1
RETLW 0
INITIALIZATION
BSF STATUS,RP0 ; BANK 1
BCF TRISB,4 ; PORTB BIT 4 LAM OUTPUT
BCF STATUS,RP0 ; BANK 0
BSF PORTB,4
BCF PORTB,4
MOVLW D'100' ;100X5uS
CALL DELAY
BSF PORTB,4
L1
MOVLW D'100' ;100X5uS
CALL DELAY
BSF STATUS,RP0 ; BANK 1
BSF TRISB,4 ; PORTB,BIT 4 LAM DAU VAO
BCF STATUS,RP0
;BTFSC PORTB,4
;GOTO L1
BSF STATUS,RP0 ; BANK 1
BCF TRISB,4 ; PORTB BIT 4 LAM OUTPUT
BCF STATUS,RP0 ; BANK 0
RETLW 0
;----------------------- CHUONG TRINH CHINH
MAIN
BSF STATUS,RP0
MOVLW 0X00
MOVWF TRISB
BCF STATUS,RP0 ; BANK 0
;CONFIG DS1820
LOOP
CLRF TEMP1
CLRF TEMP2
CALL INITIALIZATION ; INITIALIZATION DS1820
MOVLW 0XCC;SKIP ROM
MOVWF XEM
CALL WRITEBYTE
MOVLW 0X44 ; CONVERT
MOVWF XEM
CALL WRITEBYTE
; LAY GIA TRI
MOVLW D'100'
CALL DELAY
CALL INITIALIZATION ; INITIALIZATION DS1820
MOVLW 0XCC
MOVWF XEM
CALL WRITEBYTE
MOVLW 0XBE
MOVWF XEM
CALL WRITEBYTE
CALL READ_BYTE
GOTO LOOP
END
đây là code e viết
PROCESSOR P16F877A
INCLUDE<P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF &_BODEN_OFF &_PWRTE_ON &_XT_OSC &_WRT_OFF &_LVP_OFF &_CPD_OFF
T1 EQU 0X20
T2 EQU 0X21
TAM EQU 0X22
DEM EQU 0X23
NHO EQU 0X24
TEMP1 EQU 0X25
TEMP2 EQU 0X26
XEM EQU 0X27
THEM EQU 0X28
;--------------------------TRE THOI GIAN T1X5 uS
ORG 0X00
GOTO MAIN
DELAY
MOVWF T1
MOVLW D'1'
MOVWF T2
D1
DECFSZ T1
GOTO +2
DECFSZ T2
GOTO D1
RETURN
;---------------------------------
WRITEBYTE
MOVWF TAM
MOVLW D'8' ; 8 LAN VONG LAP
MOVWF DEM
D2
RRF TAM,1
BTFSS STATUS,C
GOTO OUT_0
GOTO OUT_1
;-------------------------------
OUT_0 ; suat 1 bit ra ngoai
BCF PORTB,4
MOVLW D'20' ;20X5uS
CALL DELAY
BSF PORTB,4
GOTO OUTBYTE1
;==================OUT BIT 1
OUT_1
BCF PORTB,4
BSF PORTB,4
MOVLW D'20'
CALL DELAY
GOTO OUTBYTE1
OUTBYTE1
DECFSZ DEM,1
GOTO D2
RETLW 0
;==============================================
READ_BYTE
MOVLW D'12'
MOVWF DEM
D3
CALL READ_BIT
BSF STATUS,RP0
BCF TRISB,4
BCF STATUS,RP0
MOVWF NHO
RRF NHO,1
RLF TEMP1
RLF TEMP2,1
DECFSZ DEM
GOTO D3
MOVLW D'10'
CALL DELAY
RETLW 0
READ_BIT
BCF PORTB,4
NOP
NOP
NOP
NOP
NOP
NOP
BSF PORTB,4
NOP
NOP
NOP
NOP
BSF STATUS,RP0 ; BANK 1
BSF TRISB,4 ; PORTA,BIT 4 LAM DAU VAO
BCF STATUS,RP0 ; BANK 0
BTFSC PORTB,4
RETLW 1
RETLW 0
INITIALIZATION
BSF STATUS,RP0 ; BANK 1
BCF TRISB,4 ; PORTB BIT 4 LAM OUTPUT
BCF STATUS,RP0 ; BANK 0
BSF PORTB,4
BCF PORTB,4
MOVLW D'100' ;100X5uS
CALL DELAY
BSF PORTB,4
L1
MOVLW D'100' ;100X5uS
CALL DELAY
BSF STATUS,RP0 ; BANK 1
BSF TRISB,4 ; PORTB,BIT 4 LAM DAU VAO
BCF STATUS,RP0
;BTFSC PORTB,4
;GOTO L1
BSF STATUS,RP0 ; BANK 1
BCF TRISB,4 ; PORTB BIT 4 LAM OUTPUT
BCF STATUS,RP0 ; BANK 0
RETLW 0
;----------------------- CHUONG TRINH CHINH
MAIN
BSF STATUS,RP0
MOVLW 0X00
MOVWF TRISB
BCF STATUS,RP0 ; BANK 0
;CONFIG DS1820
LOOP
CLRF TEMP1
CLRF TEMP2
CALL INITIALIZATION ; INITIALIZATION DS1820
MOVLW 0XCC;SKIP ROM
MOVWF XEM
CALL WRITEBYTE
MOVLW 0X44 ; CONVERT
MOVWF XEM
CALL WRITEBYTE
; LAY GIA TRI
MOVLW D'100'
CALL DELAY
CALL INITIALIZATION ; INITIALIZATION DS1820
MOVLW 0XCC
MOVWF XEM
CALL WRITEBYTE
MOVLW 0XBE
MOVWF XEM
CALL WRITEBYTE
CALL READ_BYTE
GOTO LOOP
END