16F628A'NIN RA6 VE RA7 BACAKLARININ KULLANIMI.

Başlatan erdogan2734, 04 Ağustos 2012, 10:04:32

FEHMİ_ASM

Alıntı yapılan: serhat1990 - 04 Ağustos 2012, 23:56:50
110 = RC oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor and Capacitor on RA7/OSC1/CLKIN
101 = INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
100 = INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN

senin burada 110 değerini ayarlaman gerek

Hayır, 100 olarak ayarlaması gerek, 110 harici.

serhat1990

pardon ya yanlış gördüm heralde. 100 olacak 110 rc osilatör için . 110 yaparsan ra6 i/0 , ra7 rc osc girişi oluyor. Yanlışlık için kusura bakmayın ama normal bu kadarda :) akşama kadar pc başında gözler gidiyo haliyle :)

OG

#17
Alıntı yapılan: erdogan2734 - 04 Ağustos 2012, 23:16:07
Sorun çözülmedi ben sadece bu programı oluştururken ETE hocamızdan yardım aldığımı belirtmek istedim. Hala çözüm bekliyorum :)

Çözülmedi mi?

Ben de derleyemiyorum hata veriyor, 64bit meselesi.

Kodları proton'a taşırsan işin kolaylaşır.

mesaj birleştirme:: 05 Ağustos 2012, 22:15:43

Proton'a taşıyayım dedim bazı hatalar var,
temp var BYTE 56
A    var word 57
AL   VAR word 59
Z    var WORD 61 
SURE VAR WORD 63

üstteki hatalı, 56 57 gibi rakamlar nedir, temp  A  AL Z SURE değişken olsa gerek, o zaman

temp var BYTE
A    var word
AL   VAR word 
Z    var WORD   
SURE VAR WORD

olmalı.

Ayrıca algoritma da hata olabilir,
READ 0,AL.LowByte       
READ 1,AL.Highbyte

demişsin ama pic kaydetmeden önce
DATA {@Location,}Constant{,Constant...}

kaydı vermemişsin.

temp var BYTE
A    var word
AL   VAR word 
Z    var WORD   
SURE VAR WORD

kabul edersek, protona taşıyınca

Device = 16F628A

Config FOSC_INTOSCIO, WDTE_ON, PWRTE_ON, MCLRE_OFF, BOREN_ON, LVP_OFF, CPD_ON, CP_ON

   Declare Xtal 4 
All_Digital = TRUE


Hserial_Baud = 2400         
Hserial_TXSTA = $20   
Hserial_RCSTA = $90    
Hserial_Clear = On           
SPBRG = 20

'*****GİRİŞ VE ÇIKIŞLARI TANIT*****
OPTION_REG.7=1
CMCON=7 
TRISA=0
TRISB=%00000010 
PORTB=0                             
PORTA=%00010000                             

Symbol GIEx  = INTCON.7   'genel interruptları açıyor
Symbol PEIEx = INTCON.6   'peripheralinterruptları açıyor
Symbol RCIEx = PIE1.5     'USART Recive interrupt enable bit
Symbol RCIFx = PIR1.5     'USART Receive interrupt flag bit                      

'*****DEĞİŞKENLERİ TANIMLA*****
Dim B As Word
'Dim temp As Byte 56
'Dim A    As Word 57
'Dim AL   As Word 59 
'Dim Z    As Word 61  
'Dim SURE As Word 63

Dim temp As Byte
Dim A    As Word
Dim AL   As Word 
Dim Z    As Word  
Dim SURE As Word
                                               
Clear
DelayMS 250                        
PORTB = 0
A = 0
B = 0

INTCON = %11000000
On Interrupt GoTo INTx
RCIEx = 1
  
'*******************AÇ KAPA KONTROL***************************  

AKKONTROL:
    If AL = 12 Then 
        GoTo START
    Else
        GoSub Delay_ON
    EndIf

    If AL = 11 Then 
        GoTo START1
    Else
        GoSub Delay_ON
    EndIf

GoTo AKKONTROL



'*******************ŞİFREKONTROLÜ****************************
START:
    AL.LowByte = ERead 0
    AL.HighByte = ERead 1
    
    If AL = 1453 Or AL = 1001 Then GoTo BAS
        
