Pİc yazılım

Başlatan hellcoder, 07 Haziran 2011, 15:11:01

hellcoder

Merhaba Arkadaşlar aşağıdaki kod 7 sıra ledlerin kodudur. ben bu ledleri sırası ile 1 yanacak 2 yanacak 2 yandıktan 5 saniye sonra 1 sönecek

   LIST   P=16F628A, R=DEC
#include   P16F628A.INC

   __config   _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT         
      




      cblock   0x20         

SETTINGS
PERSET
CONSTATPWM
TIMER
MCOUNT

      endc



;******************** Start of Program *******************************

   org     0x000          ; coding begins here
   goto   IOINITILIZE
;   ORG    0x004
;   GOTO    INTPROG      


;#define   LED0   GPIO,0
;#define   LED1   GPIO,1
;#define   LED2   GPIO,2
;#define   LED3   GPIO,5
;----------------------------------


;---------------------------------
;#define      SETTINGS,7
;#define   CONT   SETTINGS,3;
;#define   AK2      SETTINGS,2;
;#define   AK1      SETTINGS,1;
;#define   PAS      SETTINGS,0;



;-------------------------------------
IOINITILIZE

   BCF STATUS,RP0 ;Bank 0
   CLRF PORTB ;Init GPIO
   CLRF PORTA
   MOVLW B'00000111' ;Set GP<2:0> to
   MOVWF CMCON ;digital IO
   BSF STATUS,RP0 ;Bank 1
   ;CLRF ANSEL ;Digital I/O
   
   MOVLW B'00000000' ;Set GP<3> as inputs
   MOVWF TRISA ;and set GP<5:4,2:1:0> ;as outputs
   MOVLW B'00000001'
   MOVWF TRISB
   
   BCF STATUS,RP0
   clrf   PORTB
   GOTO   main



;========================
WaitCy      ; tgc = 2*5 cycle   tc = ((W)-2)*5 cycle
         addlw   -1

         nop
         addlw   -1
         btfss   STATUS,Z
         goto   $-3

         return

         ;========================
; W'deki değerin 10 katı cycle bekler
Wait10      goto   $+1
         nop
         addlw   -1
         btfsc   STATUS,Z
         return

         goto   $+1
         goto   Wait10

         ;========================
; W'deki değerin 1000 katı cycle bekler
WaitKc      movwf   MCOUNT

         ; 990 cycle bekliyoruz
W1         movlw   255
         call   WaitCy      

         goto   $+1
         decfsz   MCOUNT,F
         goto   $+2
         return

         nop
         goto   $+1
         goto   W1

      











main      
      

TEST         
         BTFSS   PORTB,0
         GOTO   yan
         GOTO   TEST





yan

         MOVLW   B'11100000'
         MOVWF   PORTB

         MOVLW   500         
         CALL   WaitKc

         MOVLW   1         
         CALL   WaitKc

         MOVLW   B'00011000'
         MOVWF   PORTB
         MOVLW   500      
         CALL   WaitKc


         CLRF   PORTB

         MOVLW   500         
         CALL   WaitKc

         
         NOP
         NOP






   


;=====================SPOT============================         
      




GOTO   main

PROGRAM

GOTO PROGRAM

END