18F4550 8*8*40 kayan yazı sema + program (kontrol)

Başlatan sir_hawk, 11 Haziran 2009, 18:21:03

sir_hawk

Merhaba ;

üzerinde çalıştığım kayan yazı devresine ait şema ve kodları veriyorum.
Derlemede herhangi bir sorun yok ancak pc hızı yetersiz olduğu için simüle edemiyorum. Acaba bir hhata mevcut mu ,kontrol edermisiniz.

Saygılarımla.


asm
    __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L  
                            ;              ;                      ; USB clock source comes from the 96 MHz PLL divided by 2
                            ;              ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
                            ; No prescale (20 MHz oscillator input drives PLL directly)


    __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H 
                            ;                  ;               ; Oscillator Switchover mode disabled
                            ;                  ; Fail-Safe Clock Monitor disabled
                            ; HS oscillator, PLL enabled, HS used by USB
    __CONFIG    _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L  & _BORV_2_2L  & _VREGEN_ON_2L   
    __CONFIG    _CONFIG2H, _WDT_OFF_2H 
    __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H & _CCP2MX_ON_3H 
    __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_OFF_4L  & _XINST_OFF_4L & _DEBUG_OFF_4L 
    endasm
DEFINE OSC 48          
DEFINE LOADER_USED 1

USBBufferSizeMax   con 50  ' maximum buffer size
USBBufferSizeTX    con 50  ' input 
USBBufferSizeRX    con 50  ' output

' the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax] 
USBBufferCount   Var Byte 

' ************************************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBService every couple  *
' * of milliseconds or so...                                 *
' ************************************************************


'********** PORT AYARLARI ***************
PORTA=0  : TRISA=0
PORTB=0  : TRISB=0
PORTD=0  : TRISD=0
PORTE=0  : TRISE=0
'*****************************************

'*************DEĞİŞKENLER****************
T            VAR BYTE
X            VAR BYTE
Y            VAR BYTE
Z            VAR WORD
ADR          VAR BYTE
YIN          VAR BYTE
ARA          VAR BYTE
VERI         VAR BYTE
TEMP         VAR BYTE
HARF         VAR BYTE
HARFSAY      VAR BYTE
CHARREG      VAR BYTE[320]


'************************************************


t=0
MAIN :
WHILE PORTE.1=0 
USBINIT
GOSUB DOUSBIN
WEND
IF USBBuffer[1]=1 THEN
GOTO USBYAZI
ELSE
GOTO NORM
ENDIF
GOTO MAIN

USBYAZI :
T=0
FOR X=3 TO 43
USBBUFFER[X]=HARF
CALL DATASIRASI
FOR Y=0 TO 7
CALL CHAR : CHARREG[T]=VERI
ADR=ADR+1 : T=T+1
NEXT Y
NEXT X
IF USBBUFFER[2]=1 THEN
GOTO SOLKAY
ELSE
GOTO SAGKAY
ENDIF
 


NORM:
for y=0 to 39
call YAZI : CALL DATASIRASI
FOR X=0 TO 7
CALL CHAR : CHARREG[T]=VERI
ADR=ADR+1 : T=T+1
NEXT X
NEXT Y
CALL GORUNTU


GORUNTU:
T=0
FOR Z=0 TO 2
FOR Y=1 TO 10
FOR X=0 TO 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y
PAUSEus 50 : PORTA=0
T=T+1
NEXT X
NEXT Y

for y=1 to 10
for x=0 to 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y<<4
PAUSEUS 50 : PORTA=0 : T=T+1
NEXT X
NEXT Y
PAUSE 1000
NEXT Z
RETURN  


SOLKAY : 
CALL GORUNTU
T=0
FOR Z=0 TO 320
FOR Y=1 TO 10
FOR X=0 TO 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y
TEMP=CHARREG[T] : TEMP=TEMP>>1
ARA=CHARREG[T+8] : TEMP.0=ARA.7
CHARREG[T]=TEMP
PAUSEUS 10 : PORTA=0 : T=T+1
NEXT X
NEXT Y

FOR Y=1 TO 10
FOR X=0 TO 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y
TEMP=CHARREG[T] : TEMP=TEMP>>1
IF T<311 THEN
ARA=CHARREG[T+8]
ELSE
CALL CASET
ENDIF
TEMP.0=ARA.7
CHARREG[T]=TEMP
PAUSEUS 10 : PORTA=0 : T=T+1
NEXT X
NEXT Y
NEXT Z
GOTO MAIN

