74HC595 İLE KAYAN YAZI İÇİN LÜTFEN YARDIM

Başlatan akkuzu1969, 18 Kasım 2006, 18:59:03

akkuzu1969

74595 ile satır taramalı kayan yazı üzerinde çalışmaktayım.Ben programlarımı assembler dilinde yazıyorum.Uzun zamandır uğraştığım halde ancak tek bir harfi kaydırmayı başardım. iki ve daha fazla harfi aynı anda periyodik olarak kaydırma programı üzerinde çalışıyorum.Bu konuda bilgisi ve tecrübesi olan arkadaşların yardımını bekliyorum.iki harfin kaydırılışı ile ilgili  asm kodları aşağıya yazıyorum.hata ve yanlış yerler hakkında bilgi verirseniz sevinirim.

 KODLAR:
               LIST    P=16F84
   INCLUDE   "P16F84.INC"

   DTA1   EQU   0X0C
   DTA   EQU   0X0D
   SAYAC   EQU   0X0E
   SAYAC1   EQU   0X0F
   SAYAC2   EQU   0X12
   SAYAC3   EQU   0X37
   SAYAC4   EQU   0X38
   _STATUS   EQU   0X1F
   SN   EQU   0X20
   _W   EQU   0X21

   SATIR1   EQU   0X22
   SATIR2   EQU   0X23
   SATIR3   EQU   0X24
   SATIR4   EQU   0X25
   SATIR5   EQU   0X26
   SATIR6   EQU   0X27
   SATIR7   EQU   0X28

   SATIR11   EQU   0X29
   SATIR21   EQU   0X2A
   SATIR31   EQU   0X2B
   SATIR41   EQU   0X2C
   SATIR51   EQU   0X2D
   SATIR61   EQU   0X2E
   SATIR71   EQU   0X2F

   SATIR12   EQU   0X30
   SATIR22   EQU   0X31
   SATIR32   EQU   0X32
   SATIR42   EQU   0X33
   SATIR52   EQU   0X34
   SATIR62   EQU   0X35
   SATIR72   EQU   0X36

;-----------------------------------
   ORG   0X00
   GOTO   BASLA
   ORG   0X04
   GOTO   KAYDIR

;--------------------------------
BASLA
   
   CLRF   DTA1
   CLRF   DTA
   CLRF   PORTA
   CLRF   PORTB
   CLRF   SAYAC
   CLRF   _STATUS
   CLRF   _W
   CLRF   SN
   
;--------------------------------
   BSF   STATUS,5
   MOVLW   0X00
   MOVWF   TRISA
   MOVWF   TRISB
   MOVLW   B'10000101'
   MOVWF   OPTION_REG
   MOVLW   B'10100000'
   MOVWF   INTCON
   BCF   STATUS,5
   MOVLW   0X01
   MOVWF   SAYAC
;------------------------------------------
   
DOLU
   CALL   A_TAB
   CALL   DEVAM
   CALL   B_TAB
   CALL   DEVAM
   GOTO   DOLU
;------------------------------------------
DEVAM

   MOVLW   B'00000001'
   MOVWF   PORTB
   MOVF   SATIR12,W
   MOVWF   DTA
   CALL   BETA
   CALL   GECIKME
;----------------------------------------
   MOVLW   B'00000010'
   MOVWF   PORTB
   MOVF   SATIR22,W
   MOVWF   DTA
   CALL   BAZA
   CALL   GECIKME
;----------------------------------------
   MOVLW   B'00000100'
   MOVWF   PORTB
   MOVF   SATIR32,W
   MOVWF   DTA
   CALL   BETA
   CALL   GECIKME
;-----------------------------------------
   MOVLW   B'00001000'
   MOVWF   PORTB
   MOVF   SATIR42,W
   MOVWF   DTA
   CALL   BETA   
   CALL   GECIKME
;-----------------------------------------
   MOVLW   B'00010000'
   MOVWF   PORTB
   MOVF   SATIR52,W
   MOVWF   DTA
   CALL   BETA   
   CALL   GECIKME