'*******************ŞİFREKONTROLÜ****************************
START1:
    PORTA.4 = 0 
DelayMS 1000 
PORTA.4 = 1

START2: 
    If AL = 1453 Or AL = 1001 Then GoTo SIFREYAZ
    If AL = 1987 Or AL = 1101 Then GoTo  SIL 
GoSub Delay_ON    
GoTo START2


'*******************ŞİFREYAZMA****************************
SIFREYAZ:
    PORTA.4 = 0 : GoSub DELAY_ELLI : PORTA.4 = 1
    PORTA.4 = 0
    
    EWrite 0, [AL.LowByte]
    EWrite 1, [AL.HighByte]

SIFREYAZ2:
    If AL = 12 Then 
        GoTo BAS
    Else
        GoSub Delay_ON
    EndIf
GoTo SIFREYAZ2
'********************ACILMASI GEREKEN PORTLAR ACILDI******************
BAS:
    AL = 0
    PORTA.4 = 0 : GoSub DELAY_BIN : PORTA.4 = 1  'burada ledlerle sıfre alındıgı belırtılıyor
    PORTB = %11111000
    PORTA = %00010001
GoSub Delay_YUZ
GoTo BASLA

'********************BASLA*******************
BASLA:
    If AL = 1 Then 
        PORTA.0 = 0
        GoSub DELAY_ELLI
        PORTA.0 = 1
        AL = 0
    EndIf

    If AL = 2 Then 
        PORTB.4 = 0
        GoSub DELAY_ELLI
        PORTB.4 = 1
        AL = 0
    EndIf

    If AL = 3 Then 
        Toggle PORTA.1
        GoSub DELAY_ELLI
        AL = 0
    EndIf
    
    If AL = 4 Then 
        PORTB.3 = 0
        GoSub DELAY_ELLI
        PORTB.3 = 1
        AL = 0
    EndIf
    
    If AL = 5 Then 
        Toggle PORTA.2
        GoSub DELAY_ELLI
        AL = 0
    EndIf
    
    If AL = 6 Then 
        Toggle PORTA.3
        GoSub DELAY_ELLI
        AL = 0
    EndIf
    
    If AL = 7 Then 
        PORTB.7 = 0
        GoSub DELAY_ELLI
        PORTB.7 = 1
        AL = 0
    EndIf
    
    If AL = 8 Then 
        PORTB.5 = 0
        GoSub DELAY_ELLI
        PORTB.5 = 1
        AL = 0
    EndIf
    
    If AL = 9 Then 
        PORTB.6 = 0
        GoSub DELAY_ELLI
        PORTB.6 = 1
        AL = 0
    EndIf
    
    If AL = 10 Then 
        Toggle PORTB.0
        GoSub DELAY_ELLI
        AL = 0
    EndIf
    
    
    If AL = 12 Then
        GoTo KAPAT
        Else 
        DelayMS 10
    EndIf



GoTo BASLA
'*******************AK2KONTROL****************************
KAPAT:
    AL = 0
    PORTB = 0
    PORTA = %00010000
    DelayMS 100

KAPAT1:
    If AL = 12 Then 
        GoTo BAS
    Else
        GoSub Delay_ON
    EndIf
    
    If AL = 11 Then
        GoTo AKKONTROL
    Else
        GoSub Delay_ON
    EndIf



GoTo KAPAT1

'*******************ŞİFRESİLME****************************
SIL:
    A = 0
    PORTA.4 = 0 : GoSub Delay_YUZ : PORTA.4 = 1 : GoSub Delay_YUZ
    PORTA.4 = 0 : GoSub Delay_YUZ : PORTA.4 = 1: GoSub Delay_YUZ
    PORTA.4 = 0 : GoSub Delay_YUZ : PORTA.4 = 1: GoSub Delay_YUZ
    AL = 0
    PORTB = 0
    PORTA = %00010000
    EWrite 0, [AL.LowByte]
    EWrite 1, [AL.HighByte]

    GoSub Delay_ON
GoTo START2

Delay_ON:       
    For Z = 0 To 215
    Next    
    Return
    
DELAY_ELLI:    
'    T1CON=%00110001:TMR1L=0:TMR1H=0  
    For Z = 0 To 1115
    Next
