Thông báo

Collapse
No announcement yet.

Cần giúp dịch code

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • 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 (c2013 [ETE]                          *
    '*          : All Rights Reserved                               *
    '
    *  Date    29.11.2013                                        *
    '*  Version : 1.0      LED (44)                                 *
    '
    *  Notes   :


    '****************************************************************
    PORTA=0:portb=0 '
    bu versiyonda saat sürekli okunuyorOrta 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 pic16F628PWRT_ON             'Power on timer açuk
    @ DEVICE pic16F628, PROTECT_OFF         '
    Kod Protek kapalu
    DEVICE pic16F628MCLR_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 UPTALBö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        ' 
    HesaplanmuISI 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,  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+1then GOSUB SENSOROKU
             GOSUB EKRAN1
            
    ENDIF 
            
            if 
    esn=sn then atla
            Y
    =Y+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
    =
           HIGH st
    :PAUSEUS 2:LOW st    
           
    RETURN  
           
    EKRAN_3

            
    XSN 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_Pin1, [$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.LowbyteHAM.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_CLK0, [$BF]:INPUT RTC_DTA
             SHIFTIN RTC_DTA
    RTC_CLK1, [SNDAKSAAT,GUN AYMEMYILMEM]  '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_CLK0, [$BESNDAKSAAT,GUN AY0YIL128]  '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 sn61(sayacx 256 (Tmr0x 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:

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

    Comment


    • #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


      • #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

        Đang tải...
        X