;------------------------------------------
   MOVLW   B'00100000'
   MOVWF   PORTB
   MOVF   SATIR62,W
   MOVWF   DTA
   CALL   BETA
   CALL   GECIKME
;-------------------------------------------
   MOVLW   B'01000000'
   MOVWF   PORTB
   MOVF   SATIR72,W
   MOVWF   DTA
   CALL   BETA
   CALL   GECIKME
   INCF   SAYAC,F
   MOVF   SAYAC,W
   XORLW   0X01
   BTFSS   STATUS,Z
   GOTO   DEVAM
   RETURN
;----------------------------------------------------------------
BETA      
   MOVLW   0X08
   MOVWF   DTA1
   BCF   PORTA,0      ;DT 74595 in data uca baðlý
   BTFSC   DTA,7
   BSF   PORTA,0
   CALL   PALSE
   BCF   STATUS,0
   RLF   DTA,F
   DECFSZ   DTA1,F
   GOTO   $-7
   NOP
   BSF   PORTA,2      ;74595 in LACTH ucuna baðlý
   NOP
   NOP
   BCF   PORTA,2
   BCF   PORTA,3      ;74595 in QE ucuna baðlý pin
   RETURN
;-------------------------------------------------------------------
PALSE
   BSF   PORTA,1      ;74595 in CLK ucuna baðlý
   NOP
   NOP
   NOP
   BCF   PORTA,1
   RETURN
;-------------------------------------------------------------------
KAYDIR
   MOVWF   _W
   MOVF   STATUS,W
   MOVWF   _STATUS
   BCF   INTCON,T0IF
   INCF   SN
   MOVLW   .10
   SUBWF   SN,W
   BTFSS   STATUS,Z
   GOTO   ÇIK
   CLRF   SN
   
   BCF   STATUS,C
   RLF   SATIR12,F
   BTFSC   SATIR11,7
   BSF   SATIR12,0
   BTFSS   SATIR11,7
   BCF   SATIR12,0
   BCF   STATUS,C
   RLF   SATIR11,F
;----------------------------------
   BCF   STATUS,C
   RLF   SATIR22,F
   BTFSC   SATIR21,7
   BSF   SATIR22,0
   BTFSS   SATIR21,7
   BCF   SATIR22,0
   BCF   STATUS,C
   RLF   SATIR21,F
;----------------------------------

   BCF   STATUS,C
   RLF   SATIR32,F
   BTFSC   SATIR31,7
   BSF   SATIR32,0
   BTFSS   SATIR31,7
   BCF   SATIR32,0
   BCF   STATUS,C
   RLF   SATIR31,F
;--------------------------------------
   BCF   STATUS,C
   RLF   SATIR42,F
   BTFSC   SATIR41,7
   BSF   SATIR42,0
   BTFSS   SATIR41,7
   BCF   SATIR42,0
   BCF   STATUS,C
   RLF   SATIR41,F

;--------------------------------------
   BCF   STATUS,C
   RLF   SATIR52,F
   BTFSC   SATIR51,7
   BSF   SATIR52,0
   BTFSS   SATIR51,7
   BCF   SATIR52,0
   BCF   STATUS,C
   RLF   SATIR51,F

;-------------------------------------
   BCF   STATUS,C
   RLF   SATIR62,F
   BTFSC   SATIR61,7
   BSF   SATIR62,0
   BTFSS   SATIR61,7
   BCF   SATIR62,0
   BCF   STATUS,C
   RLF   SATIR61,F

;--------------------------------------
   BCF   STATUS,C
   RLF   SATIR72,F
   BTFSC   SATIR71,7
   BSF   SATIR72,0
   BTFSS   SATIR71,7
   BCF   SATIR72,0
   BCF   STATUS,C
   RLF   SATIR71,F
