Cần giúp dịch code

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • minhthanh29
    Thành viên tích cực
    • Jul 2011
    • 201

    #1

    Cần giúp dịch code

    Mình có cái code đồng hồ dùng PIC nhưng không có trình biên dịch cho PIC, các bạn có picbasic pro thì giúp mình dịch với, thanks

    file đồng hồ.bas
    PHP Code:
    '****************************************************************
    '*  Name    : dong ho.BAS                                    *
    '*  Author  :                                       *
    '*  Notice  : Copyright (c) 2013 [ETE]                          *
    '*          : All Rights Reserved                               *
    '*  Date    : 29.11.2013                                        *
    '*  Version : 1.0      LED (44)                                 *
    '*  Notes   :
    
    
    '****************************************************************
    PORTA=0:portb=0 'bu versiyonda saat sürekli okunuyor. Orta ledlerde hiç sorun yok.    
    TRISB=0         'buda güzel çalu?uyor bence  hemde en güzeli  
    TRISA=%11100000  
    '-----------------------------------------------------------------
    @ DEVICE pic16F628                      'i?lemci 16F628                                
    @ DEVICE pic16F628, WDT_ON              'Watch Dog timer açuk
    @ DEVICE pic16F628, PWRT_ON             'Power on timer açuk
    @ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalu
    @ DEVICE pic16F628, MCLR_off            'MCLR pini kullanulMIYOR.
    @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanulacak 
    '-----------------------------------------------------------------
    DEFINE OSC 4
    '-------------------------------------------------------------------------
    ON INTERRUPT GoTo KESME   'kesme olu?ursa KESME adlu etikete git.
    OPTION_REG=%10000101   'Pull up dirençleri UPTAL- Bölme oranu 1/64.
    INTCON=%10100000  'Kesmeler aktif ve TMR0 kesmesi aktif
    TMR0=0
    CMCON=7  
    '----------------------------------------------------------------------------
    Comm_Pin    VAR    PortA.4     ' One-wire Data-Pin "DQ" PortB.0 da
    Busy        VAR BIT         ' Busy Status-Bit
    POZ         VAR BIT
    Z           VAR BIT
    W           VAR BIT
    U           VAR BIT
    T           VAR BIT
    GOR         VAR BYTE
    HAM         VAR    WORD        ' Sensör HAM okuma dederi
    ISI         VAR WORD        ' Hesaplanmu? ISI dederi
    Float       VAR WORD        ' Holds remainder for + temp C display
    X           VAR WORD  
    Y           VAR BYTE  
    SAYI        VAR BYTE   
    SIGN_BITI   VAR HAM.Bit11   '   +/- sucakluk U?aret biti,  1 = olursa eksi sucakluk
    NEGAT_ISI   CON 1           ' Negatif_Cold = 1
    Deg         CON 223         ' ° i?areti
    SIGN        VAR BYTE        '  ISI dederi için  +/-  i?aret
    TEMP        VAR BYTE         ' Div32 bit hesap için geçici dedi?ken
    SAYAC       VAR BYTE 80
    SN          VAR BYTE
    DAK         VAR BYTE
    SAAT        VAR BYTE
    GUN         VAR BYTE
    AY          VAR BYTE
    YIL         VAR BYTE
    MEM         var byte ' 
    EKRAN_ZAM   var byte ' 
    SUM         VAR BYTE
    EKRAN_ISI   VAR BYTE
    ONLAR       VAR BYTE
    BIRLER      VAR BYTE
    ESN         VAR BYTE
    '---------------------------------------------
    SYMBOL  DTA=PortB.0
    SYMBOL  CLK=PORTB.1
    symbol  ST=PORTB.2
    SYMBOL  RTC_DTA=PORTA.0
    SYMBOL  RTC_CLK=PORTA.1
    SYMBOL  RTC_RST=PORTA.2
    symbol  SEC   =PORTA.5  
    SYMBOL  ASAGI =PORTA.6 
    SYMBOL  YUKARI=PORTA.7 
    '-----------------------------------------------------------------------------
    CLEAR  'tüm dedi?kenler sufurlandu
    EKRAN_ZAM=10  'saat EKRANDA KALMA SÜRESU
    EKRAN_ISI=5   'sucakluk EKRANDA KALMA SÜRESU BUNLARI DEĐU~TUREBULURSUNUZ.
    SUM=EKRAN_ZAM+EKRAN_ISI
    IF sec=0 then ZAM_AYAR
    ILK:
    gosub ekran0
    gosub sensoryaz
    gosub sensoroku
    low RTC_RST
    low RTC_CLK 
    GOSUB GECIKME
    '-----------------------------------------------------------------------------
    HIGH PORTA.3 
    gosub ZAMAN_OKU:esn=SN
    BASLA: 
            GOSUB ZAMAN_OKU
            IF SAYAC=30 THEN LOW porta.3
            
            IF Y=SUM THEN Y=0
            IF Y>(EKRAN_ZAM) AND Y<SUM THEN
             if y=(EKRAN_ZAM+1) then GOSUB SENSOROKU
             GOSUB EKRAN1
            ENDIF 
            
            if esn=sn then atla
            Y=Y+1 : ESN=SN : SAYAC=0
            IF Y<=EKRAN_ZAM THEN 
               HIGH porta.3
               GOSUB EKRAN0
            ENDIF           
          
    ATLA:  if SEC=0 THEN AYAR  'MODE TU~UNA BASILMI~ USE AYAR'A GUT       
           GOTO BASLA
    '-----------------------alt programlar-------------------------------------------       
    TEKRAR:
           SHIFTOUT DTA,CLK,1,[SAYI] 
           RETURN
    BAK_0:
           GOSUB AL
           IF Z=1 AND W=1 THEN SAYI=0  
           RETURN
    BAK_1:
           GOSUB AL
           IF Z=1 AND U=1 THEN SAYI=0             
           RETURN
    BAK_2:
           GOSUB AL
           IF Z=1 AND T=1 THEN SAYI=0             
           RETURN
         
    
    EKRAN0:          
           
            X= DAK DIG 0:GOSUB BAK_1:GOSUB TEKRAR
            X= DAK DIG 1 :GOSUB BAK_1:GOSUB TEKRAR
            u=0
            X= SAAT DIG 0 :GOSUB BAK_0:GOSUB TEKRAR
            X= SAAT DIG 1:GOSUB BAK_0:GOSUB TEKRAR
            w=0
           HIGH st:PAUSEUS 2:LOW st
           RETURN
           
    'AL:    LOOKUP X,[63,6,91,79,102,109,125,7,127,111,99,57],SAYI :RETURN        'ma K chung
    
    AL:    LOOKUP X,[64,249,164,176,153,146,130,248,128,144,156,198],SAYI :RETURN        'ma A chung
         
    
    EKRAN1:LOW PORTA.3
           X=11:GOSUB AL:GOSUB TEKRAR
           X=10:GOSUB AL:GOSUB TEKRAR
           
           x=(ISI DIG 0):GOSUB AL:GOSUB TEKRAR
           x=(ISI DIG 1):GOSUB AL:GOSUB TEKRAR
           HIGH st:PAUSEUS 2:LOW st
           RETURN
           
    EKRAN2:IF POZ=0 THEN HIGH porta.3
           X= YIL DIG 0:GOSUB BAK_2:GOSUB TEKRAR
           X= YIL DIG 1:GOSUB BAK_2:GOSUB TEKRAR
           T=0
           X= AY DIG 0:GOSUB BAK_1:GOSUB TEKRAR       
           X= AY DIG 1:GOSUB BAK_1:GOSUB TEKRAR 
           U=0      
           X= GUN DIG 0:GOSUB BAK_0:GOSUB TEKRAR
           X= GUN DIG 1:GOSUB BAK_0:GOSUB TEKRAR
           w=0 
           HIGH st:PAUSEUS 2:LOW st    
           RETURN  
           
    EKRAN_3: 
    
            X= SN DIG 0:GOSUB BAK_1:GOSUB TEKRAR
            X= SN DIG 1 :GOSUB BAK_1:GOSUB TEKRAR
            u=0
            SAYI=0:GOSUB TEKRAR
            SAYI=SUM:GOSUB TEKRAR
            w=0
           HIGH st:PAUSEUS 2:LOW st
           RETURN            
    '-----------------------------------------------------  
    ZAM_AYAR:
            LOW PORTA.3:SN=0:POZ=1:SUM=6 
            SN=EKRAN_ZAM:GOSUB EKRAN_3
            WHILE SEC=0:WEND
            
    ZAM_BIR:
            W=1
            IF SEC=0 THEN ZAM_IKI
            IF YUKARI=0 THEN
              IF Z=0 THEN sn=SN+1
              IF SN=31 THEN SN=0       
            ENDIF             
            IF ASAGI=0 THEN
               IF Z=0 THEN SN=SN-1
               IF SN=255 THEN SN=30
            ENDIF
            Z=1-Z
            GOSUB EKRAN_3       
            GOSUB GECIKME
            GOTO ZAM_BIR
            
    ZAM_IKI: 
            EKRAN_ZAM=SN:SUM=91
            SN=EKRAN_ISI:GOSUB EKRAN_3
            WHILE SEC=0:WEND
            
    ZAM_UC:
            W=1
            IF SEC=0 THEN ZAM_DORT
            IF YUKARI=0 THEN
              IF Z=0 THEN sn=SN+1
              IF SN=31 THEN SN=0       
            ENDIF             
            IF ASAGI=0 THEN
               IF Z=0 THEN SN=SN-1
               IF SN=255 THEN SN=30
            ENDIF
            Z=1-Z
            GOSUB EKRAN_3       
            GOSUB GECIKME
            GOTO ZAM_UC        
            
    ZAM_DORT:
             EKRAN_ISI=SN
             SUM=EKRAN_ZAM+EKRAN_ISI
             Z=0:W=0:POZ=0
             GOTO ILK        
    AYAR:  
           LOW PORTA.3:SN=0:POZ=1
           gosub ekran0
           WHILE SEC=0:WEND
    HOUR:  W=1
           LOW PORTA.3
           IF SEC=0 THEN MINBIR
           IF YUKARI=0 THEN
              IF Z=0 THEN SAAT=SAAT+1
              IF SAAT=24 THEN SAAT=0       
            ENDIF   
            IF ASAGI=0 THEN
               IF Z=0 THEN SAAT=SAAT-1
               IF SAAT=255 THEN SAAT=23
            ENDIF
            Z=1-Z
            GOSUB EKRAN0   
            GOSUB GECIKME
            GOTO HOUR
            
    MINBIR: W=0:Z=0
            GOSUB EKRAN0
            WHILE SEC=0
            WEND
            
    MINUTE: U=1        
           LOW PORTA.3
           IF SEC=0 THEN ara
            IF YUKARI=0 THEN
               IF Z=0 THEN  DAK=DAK+1
               IF DAK=60 THEN DAK=0
            ENDIF
            IF ASAGI=0 THEN
               IF Z=0 THEN  DAK=DAK-1
               IF DAK=255 THEN DAK=59              
            ENDIF
            Z=Z-1
            GOSUB EKRAN0
            GOSUB GECIKME
            GOTO MINUTE
            
    SECBIR: WHILE SEC=0
            WEND
            U=0
    GECIKME:
            FOR X=0 TO 3500
            PAUSEUS 5
            NEXT
            RETURN
    DELAY:
            FOR X=0 TO 1900
            PAUSEUS 10
            NEXT
            RETURN      
    
    ARA:    W=0:u=0:T=0:Z=0
            GOSUB FLASH
            Gosub EKRAN0
            HIGH PORTA.3
            WHILE SEC=0  
            wend
            MEM=SN:GOSUB TERSCEVIR:SN=SAYI
            MEM=DAK:GOSUB TERSCEVIR:DAK=SAYI
            MEM=SAAT:GOSUB TERSCEVIR:SAAT=SAYI
            MEM=GUN:GOSUB TERSCEVIR:GUN=SAYI
            MEM=AY:GOSUB TERSCEVIR:AY=SAYI
            MEM=YIL:GOSUB TERSCEVIR:YIL=SAYI 
            GOSUB ZAMAN_YAZ
            GOSUB ZAMAN_OKU
            y=0:POZ=0
            goto BASLA
            
    FLASH:
          TOGGLE PORTA.3:GOSUB DELAY:TOGGLE PORTA.3:GOSUB DELAY
          TOGGLE PORTA.3:GOSUB DELAY:TOGGLE PORTA.3:GOSUB DELAY
          return 
    '-------------------------------------------------------------------------------      
                
                  
    '----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------
    SENSOROKU: 
    '-----------------DUKKAT USUS'de BU SATIR AKTUF EDULECEK----------------------
    '           ham=$0200:Gosub hesapla:return 'NORMAL ÇALI~MADA BU SATIR SULUNECEK
    '------------------------------------------------------------------------------
               OWOUT   Comm_Pin, 1, [$CC, $44]' ISI dederini oku
    Bekle:
               OWIN    Comm_Pin, 4, [Busy]    ' Busy dederini oku
               IF      Busy = 0 THEN Bekle  ' hala me?gulmü? , evet ise goto Bekle..!
               OWOUT   Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
               OWIN    Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' Uki byte oku ve okumayu bitir.
               GOSUB   Hesapla
               RETURN
               
    SENSORYAZ:
              OWOUT   COMM_Pin, 1, [$CC, $4E, $00,$00,$31]
              return           
                 
    Hesapla:                 ' Ham dederden Santigrat derece hesabu
        Sign  = "+"
        IF SIGN_BITI = NEGAT_ISI THEN
           Sign   = "-"  
           temp=($ffff-ham+1)*625
           ISI  = DIV32 10 
           GOTO GEC   
        endif
        TEMP = 625 * (HAM+1)        ' 
        ISI = DIV32 10          ' Div32 hassas derece hesabu için 32 bit bölme yapuyoruz.
    GEC:
        FLOAT = (ISI //1000)/100
        ISI=ISI/1000
        RETURN              
    
    ZAMAN_OKU: 
             high RTC_RST:OUTPUT rtc_dta
             shiftout RTC_DTA, RTC_CLK, 0, [$BF]:INPUT RTC_DTA
             SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, MEM, YIL, MEM]  'OKU
             MEM=SN:GOSUB CEVIR:SN=SAYI
             MEM=DAK:GOSUB CEVIR:DAK=SAYI
             MEM=SAAT:GOSUB CEVIR:SAAT=SAYI
             MEM=GUN:GOSUB CEVIR:GUN=SAYI
             MEM=AY:GOSUB CEVIR:AY=SAYI
             MEM=YIL:GOSUB CEVIR:YIL=SAYI
             low RTC_RST 
             return
    
    ZAMAN_YAZ:
          
             high  RTC_RST:OUTPUT RTC_DTA 
             SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0]    'WRT Protek açuldu
             low RTC_RST:PAUSEUS 10 
             high RTC_RST          
             SHIFTOUT  RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, 0, YIL, 128]  'YAZ
             low RTC_RST
             PAUSEUS 10
             return
                   
    CEVIR:
             ONLAR=MEM & %01110000
             ONLAR=ONLAR>>4
             BIRLER=MEM & %00001111
             SAYI=ONLAR*10+BIRLER
             RETURN  
    
    TERSCEVIR:                
             ONLAR=MEM DIG 1
             ONLAR=ONLAR<<4
             BIRLER=MEM DIG 0
             SAYI=ONLAR+BIRLER
             RETURN
             
    DISABLE
    KESME:IF POZ=1 then CIK 
            SAYAC=SAYAC+1  'kesme sayacu  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
    CIK:     INTCON.2=0  'TMR0 Kesme bayradu sufurlanuyor
             RESUME
             ENABLE
                      
             
    END 
    
    Nhận vẽ mạch in ^_^
    TEL: 0167 4500 365
    Mail:
  • minhthanh29
    Thành viên tích cực
    • Jul 2011
    • 201

    #2
    up giúp mình với!
    Nhận vẽ mạch in ^_^
    TEL: 0167 4500 365
    Mail:

    Comment

    • minhthanh29
      Thành viên tích cực
      • Jul 2011
      • 201

      #3
      Nguyên văn bởi minhthanh29 Xem bài viết
      up giúp mình với!
      Không ai dùng Pic basic pro hết a...
      Nhận vẽ mạch in ^_^
      TEL: 0167 4500 365
      Mail:

      Comment

      • minhthanh29
        Thành viên tích cực
        • Jul 2011
        • 201

        #4
        Không có cao thủ nào dùng picbasic pro hết ak
        Nhận vẽ mạch in ^_^
        TEL: 0167 4500 365
        Mail:

        Comment

        Về tác giả

        Collapse

        minhthanh29 Tìm hiểu thêm về minhthanh29

        Bài viết mới nhất

        Collapse

        There are no results that meet this criteria.

        Đang tải...