'    T1CON=0:SURE.BYTE0=TMR1L:SURE.BYTE1=TMR1H            
    Return    
Delay_YUZ:
'    T1CON=%00110001:TMR1L=0:TMR1H=0  
    For Z = 0 To 2130 
    Next
'    T1CON=0:SURE.BYTE0=TMR1L:SURE.BYTE1=TMR1H            
    Return
DELAY_BIN:
'    T1CON=%00110001:TMR1L=0:TMR1H=0  
    For Z = 0 To 18000 
    Next
'    T1CON=0:SURE.BYTE0=TMR1L:SURE.BYTE1=TMR1H            
    Return

    
'*******************kesme****************************
Disable
INTx:
    GIEx = 0
    HSerIn 5,ATLA, [Wait("ERD"),AL.LowByte,AL.HighByte]
    
ATLA:    
    temp = RCREG 
    GIEx = 1
    Resume
    Enable
    
    
End


Derleniyor ve şu hex ortaya çıkıyor,

:020000006E2868
:080008000800981818121816E0
:100010002008A2002108A300A401A5010F28102890
:1000200000008C1A2A28FF30A407031CA507031C14
:10003000A207031CA307031C6A28240F0E28250F00
:100040000F283230A400A50110289818181218168D
:100050008C1E28281A0803146A2883169B0083160E
:100060001C141A089B0A6A2883169A001C1555301E
:100070009D00AA309D009C149C183C281C119B0AD2
:100080006A2883178001840AFF3E031D42286A28DC
:10009000A501A400FF30A407031CA507031C6A28C0
:1000A0000330A300DF3056204A28A301E83EA20017
:1000B000A309FC30031C5F28A20703185C28A207D1
:1000C0000000A30F5C2822186528A21C69280000E4
:1000D0006928080083138312031308008301831621
:1000E0001930990020309800831290309800073022
:1000F0009F001430831699008117073083129F00E8
:100100008316850102308600831286011030850037
:100110002030840060304220A030840050304220E3
:100120002030840030304120FA3048208601AB0175
:10013000AA01A801A701C0308B008B17A2288B1B36
:100140000800D82A9F209F2083168C1683129F2098
:100150002C080C3A2D04031DB0289F20BF28B2287C
:100160009F208B229F202C080B3A2D04031DBB28B7
:100170009F20E428BD289F208B229F20A6289F2017
:100180009F2000302D20AC009F209F2001302D208B
:10019000AD009F202D08053AAD3003192C06031938
:1001A000D3280301031D0130A6002D08033AE930CE
:1001B00003192C060319DE280301031D0130A604D0
:1001C0000319E4289F204E299F209F2005129F207D
:1001D0000330A500E83049209F209F2005169F206E
:1001E0002D08053AAD3003192C060319F92803012F
:1001F000031D0130A6002D08033AE93003192C062F
:10020000031904290301031D0130A60403190A2957
:100210009F2029299F202D08073AC33003192C0657
:10022000031914290301031D0130A6002D08043A07
:100230004D3003192C0603191F290301031D01303A
:10024000A604031925299F204D2A9F208B229F2039
:10025000EF289F209F2005129F209C229F209F20F7
:1002600005169F209F2005129F2083169B01831255
:100270002C0834209F20013083169B0083122D0808
:1002800034209F202C080C3A2D04031D4A299F205E
:100290004E294C299F208B229F2041299F209F205F
:1002A000AD01AC019F209F2005129F20C4229F20FA
:1002B0009F2005169F209F20F83086009F209F20BA
:1002C000113085009F20B0229F2066299F202C039B
:1002D0002D04031D77299F209F2005109F209C221D
:1002E0009F209F2005149F209F20AD01AC019F20DF
:1002F0002C08023A2D04031D89299F209F200612F5
:100300009F209C229F209F2006169F209F20AD01AA
:10031000AC019F202C08033A2D04031D9B299F202C
:10032000023085068316851083129F209C229F2011
:100330009F20AD01AC019F202C08043A2D04031D21
:10034000AD299F209F2086119F209C229F209F20C7
:1003500086159F209F20AD01AC019F202C08053AF7
:100360002D04031DBF299F20043085068316051127
:1003700083129F209C229F209F20AD01AC019F20D3
:100380002C08063A2D04031DD1299F20083085062C
:100390008316851183129F209C229F209F20AD01F0
:1003A000AC019F202C08073A2D04031DE3299F2050
:1003B0009F2086139F209C229F209F2086179F208E
:1003C0009F20AD01AC019F202C08083A2D04031D8D
:1003D000F5299F209F2086129F209C229F209F20EE
:1003E00086169F209F20AD01AC019F202C08093A62
:1003F0002D04031D072A9F209F2006139F209C2267
:100400009F209F2006179F209F20AD01AC019F20B9
:100410002C080A3A2D04031D192A9F200130860654
:100420008316061083129F209C229F209F20AD01DF
:10043000AC019F202C080C3A2D04031D222A9F207A
:10044000272A252A9F200A3048209F2066299F209E
:100450009F20AD01AC019F209F2086019F209F20FF
:10046000103085009F20643048209F202C080C3AD3
:100470002D04031D3E2A9F204E29402A9F208B22B7
:100480009F202C080B3A2D04031D492A9F20A628E3
:100490004B2A9F208B229F20352A9F209F20AB0133
:1004A000AA019F209F2005129F20B0229F209F20FD
:1004B00005169F20B0229F209F2005129F20B0226A
:1004C0009F209F2005169F20B0229F209F2005126D
:1004D0009F20B0229F209F2005169F20B0229F20A2
:1004E0009F20AD01AC019F209F2086019F209F206F
:1004F000103085009F2083169B0183122C08342026
:100500009F20013083169B0083122D0834209F20EA
:100510008B229F20EF289F20AF01AE01AF08031D63
:100520009A2AD8302E0203189A2A9F20AE0A03195D
:10053000AF0F8E2A9F2008009F20AF01AE0104302C
:100540002F02031CA92A031DAE2A5C302E020318B9
:10055000AE2A9F20AE0A0319AF0F9F2A9F200800E2
:100560009F20AF01AE0108302F02031CBD2A031DDE
:10057000C22A53302E020318C22A9F20AE0A031942
:10058000AF0FB32A9F2008009F20AF01AE01463075
:100590002F02031CD12A031DD62A51302E02031824
:1005A000D62A9F20AE0A0319AF0FC72A9F20080042
:1005B0008B13A1010530A0000520031CF62A453C41
:1005C000031DDC2A0520031CF62A523C031DDC2AED
:1005D0000520031CF62A443C031DDC2A0520031CCD
:1005E000F62AAC000520031CF62AAD001A08A90063
:0E05F0008B1709009F206300FA2A9F20FD2A26
:02400E00541E3E
:00000001FF

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

