maitruccucdao
04-06-2009, 10:59 AM
bài viết của mình là dùng lm35 đo nhiệt độ rồi hiển thị lên led 7 đoạn, mình chỉ làm thử đo từ 0-3 độ, nhưng nó chỉ hiển thị 0 độ, khi tăng lên 1 độ thì nó hiển thị là số 01 nhưng sau đó lại nhảy về 00 liền, khi tăng lên 2 độ thì không hiển thị 02 mà nó hiển thị 00 luôn và các số lớn hơn mình chưa viết cho nó, nó vẫn hiển thị là 00...
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
ORG 0X00
BCF STATUS, 6
BCF STATUS, 5
CLRF PORTB
CLRF PORTC
CLRF PORTA
CLRF PORTE
BSF STATUS,5
MOVLW 0X00
MOVWF PORTB
MOVLW 0X00
MOVWF PORTC
BCF STATUS, 5
MAIN
CALL ADC
MOVF ADRESH
XORLW D'0'
BTFSS STATUS,Z
GOTO LOOP0
XORLW D'1'
BTFSS STATUS,Z
GOTO LOOP1
XORLW D'2'
BTFSS STATUS,Z
GOTO LOOP2
XORLW D'3'
BTFSS STATUS,Z
GOTO LOOP3
GOTO MAIN
LOOP0
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP1
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X01
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP2
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X02
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP3
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X03
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
DELAY
MOVLW b'00100000'
MOVWF T1CON
MOVLW 0XCF
MOVWF TMR1H
MOVLW 0X2B
MOVWF TMR1L
BSF T1CON,0
loop
BTFSS PIR1,0
goto loop
BCF PIR1,0
return
ADC
BSF STATUS, 5
BSF ADCON1, 3
BCF ADCON1,2
BSF ADCON1, 1
BCF ADCON1, 0
BCF STATUS, 5
BSF ADCON0, 5
BCF ADCON0, 4
BSF ADCON0, 3
BSF STATUS, 5
BSF ADCON1, 6
BCF STATUS, 5
BCF ADCON0, 7
BCF ADCON0, 6
BSF STATUS, 5
BCF ADCON1, 7
BCF STATUS, 5
BSF ADCON0, 2
BSF ADCON0, 0
return
END
Mình sài con 74247 để giảm bớt port cho led
nếu bạn nào sửa được xin gởi thông tin sớm và nhớ gởi cho mình một địa chỉ liên hệ, như yahoo. hay số điện thoại gì nhé. thanks
PROCESSOR 16F877A
#INCLUDE <P16F877A.INC>
ORG 0X00
BCF STATUS, 6
BCF STATUS, 5
CLRF PORTB
CLRF PORTC
CLRF PORTA
CLRF PORTE
BSF STATUS,5
MOVLW 0X00
MOVWF PORTB
MOVLW 0X00
MOVWF PORTC
BCF STATUS, 5
MAIN
CALL ADC
MOVF ADRESH
XORLW D'0'
BTFSS STATUS,Z
GOTO LOOP0
XORLW D'1'
BTFSS STATUS,Z
GOTO LOOP1
XORLW D'2'
BTFSS STATUS,Z
GOTO LOOP2
XORLW D'3'
BTFSS STATUS,Z
GOTO LOOP3
GOTO MAIN
LOOP0
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP1
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X01
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP2
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X02
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
LOOP3
MOVLW 0X00
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTC
CALL DELAY
MOVLW 0X03
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTC
CALL DELAY
GOTO MAIN
DELAY
MOVLW b'00100000'
MOVWF T1CON
MOVLW 0XCF
MOVWF TMR1H
MOVLW 0X2B
MOVWF TMR1L
BSF T1CON,0
loop
BTFSS PIR1,0
goto loop
BCF PIR1,0
return
ADC
BSF STATUS, 5
BSF ADCON1, 3
BCF ADCON1,2
BSF ADCON1, 1
BCF ADCON1, 0
BCF STATUS, 5
BSF ADCON0, 5
BCF ADCON0, 4
BSF ADCON0, 3
BSF STATUS, 5
BSF ADCON1, 6
BCF STATUS, 5
BCF ADCON0, 7
BCF ADCON0, 6
BSF STATUS, 5
BCF ADCON1, 7
BCF STATUS, 5
BSF ADCON0, 2
BSF ADCON0, 0
return
END
Mình sài con 74247 để giảm bớt port cho led
nếu bạn nào sửa được xin gởi thông tin sớm và nhớ gởi cho mình một địa chỉ liên hệ, như yahoo. hay số điện thoại gì nhé. thanks