PWM 16F84a 4MHz Işık Şiddeti Ayarlama

Başlatan veliusta, 25 Nisan 2012, 22:49:39

veliusta

Arkadaşlar nasıl yapılıyor.Bilen Yokmu? Googleye "picbasic pwm" yazdığımda benim açtığım konular çıkıyor  :( .

'****************************************************************
'*  Name    : Buton-PWM.BAS                                         *
'*  Author  : [E T E]                                     *
'*  Notice  : Copyright (c) 2007 [E.T.E]                           *
'*          : All Rights Reserved                                  *
'*  Date    : 29.03.2007                                           *
'*  Version : 1.0                                                  *
'*  Notes   :  *
'*          :                                                      *
'****************************************************************
PortA=0 : TrisA=%00000011
PortB=0 : TrisB=%00000000

@ DEVICE PIC16F84
@ DEVICE PIC16F84, WDT_OFF
@ DEVICE PIC16F84, PWRT_OFF
@ DEVICE PIC16F84, PROTECT_OFF
@ DEVICE PIC16F84, XT_OSC

SURE VAR BYTE
SURE=5
BASLA:
IF PORTA.0=0 THEN
SURE=SURE+1
IF SURE>10 THEN SURE=10 '10 MS Yİ GEÇEMİYORUZ
PAUSE 150
ENDIF

IF PORTA.1=0 THEN
SURE=SURE-1
IF SURE=255 THEN SURE=0
PAUSE 150
ENDIF

HIGH PORTB.0
PAUSE SURE
LOW PORTB.0
PAUSE (10 - SURE)
GOTO BASLA
END

ete hocamızın yaptığı var ama buton ile kontrol ediliyor. benim istediğim.
PORTA=%01111
PORTB=%11111111  (PIC16f84a ının 3.cü baçağını kullanmıyacağım.(ra4/T0KI) )


Bütün Ledlerin Işık Şiddetini Düşüp, Yükselmesi bir döndü olacak bu şekilde.
Nasıl Yapabiliriz.

Yorum Yapan Arkadaşlara Sonsuz Teşekkürler.

AB ELEKTRONİK

BUYUR KARDEŞ BU TAM İSTEDİGİN GİBİ KESİN CALIŞAN BİR PROJE BİR FİRMA İÇİN TASARLAMIŞTIM  KOLAYGELSİN




'****************************************************************
'*  Name    : PWM-TMR0.BAS                                      *
'*  Author  : [AB ELEKTRONİK]                                   *
'*  Notice  : Copyright (c) 2014 [0 506 500 47 47]              *
'*          : All Rights Reserved                               *
'*  Date    : 3/2/2014                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define osc 4
PORTA=0:portb=0
TRISB=%00000000   '
TRISA=%00000111  '
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                               
@ DEVICE pic16F628, WDT_OFF                 'Watch Dog timer kapalı
@ DEVICE pic16F628, PWRT_OFF               'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF          'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_off               'MCLR pini kullanılmıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
'-------------------------------------------------------------------------
DEFINE CCP1_REG PORTB 'Hpwm 1 pin port
'DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
'DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
'DEFINE CCP2_BIT 1 'Hpwm 2 pin bit



CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'----------------------------------------------------------------------------
R  var byte
I  var byte

BASLA:

    PAUSE 500
    IF PORTA.2=0 THEN
     WHILE (PORTA.2 = 0)
     WEND
     R = 250
     GOTO AB 
    ENDIF

GOTO BASLA
       
AB:
     
     IF PORTA.2=0 THEN
     WHILE (PORTA.2 = 0)
     WEND
     R=0                     'KAPATMAK BÖLÜMÜ
'     HPWM PORTB.3,R,2
     PORTB.3 = 0
     GOTO BASLA 
    ENDIF
   
   
      IF PORTA.1=0 THEN
         R=R+1:IF R>250 THEN R=250       'ARTIRMA BÖLÜMÜ
         GOSUB DELAY
      ENDIF   
     
         
      IF PORTA.0=0 THEN
         R=R-1:IF R=255 THEN R=0        'EKSİLTME BÖLÜMÜ
         GOSUB DELAY
      ENDIF
     
     
   
'HPWM 1,127,1000 ' Send a 50% duty cycle PWM signal at 1kHz
 
    HPWM 1,3,R,2                    ' PWM BÖLÜMÜ
     
                 
GOTO AB

DELAY:
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      RETURN



END