erdogan2734

#18
Arkadaşlar hafta sonu yazma fırsatım olmadı şu anda işyerindeyim ancak görebildim. Ben bu konfigrasyon ayarlarını basicde programı pic'e yüklerken yapıyorum. Yanlışım varsa hocalarım düzeltsin. OG hocam Read komutu normalde bu haliyle çalışıyor. Sistemde sadece bir çıkış daha kullanabilmem gerekli onun için uğraşıyorum. Proteusta bu haliyle iki çıkış denediğimde mesela PORTA.7 ve PORTA.6 yı çıkış olarak kullanmak istediğimde sadece PORTA.6 yı çıkış olarak kullanabildiğimi gördüm ama benim kurduğum programda çalışmıyor malesef. Şimdi onu kontrol edeceğim işallah bugun sizlerinde yardımı ile çözeceğiz bu işi. Birazda bir kaç şey daha deneyip paylaşacağım sizinle.

   Arkadaşlar ikinci bir yorum yapmadım. Programı pice atarken. 100 olan koddaki gibi seçm yaptım. Simülasyonda çalışmadı ancak reel çalıştı birde gerçek devrem üzerinde denemek istiyorum. Bu arada yardımlarınız için teşekkür ederim. Elimde bir örnek ver KOLEGA  35 diye. Bu arkadaşımızın örneğinde tüm portlar çalışıyor çıkış olarak. Yazılım yok o sebeple göremedim ama ISIS te çalışması ilgimi çekti. Tahminim ISIS te hata olması. Reel de çalıştı benim devremde de çalışacağını düşünüyorum. İliginize teşekkür ederim arkadaşlar.
Bildiğim tek şey henüz hiç bir şey bilmediğim...