tkb5416
Newbie level 4
Hi,
I have faced some problems with lighting LEDs thought PIC16F877A. When there is input through PORTA, the LEDs in PORTD will light up. But, when the input is disconnect, the LEDs in PORTD are on and sometimes blinking unstably.
I have connected VPP,VDD to +5 and VSS to GND. I used 20 Mhz crystal with two capacitors that are connected to GND.
I do not know what has gone wrong with this experiment.
I really need your help. Thank you.
****************************************************************
LIST P=16F877A
#include <P16F877A.INC>
; Configuration
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON
STATUS equ 0X03
ADCON1 equ 0X9F
PORTA equ 0X05
PORTD equ 0X08
;main routine
ORG 00
GOTO MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
BCF STATUS, RP1
BSF STATUS, RP0 ; select Bank1
MOVLW B'00000110'
MOVWF ADCON1 ; assign Digital Port Configuration Pins
MOVLW B'00001111'
MOVWF TRISA ; set pin0-3 of PortA as input
CLRF TRISD ; set all pins of PortD as output
BCF STATUS, RP1
BCF STATUS, RP0 ;select Bank0
CLRF PORTA
CLRF PORTD
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP
; LED_CONTROL
BTFSC PORTA, 0
CALL LED_PATTERN0
BTFSC PORTA, 1
CALL LED_PATTERN1
BTFSC PORTA, 2
CALL LED_PATTERN2
BTFSC PORTA, 3
CALL LED_PATTERN3
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_PATTERN0
MOVLW B'00001001'
MOVWF PORTD
BTFSC PORTA, 0
GOTO LED_PATTERN0
CLRF PORTD
GOTO LOOP
LED_PATTERN1
MOVLW B'00000110'
MOVWF PORTD
BTFSC PORTA, 1
GOTO LED_PATTERN1
CLRF PORTD
GOTO LOOP
LED_PATTERN2
MOVLW B'00000101'
MOVWF PORTD
BTFSC PORTA, 2
GOTO LED_PATTERN2
CLRF PORTD
GOTO LOOP
LED_PATTERN3
MOVLW B'00001010'
MOVWF PORTD
BTFSC PORTA, 3
GOTO LED_PATTERN3
CLRF PORTD
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
****************************************************************
I have faced some problems with lighting LEDs thought PIC16F877A. When there is input through PORTA, the LEDs in PORTD will light up. But, when the input is disconnect, the LEDs in PORTD are on and sometimes blinking unstably.
I have connected VPP,VDD to +5 and VSS to GND. I used 20 Mhz crystal with two capacitors that are connected to GND.
I do not know what has gone wrong with this experiment.
I really need your help. Thank you.
****************************************************************
LIST P=16F877A
#include <P16F877A.INC>
; Configuration
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON
STATUS equ 0X03
ADCON1 equ 0X9F
PORTA equ 0X05
PORTD equ 0X08
;main routine
ORG 00
GOTO MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
BCF STATUS, RP1
BSF STATUS, RP0 ; select Bank1
MOVLW B'00000110'
MOVWF ADCON1 ; assign Digital Port Configuration Pins
MOVLW B'00001111'
MOVWF TRISA ; set pin0-3 of PortA as input
CLRF TRISD ; set all pins of PortD as output
BCF STATUS, RP1
BCF STATUS, RP0 ;select Bank0
CLRF PORTA
CLRF PORTD
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP
; LED_CONTROL
BTFSC PORTA, 0
CALL LED_PATTERN0
BTFSC PORTA, 1
CALL LED_PATTERN1
BTFSC PORTA, 2
CALL LED_PATTERN2
BTFSC PORTA, 3
CALL LED_PATTERN3
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED_PATTERN0
MOVLW B'00001001'
MOVWF PORTD
BTFSC PORTA, 0
GOTO LED_PATTERN0
CLRF PORTD
GOTO LOOP
LED_PATTERN1
MOVLW B'00000110'
MOVWF PORTD
BTFSC PORTA, 1
GOTO LED_PATTERN1
CLRF PORTD
GOTO LOOP
LED_PATTERN2
MOVLW B'00000101'
MOVWF PORTD
BTFSC PORTA, 2
GOTO LED_PATTERN2
CLRF PORTD
GOTO LOOP
LED_PATTERN3
MOVLW B'00001010'
MOVWF PORTD
BTFSC PORTA, 3
GOTO LED_PATTERN3
CLRF PORTD
GOTO LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
****************************************************************