;----------------------------------------------------------------
   BTFSC   SATIR1,7
   BSF   SATIR11,0
   BTFSS   SATIR1,7
   BCF   SATIR11,0

   BTFSC   SATIR2,7
   BSF   SATIR21,0
   BTFSS   SATIR2,7
   BCF   SATIR21,0

   BTFSC   SATIR3,7
   BSF   SATIR31,0
   BTFSS   SATIR3,7
   BCF   SATIR31,0

   BTFSC   SATIR4,7
   BSF   SATIR41,0
   BTFSS   SATIR4,7
   BCF   SATIR41,0

   BTFSC   SATIR5,7
   BSF   SATIR51,0
   BTFSS   SATIR5,7
   BCF   SATIR51,0

   BTFSC   SATIR6,7
   BSF   SATIR61,0
   BTFSS   SATIR6,7
   BCF   SATIR61,0

   BTFSC   SATIR7,7
   BSF   SATIR71,0
   BTFSS   SATIR7,7
   BCF   SATIR71,0
;-----------------------------------
   BCF   STATUS,C
   RLF   SATIR1,F
   BCF   STATUS,C
   RLF   SATIR2,F
   BCF   STATUS,C
   RLF   SATIR3,F
   BCF   STATUS,C
   RLF   SATIR4,F
   BCF   STATUS,C
   RLF   SATIR5,F
   BCF   STATUS,C
   RLF   SATIR6,F
   BCF   STATUS,C
   RLF   SATIR7,F
;-----------------------------------------------------------------
   
ÇIK
   MOVF   _STATUS,W
   MOVWF   STATUS
   MOVF   _W,W
   RETFIE

;-------------------------------------------------------------------
GECIKME
   MOVLW   0XFF
   MOVWF   SAYAC1

DONGU1

   DECFSZ   SAYAC1,F
   GOTO   DONGU1
   CLRF   PORTB
   RETURN
;------------------------------------------------------------------
A_TAB

   MOVLW   B'00100'
   MOVWF   SATIR1
   MOVLW   B'01010'
   MOVWF   SATIR2
   MOVLW   B'10001'
   MOVWF   SATIR3
   MOVLW   B'11111'
   MOVWF   SATIR4
   MOVLW   B'10001'
   MOVWF   SATIR5
   MOVLW   B'10001'
   MOVWF   SATIR6
   MOVLW   B'10001'
   MOVWF   SATIR7
   RETURN
;----------------------------
B_TAB
   MOVLW   B'11111'
   MOVWF   SATIR1
   MOVLW   B'00001'
   MOVWF   SATIR2
   MOVLW   B'00010'
   MOVWF   SATIR3
   MOVLW   B'00100'
   MOVWF   SATIR4
   MOVLW   B'01000'
   MOVWF   SATIR5
   MOVLW   B'10000'
   MOVWF   SATIR6
   MOVLW   B'11111'
   MOVWF   SATIR7
   RETURN
;-----------------------------------------------------------------
   END

omenek

DEVAM alt rutininde BAZA diye bir alt rutin çağırmışsın ama ben bu alt rutin etiketini bulamadım bu durumda derleyicinin hata vermesi gerekir.
W ve STATUS u bu şekilde saklamanı tavsiye ederim.
INTER = interrupt program başlangıcı,WSAVE = W reg kopya registeri
SSAVE= STATUS reg kopya registeri. RET= interrupt dönüş etiketi.

               INTER
   MOVWF   WSAVE   
   SWAPF     STATUS,W ;W ye yüklerken status içeriğinin
                                              ;değişmemesi için swapf komutu kullanılır
   MOVWF   SSAVE
              ........
              .........      Kesme programı kodları.
              .........

               RET
   BCF   INTCON,2   ;tmro kesme bayrağını sıfır yapıyoruz
   SWAPF   SSAVE,W      ;kopyaları geri yüklüyoruz
   MOVWF   STATUS
   SWAPF   WSAVE,F
   SWAPF   WSAVE,W
   RETFIE

drmp

pic basic pro kullansana inam daha kolay oluyor benim yaptığım kayan yazı şakır şakır kayıyor