PIC ÇEVRİM TABLOSU NEDİR?

Başlatan carirt, 20 Eylül 2011, 12:46:26

carirt

Arkadaşlar,orhan altınbaşakın pic16f628a yı anlatan kitabında pic çevrim tablosun dan bahsediliyor 7 segment displayde 15 e kadar sayan program var

retlw komutuyla portb çıkışından display sürülüyor benim anlamadığım 7 segment displayde sayıları oluşturacak binary sayılar nasıl oluşuyor binary e çeviriyor desek 3 ün binary karşılığı 11 display de 3 oluşturmaz

pic in özelliğindenmi kaynaklanıyor yani 7 segment display sürme özelliğindenmi yoksa program counter pcl program komutları adres sayıları karşılıklarımı

;PROGRAM-21) PORTB'nin uçlarına bağlı 7 segment display'de
;0~F arasında saydıran program. Sayılar arasındaki
;duruş GECIKME alt programı tarafından sağlanmıştır. 
   
;===PROG21.ASM====18/05/2005================================
   LIST   P=16F628A
   INCLUDE   "P16F628A.INC"
   __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
SAYAC1   EQU   h'20'
SAYAC2   EQU   h'21'
DALLAN   EQU   h'22'      
   ORG   h'00'   ;Program kodlarının başlangıcı
   CLRF   PORTB   ;PORTB'ye bağlı LED'leri söndür
   BANKSEL   TRISB   ;BANK1'e geç
   CLRF   TRISB   ;PORTB'nin uçlarını çıkış yap
   BANKSEL   PORTB   ;BANK0'a geç
BASLA
   MOVLW   h'00'      ;b'00000000' sayısını W'ye yükle
   MOVWF   DALLAN      ;DALLAN ? W
DONGU
   MOVF   DALLAN, W      ;W ? DALLAN
   ANDLW   B'00001111'   ;W'nin üst dört bit'ini sıfırla
   CALL   CEV7SEG   ;Kod çevirme alt programını çağır.
   MOVWF   PORTB      ;Kodu 7 segment display'de göster
   INCF   DALLAN, F      ;DALLAN = DALLAN + 1
   CALL   GECIKME      ;Gecikme yap
   GOTO   DONGU      ;Yeni bir sayı için başa dön.
CEV7SEG
   ADDWF   PCL,F   ;PCL=PCL+W(DALLAN)
   RETLW   h'3F'   ;0
   RETLW   h'06'   ;1
   RETLW   h'5B'   ;2
   RETLW   h'4F'   ;3
   RETLW   h'66'   ;4
   RETLW   h'6D'   ;5
   RETLW   h'7D'   ;6
   RETLW   h'07'   ;7
   RETLW   h'7F'   ;8
   RETLW   h'6F'   ;9
   RETLW   h'77'   ;A
   RETLW   h'7C'   ;b
   RETLW   h'39'   ;C
   RETLW   h'5E'   ;d
   RETLW   h'79'   ;E
   RETLW   h'71'   ;F
GECIKME            ;Gecikme alt programı
   MOVLW   h'FF'
   MOVWF   SAYAC1
DONGU1
   MOVLW   h'FF'
   MOVWF   SAYAC2
DONGU2
   DECFSZ   SAYAC2, F
   GOTO   DONGU2
   DECFSZ   SAYAC1, F
   GOTO   DONGU1
   RETURN
   END
;-----------------------------------------------------------



JKramer

#1
7 segment display'de adı üzerinde, yedi adet bölüm var. Her bir bölümün arkasında da led var. Aşağıdaki resimde görüleceği üzere her bir bölüme bir harf verilmiş:
[IMG]http://i.imgur.com/rAeL0.jpg[/img]
Biz göstergede 3 rakamının çıkmasını istersek; a,b,c,d,g bölümlerindeki led'leri yakıp e,f bölümlerindeki led'leri söndürmemiz gerekir. Mesela 7 segment port b'ye sırayla bağlanmışsa portb.0-->a, portb.1-->b, vb. şekilde olabilir.

Ekleme: Örneğin kodunuzda 3'ün karşılığı hex 4F verilmiş. Bunun binary karşılığı 01001111 'dir. Yani 0 g f e d c b a şeklinde. Bunlar tamamen sizin bağlantınıza bağlıdır, duruma göre tabii ki değişebilir.

carirt

#2
RETLW   h'4F'   ; 3

o zaman program belleğine bunları biz yazmış oluyoruz bizim yazdığımız 7 segment bilgilerini pic portb de gösteriyor

doğru anlaşmıyım
 
yada başka açıklaması varmı

JKramer

Evet öyle. Başka bir devre tasarlarken bağlantı şeklinizi değiştirirseniz belki 3'ün karşılığı olarak h'79' yazmanız gerekebilir. Bu tamamen portb'yi (ya da herhangi 7 pin'i) göstergeye nasıl bağladınızla ilgili.