Need help programming 12F675 for Halloween project

Thread Starter

booji

Joined Sep 27, 2009
3
Hi. I need help writing code for a 12F675 to flash LEDs in a specific sequence.
I want to press a switch, display the following binary sequence, then pause until the switch is pressed again: 1000,0100,0010,0001,1111,1000,0100,0010,1111,1000,0100,1111,1000,1111

Seems simple enough, but I've been unsuccessful in my lame attempts at coding. I can design & build the circuit easily, just need the asm code.
This is for a custom T-shirt using 4 LED backlight assemblies from ipod screens. Thanks very much!
 

Tahmid

Joined Jul 2, 2008
343
Hi booji,
This is a very easy program. I am busy now and hope to provide you the Code tomorrow. Since you require 5 Pins (4 for 4 Leds and 1 for Switch), You have to use internal 4MHz Oscillator as you cannot use external Xtal as its use will keep only 4 pins for you out of 6 and you have to use Shift Register or you have to use a Microcontroller with more I/O Pins. Do you know how to use internal Oscillator? O.K. I will see tomorrow. Thanks.
 

Thread Starter

booji

Joined Sep 27, 2009
3
Tahmid, thank you for the reply. The OSCCAL value is 0002, if I didn't already erase it by accident. Is that critical? I need each step to light for approx 500ms, give or take 100ms. The start switch will be on GP3, and the LED's on GP0, GP1, GP2 & GP5.
 

Tahmid

Joined Jul 2, 2008
343
Hi,
Here is the code in ASM. Delay is 500ms in between. If you require 1sec, call the 500ms delay twice. Circuit, if required, is attached. Sequence is maintained according to your requirement.

Rich (BB code):
; PROG WITH PIC 12F675 - SEQUENTIAL LED LIGHTING.
; PROCESSOR - 12F675
; INTERNAL OSCILLATOR - 4MHZ
; DATED:28 SEPTEMBER, 2009
; PREP BY: SYED TAHMID MAHBUB.
;----------------------------------------------------------------

  TITLE:"SEQUENTIAL LED LIGHTING WITH PIC 12F675."

       LIST P = 12F675
       #INCLUDE "P12F675.INC"

         __CONFIG     H'31C4'
    
       ; 0011 0001  1100     0100
       ;  3      1       c         4        ; MASTER CLR PIN USED AS INPUT PIN



          CBLOCK      0X20
          D1,D2,D3,D4,D5     ; VARIABLES USED IN DELAY ROUTINES 
          ENDC
    
      
    #DEFINE BANK0    BCF   STATUS,5
    #DEFINE BANK1    BSF   STATUS,5 
    #DEFINE SWITCH   GPIO,3        ; GPIO,3 PIN IS USED AS SWITCH.
   
             ORG        0X00
             GOTO       INIT
;--------------------------------------------------------------------------

SWITCH_DE_BOUNCE_DLY      ; 40 MS DELAY
        
             MOVLW       0X3E    
             MOVWF       D1     
             MOVLW       0X20    
             MOVWF       D2

DELAY_0 DECFSZ       D1,F
            GOTO          $+2   
            DECFSZ       D2,F
            GOTO          DELAY_0        
            GOTO          $+1
            NOP
            RETURN
;------------------------------------------------------------------------

DELAY_500_MS                ; 500MS DELAY
            MOVLW   0X03
            MOVWF   D3        
            MOVLW   0X18
            MOVWF   D4
            MOVLW   0X02
            MOVWF   D5

DELAY_NEW 
           DECFSZ    D3,F
           GOTO       $+2
           DECFSZ    D4,F
           GOTO       $+2
           DECFSZ    D5,F
           GOTO       DELAY_NEW    
           GOTO       $+1
           RETURN

;--------------------------------------------------------------------------

INIT      BANK1
           CALL          0X3FF ; FIRST TIME USE INTERNAL OSC
           MOVWF      OSCCAL
           CLRF          ANSEL          ; PINS ALL DIGITAL
           MOVLW      B'001000'      ; GP3 PIN (MASTER CLR) AS INPUT
           MOVWF      TRISIO
           BANK0
           MOVLW      0X07
           MOVWF      CMCON          ; MAKING COMPARATOR INACTIVE
           CLRF          GPIO
          
MAIN    BTFSC      SWITCH
           GOTO        MAIN

AGAIN   CALL         SWITCH_DE_BOUNCE_DLY
           CLRF         GPIO

           MOVLW      B'100000'     ; 1000
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'000100'     ; 0100
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'000010'     ; 0010
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'000001'     ; 0001
           MOVWF      GPIO
           CALL          DELAY_500_MS
           
           MOVLW      B'100111'     ; 1111
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'100000'     ; 1000
           MOVWF      GPIO
           CALL          DELAY_500_MS
           
           MOVLW      B'000100'     ; 0100
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'000010'     ; 0010
           MOVWF      GPIO
           CALL          DELAY_500_MS
            
           MOVLW      B'100111'     ; 1111
           MOVWF      GPIO
           CALL          DELAY_500_MS
          
           MOVLW      B'100000'     ; 1000
           MOVWF      GPIO
           CALL          DELAY_500_MS
           
           MOVLW      B'000100'     ; 0100
           MOVWF      GPIO
           CALL          DELAY_500_MS
           
           MOVLW      B'100111'     ; 1111
           MOVWF      GPIO
           CALL          DELAY_500_MS
 
           MOVLW      B'100000'     ; 1000
           MOVWF      GPIO
           CALL          DELAY_500_MS

           MOVLW      B'100111'     ; 1111
           MOVWF      GPIO
           CALL          DELAY_500_MS

KHELA   BTFSC       SWITCH
           GOTO        KHELA
           GOTO        AGAIN

           END
           
           
;--------------------------------------------------------------------------------                  
          
;NOTE: 

FIRST TIME USE-  CALL    0X3FF 
                         MOVWF   OSCCAL

BEFORE ERASE, READ THE VALUE WRITTEN IN THE PIC INSIDE. KEEP IT RECORDED.
THEN ERASE BEFORE SUBSEQUENT USE AND WRITE THE FOL:

                       MOVLW   0X0002 ; SUPPOSE VALUE WRITTEN IS 0002
                       MOVWF   OSCCAL
;-------------------------------------------------------------------------
 

Attachments

Last edited:
Top