SAGKAY : 
CALL GORUNTU
T=0
FOR Z=0 TO 320
FOR Y=1 TO 10
FOR X=0 TO 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y
TEMP=CHARREG[T] : TEMP=TEMP>>1
ARA=CHARREG[T+8] : TEMP.0=ARA.7
CHARREG[T]=TEMP
PAUSEUS 10 : PORTA=0 : T=T+1
NEXT X
NEXT Y

FOR Y=1 TO 10
FOR X=0 TO 15
PORTA=X : PORTB=CHARREG[T] : PORTD=Y
TEMP=CHARREG[T] : TEMP=TEMP<<1
IF T<7 THEN
ARA=CHARREG[T-8]
ELSE
CALL CASETT
ENDIF
TEMP.7=ARA.0
CHARREG[T]=TEMP
PAUSEUS 10 : PORTA=0 : T=T+1
NEXT X
NEXT Y
NEXT Z
GOTO MAIN



CASET:
SELECT CASE T
CASE 312
ARA=CHARREG[0] : RETURN
CASE 313
ARA=CHARREG[1] : RETURN
CASE 314
ARA=CHARREG[2] : RETURN
CASE 315
ARA=CHARREG[3] : RETURN
CASE 316
ARA=CHARREG[4] : RETURN
CASE 317
ARA=CHARREG[5] : RETURN
CASE 318
ARA=CHARREG[6] : RETURN
CASE 319
ARA=CHARREG[7] : RETURN
END SELECT

CASETT:
SELECT CASE T
CASE 0
ARA=CHARREG[312] : RETURN
CASE 1
ARA=CHARREG[313] : RETURN
CASE 2
ARA=CHARREG[314] : RETURN
CASE 3
ARA=CHARREG[315] : RETURN
CASE 4
ARA=CHARREG[316] : RETURN
CASE 5
ARA=CHARREG[317] : RETURN
CASE 6
ARA=CHARREG[318] : RETURN
CASE 7
ARA=CHARREG[319] : RETURN
END SELECT


YAZI :
LOOKUP Y,["PİCPROJE  TÜRKİYENİN   EN BÜYÜK FORUMU  "],HARF
RETURN

DATASIRASI :
SELECT CASE HARF
CASE "A"
ADR=0 : RETURN
CASE "B"
ADR=8 : RETURN
CASE "C"
ADR=16 : RETURN
CASE "D"
ADR=24 : RETURN
CASE "E"
ADR=32 : YIN=32 : RETURN
CASE "F"
ADR=40 : RETURN
CASE "G"
ADR=48 : RETURN
CASE "Ğ"
ADR=56 : RETURN
CASE "H"
ADR=64 : RETURN
CASE "I"
ADR=72 : RETURN
CASE "İ"
ADR=80 : RETURN
CASE "J"
ADR=88 : RETURN
CASE "K"
ADR=96 : RETURN
CASE "L"
ADR=104 : RETURN
CASE "M"
ADR=112 : RETURN
CASE "N"
ADR=120 : RETURN
CASE "O"
ADR=128 : RETURN
CASE "Ö"
ADR=136 : RETURN
CASE "P"
ADR=144 : RETURN
CASE "Q"
ADR=152 : RETURN
CASE "R"
ADR=160 : RETURN
CASE "S"
ADR=168 : RETURN
CASE "Ş"
ADR=176 : RETURN
CASE "T"
ADR=184 : RETURN
CASE "U"
ADR=192 : RETURN
CASE "Ü"
ADR=200 : RETURN
CASE "V"
ADR=208 : RETURN
CASE "W"
ADR=216 : RETURN
CASE "X"
ADR=224 : RETURN
CASE "Y"
ADR=232 : RETURN
CASE "Z"
ADR=240 : RETURN
CASE " "
ADR=248 : RETURN
END SELECT

