Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

PicBasic Pro Seri iletişim

Başlatan fade_to_black1903, 01 Nisan 2010, 12:55:47

fade_to_black1903

Merhaba picbasic pro konusunda yeniyim seri porttan aldığım 1 byte ı 16f628a nın 8 bacağından çıkış olarak verdiğim bir kod yazdım ancak çalışmıyor


' INITIALIZE
       
        PCON.3 = 1                       ' 4MHZ INTERNAL OSC
        CMCON = %00000111                ' COMPARATORS OFF
        OPTION_REG.7 = 1                 ' PORTB PULLUPS DISABLED, RBO INT. R.E.
        ON INTERRUPT GOTO KESME
        INTCON = %10010000               ' RB0 INTERRUPT ENABLED

' DEFINE VARIABLES

        PORTX       VAR BYTE
        BUFFER      VAR BYTE
        GELENDATA   var byte
        GIDENDATA   VAR BYTE

' GIRIS - CIKIS AYARLA

        SELECT CASE PORTA.2             ' MODE SELECT
        CASE 0                          ' PORTX OUTPUT
            TRISA = %00000100
            TRISB = %00000111
            PORTX = 0                   ' CLEAR PORT
            PORTB.4 = PORTX.0
            PORTB.5 = PORTX.1
            PORTB.6 = PORTX.2
            PORTB.7 = PORTX.3
            PORTA.6 = PORTX.4
            PORTA.7 = PORTX.5
            PORTA.0 = PORTX.6
            PORTA.1 = PORTX.7
        CASE 1                          ' PORTX INPUT
            TRISA = %11111111
            TRISB = %11110111
        END SELECT
       
' INITIALIZE USART
       
        SPBRG = 12                      ' BAUD RATE 19200
        RCSTA = %10010000               ' SERIAL PORT OPEN, CONT. RECEIVE
        TXSTA = %00100100               ' ENABLE TRANSMIT, ASYNC. MODE

' START
loop:
        Goto loop               

' INTERRUPT ROUTINE                       
        DISABLE
kesme:
        IF PORTA.2 = 1 THEN             ' READ PORTX IF INPUT
            PORTx.0 = PORTB.4
            PORTx.1 = PORTB.5
            PORTx.2 = PORTB.6
            PORTx.3 = PORTB.7
            PORTx.4 = PORTA.6
            PORTx.5 = PORTA.7
            PORTx.6 = PORTA.0
            PORTx.7 = PORTA.1
            GIDENDATA = PORTX
        ELSE                            ' 0 IF OUTPUT
            GIDENDATA = 0
        ENDIF
usartyaz:                               ' SEND PORTX TO PC
        If PIR1.4 = 0 Then USARTYAZ         
        TXREG = GIDENDATA               
usartoku:                               ' RECEIVE PORTX FROM PC
        If PIR1.5 = 0 Then USARTOKU
        if GELENDATA <> RCREG THEN      ' CHECK IF NEW DATA
            gELENDATA = RCREG
            IF PORTA.2 = 0 THEN         ' WRITE PORTX IF OUTPUT
                PORTX = GELENDATA
                PORTB.4 = PORTX.0
                PORTB.5 = PORTX.1
                PORTB.6 = PORTX.2
                PORTB.7 = PORTX.3
                PORTA.6 = PORTX.4
                PORTA.7 = PORTX.5
                PORTA.0 = PORTX.6
                PORTA.1 = PORTX.7
            ELSE                        ' WRITE PWM IF PORTX INPUT
                HPWM 1,GELENDATA,1000
            ENDIF       
        ENDIF
        INTCON.1 =0
        RESUME
        ENABLE


yanlışım nedir acaba ??

Lütfi AYYILDIZ

#1
Bide böyle dene bakalım;
DEFINE OSC 4
cmcon=7

DEFINE HSER_RCSTA 90h 
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 12  ' 19200 Baud @ 4 Mhz
DEFINE HSER_CLROERR 1 
INTCON=%11000000
ON INTERRUPT GOTO INT
SYMBOL GIE  =INTCON.7   
SYMBOL PEIE =INTCON.6   
SYMBOL RCIE =PIE1.5     
SYMBOL RCIF =PIR1.5     RCIE=1
PEIE=1
GIE=1

TRISA=%00000000
TRISB=%00000010
PORTA=0
PORTB=0 
GELENDATA VAR BYTE
START:
GOTO START

DISABLE
INT:
    GIE=0
    
    hSerIn  [GELENDATA]

                PORTB.4 = GELENDATA.0
                PORTB.5 = GELENDATA.1
                PORTB.6 = GELENDATA.2
                PORTB.7 = GELENDATA.3
                PORTA.6 = GELENDATA.4
                PORTA.7 = GELENDATA.5
                PORTA.0 = GELENDATA.6
                PORTA.1 = GELENDATA.7

     GIE=1
    Resume
    enable 
  
END

fade_to_black1903

bu kodda olmadı anlamıyorum basitte birşey neden çalışmıyor ???

tyildizak


fade_to_black1903

yok denedim öyle de kod hata vermiyor ama çalışmıyor da...
açıkçası aklıma birşeyde gelmiyor artık benim kodda değiştirmediğim yer kalmadı ancak çalıştıramadım...
bu arada pic'in yazmaçlarını kontrol edebileceğim bir yazılım var  mı ???

Lütfi AYYILDIZ

Bu kodların çalışması gerekiyor benim sürekli kullandığım kodlar.Donanımınızı da bi kontrol edin bence, birde kodların başına şu satırları ekleyin
@ DEVICE PIC16F628 
@ DEVICE PIC16F628, WDT_OFF 
@ DEVICE PIC16F628, PWRT_ON 
@ DEVICE PIC16F628, PROTECT_OFF 
@ DEVICE PIC16F628, XT_OSC  
@ DEVICE PIC16F628, MCLR_OFF

fade_to_black1903

onları ekleyerekte denedim ancak olmadı.
elimde hocamızın verdiği hex dosyası var onunla test ediyorum , çalışıyor.

vb 2008 den gönderdiğim 1 byte ı bacaklarında görebiliyorum sorunsuz bir şekilde ancak benim eklemem gereken başka şeylerde var o yüzden onu kullanamıyorum.