Hi All,
I have written the assembly program using MPLAB IDE 8 for microchip '12F675' to blink 3 LEDs in a sequence. Upon compiling and running the program on a circuit, only one LED (Green LED) blinks consistently as expected however the rest of the two LEDs (Yellow and Red) does not glow. In the circuit all the anodes of the LEDs are connected together to a 330 ohms resistor which in turn is connected to +5 volts supply. The cathodes are individually connected to the PIC microcontroller.
Please find attached the program that I have written: (LED.asm). Kindly request to review and let me know if there is any changes that needs to be done, to make this program work.
Need help, the attached program LED.jpg to glow(blink) 3 LEDs in sequence is not working for some reason.
Kindly request to review and advise.
ERRORLEVEL 2 ; SUPPRESS MESSAGES AND WARNINGS
#INCLUDE P12F675.INC ; PROCESSOR SPECIFIC VARIABLE
__CONFIG _FOSC_INTRCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _CP_OFF & _CPD_OFF
CBLOCK 0x20
DEL
DEL1
ENDC
; START POINT FOR THE PIC MICROCONTROLLER
ORG 0x0000 ; PROCESSOR RESET VECTOR
NOP
CALL INIHW
GOTO START
; INTERRUPT POINT FOR THE PIC MICROCONTROLLER
ORG 0x0004
RETURN
; START POINT FOR THE USER APPLICATION
ORG 0x0010
START CALL YLED ; GLOW YELLOW LED
CALL DELAY ; DELAY
CALL GLED ; GLOW GREEN LED
CALL DELAY ; DELAY
CALL RLED ; GLOW RED LED
CALL DELAY ; DELAY
GOTO START ; REDO
; DELAY PROGRAM
DELAY MOVLW 0xFF ;
MOVWF DEL1 ;
WAIT1 MOVLW 0xFF ;
MOVWF DEL ;
WAIT DECFSZ DEL, F ;
GOTO WAIT ;
DECFSZ DEL1, F ;
GOTO WAIT1 ;
RETURN ;
; GLOW YELLOW LED
YLED BCF GPIO, 4 ; SWITCH ON YELLOW LED
BSF GPIO, 2 ; SWITCH OFF GREEN LED
BSF GPIO, 5 ; SWITCH OFF RED LED
RETURN
; GLOW GREEN LED
GLED BSF GPIO, 4 ; SWITCH OFF YELLOW LED
BCF GPIO, 2 ; SWITCH ON GREEN LED
BSF GPIO, 5 ; SWITCH OFF RED LED
RETURN
; GLOW RED LED
RLED BSF GPIO, 4 ; SWITCH OFF YELLOW LED
BSF GPIO, 2 ; SWITCH OFF GREEN LED
BCF GPIO, 5 ; SWITCH ON RED LED
RETURN
; INTIALIZE PERIPHERIALS
INIHW BCF STATUS, RP0 ; SWITCH TO BANK 00
CLRF GPIO ; CLEAR ALL PORT LATCHES
CLRF INTCON ; DISABLE ALL INTERRUPTS
CLRF PIR1 ; CLEAR ALL PERIPHERAL INTERRUPT FLAGS
MOVLW 0x07
MOVWF CMCON ; DISABLE COMPARATOR
BSF STATUS, RP0 ; SWITCH TO BANK 01
CLRF PIE1 ; DISABLE ALL PERIPHERAL INTERRUPTS
CLRF ANSEL ; DISABLE ADC
MOVLW 0x0B
MOVWF TRISIO ; SET 0,1,3 GPIO AS I/P 2,4,5 GPIO AS O/P
CALL 3FFh ; RETREIVE FACTORY OSCILATOR CALIBRATION BYTE
MOVWF OSCCAL ; LOAD IT TO OSCCAL
BCF STATUS, RP0 ; SWITCH TO BANK 00
RETURN
END