CHAR :      
LOOKUP ADR,[$08,$14,$22,$41,$7F,$41,$41,$41_         ' A
           ,$1F,$21,$41,$41,$3F,$41,$41,$3F_         ' B
           ,$3C,$42,$01,$01,$01,$01,$42,$3C_         ' C
           ,$1F,$21,$41,$41,$41,$41,$21,$1F_         ' D
           ,$7F,$01,$01,$3F,$01,$01,$01,$7F_         ' E
           ,$7F,$01,$01,$3F,$01,$01,$01,$01_         ' F
           ,$3E,$41,$01,$01,$3D,$41,$41,$3E_         ' G
           ,$1C,0,$3E,$41,$01,$7D,$41,$3E_           ' Ğ
           ,$41,$41,$41,$41,$7F,$41,$41,$41_         ' H
           ,$3E,$08,$08,$08,$08,$08,$08,$3E_         ' I
           ,$1C,0,$3E,$08,$08,$08,$08,$3E_           ' İ
           ,$1C,0,$3E,$40,$40,$40,$41,$3E_           ' J
           ,$61,$11,$09,$07,$07,$09,$11,$61_         ' K
           ,$01,$01,$01,$01,$01,$01,$01,$7F_         ' L
           ,$41,$63,$55,$49,$41,$41,$41,$41_         ' M
           ,$41,$43,$45,$49,$51,$61,$41,$41_         ' N
           ,$3E,$41,$41,$41,$41,$41,$41,$3E_         ' O
           ,$1C,0,$3E,$41,$41,$41,$41,$3E_           ' Ö
           ,$3F,$41,$41,$41,$3F,$01,$01,$01_         ' P
           ,$3E,$41,$41,$41,$41,$51,$21,$5E_         ' Q
           ,$3F,$41,$41,$41,$3F,$09,$11,$61_         ' R
           ,$3E,$41,$01,$3E,$40,$40,$41,$3E_         ' S
           ,$3E,$41,$01,$3E,$40,$41,$3E,$18_         ' Ş
           ,$7F,$08,$08,$08,$08,$08,$08,$08_         ' T 
           ,$41,$41,$41,$41,$41,$41,$41,$3E_         ' U
           ,$1C,0,$41,$41,$41,$41,$41,$3E_           ' Ü
           ,$41,$41,$41,$41,$41,$22,$14,$08_         ' V
           ,$41,$41,$41,$41,$49,$55,$63,$41_         ' W
           ,$41,$41,$22,$14,$08,$14,$22,$41_         ' X
           ,$7F,$40,$20,$10,$08,$04,$02,$7F_
           ,0,0,0,0,0,0,0,0],VERI    ' Z
           RETURN
 

' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
   USBBufferCount = USBBufferSizeRX              ' RX buffer size
   USBService                                    ' keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   ' read data, if available
   return
    
' ************************************************************
' * wait for USB interface to attach                         *
' ************************************************************
DoUSBOut:
   USBBufferCount = USBBufferSizeTX              ' TX buffer size
   USBService                                    ' keep connection alive
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
   return







Kodları ve semayı incelerseniz cok sevinirim.

Sim+Kod

elektronikman

Usb baglantısı için bilgisayar programı gerekmiyormu?

sir_hawk

evet gerekiyor ancak programı tam olarak bitiremediğim için vermedim. Su an sadece takılıp takılmadığını algılyor,o da default ztn.

sir_hawk

paylaştığım bu veriler tamamen bana ait olan bir proje değildir,Logan hocamızın vaktiyle yazmış ve çizmiş olduğu devreyi 18f4550 'ye uyarlamaya çalıştım. Bazı bağlantı farklılıkları mevcut ancak temeli Logan hocamıza ait.

Tamamen neticelendiğinde,tüm dosyaları yine buradan vereceğim.

sir_hawk

Alıntı YapTamamen neticelendiğinde,tüm dosyaları yine buradan vereceğim.

demişim ancak unutup kalmışım..

Konuyla alakalı bitirme tezim.

Fearless828

Kardeş sağolasın tezini bizle paylaşmışsın ellerine sağlık. Artı hem sevindim hem çok güldüm paylaşmak isterim. Aynı tezi ben vercem ve bil bakalım nerde? Sütçü imamda :) Bende Konyalıyım, sende benim memlekette vermişsin tezini :) Maraştaysan tanışmakda nasip olur inşallah birgün. Tekrar bilgilerini paylaştığın için teşekkürler çok faydası olacak benim tezim içinde.