Hazırlayanlar: Halit Tokmak ve Recep Emeği geçen Kişilere Teşekkürler. Proje Hakkında Genel Bilgi : Devrenin görevi lazer ışığının küresel koordinat sisteminde istenilen açılara otomatik olarak konumlandırmaktır. Bu konumlandırma işlemi için küresel koordinat sistemini X ve Z açısal düzlemleri olarak iki açısal bölgeye böldük. X ve Z açılarını ayarlamak üzere 2 step motor kullandık.
Step motorlardan ilki 15 derecelik adımlarla hareket etmekte olup bunu X Stepperi diye adlandırdık. X stepperi yüksek torka sahip olup bu motorun dönen aksamına dişlilerden oluşan mekanik bir sistemi monte ettik. Bu mekanik sistem içerisinede torku düşük olan ve 20 derecelik adımlara sahip olan Z stepperi vardır. Z stepperi denetleyicinin yazılımı ile 5’er derece olarak sınırlandırılmıştır. Halbuki 0,225 derecelik açılarla hareket etmektedir. 20 adıma düşen adım açısı dişliler vasıtasıyla düşürülür.
Biz devremizde orjin belirlendikten sonra X düzleminde +60 derece ile – 60 derece arasında toplam 120 derecelik görüş açısıyla 15’er derece arttırılıp azaltılabilir. Z düzleminde +90 derece ile -90 derece arasında toplam 180 derece görüş mesafesinde ayarlanabilir.
Devrede koordinat belirlemek için 4*4 tuş takımı kullanılmıştır. Devreye enerji verildiğinde orjin ayar modunda başlayan sistem koordinat belirlemek için sadece sağa-sola ve yukarı-aşağı giriş bekler ve başka tuşa basıldığı anda hatalı tuş girişi diyerek de LCD ekrandan uyarı verir. Orjin noktası belirlendiğinde artık sıra koordinat seçimine gelir ve ekrandan kullanıcıyı yönlendiren program koordinatları girdikten sonra gerekli hesaplamaları yaparak step motorları gerekli konumuna gelecek biçimde yönlendirerek IŞINI istediğimiz noktaya odaklar..
Projenin ASM Programı : .ASM Programı oldukça modüler bir tarzda hazırlandı ve içerisindeki program parçaları oldukça popüler olup alıntı yapılarak her türlü programda kullanıma uygundur. Yaklaşık bir haftalık bir çalışmanın ürünü olan programda klavye entegresi kullanılmadan direk okunan tuş takımı programının yanı sıra LCD’ye veri yazma, komut gönderme, LCD BF bayrağı kontrolü ve açılışta yürüyen yazılar şeklinde show yapan modüler programlar; ve stepper kontrol programları, açısal değeri adım değerine dönüştüren programlar gibi daha bir çok program parçaları ile assembly dili en güzel biçimde kullanılmıştır.
Program yaklaşık 1400 satırdan oluşmakta ve derlendiğinde 1,3 Kbyte .HEX dosyası olmaktadır
Program asm
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TITLE "LAZER.ASM" ;PROGRAMA İSİM VERİLDİ LIST P=16F877 ;16F877 DERLEYİCİYE TANITILDI #INCLUDE "P16F877.INC" ;ÖZEL KAYITÇILAR TANITILDI __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ;TANIMLAMALAR..... ;************************************************************************************************** KEY1 EQU H'20' ;GECİKME SÜRESİ İÇİN KEY2 EQU H'21' ;GECİKME SÜRESİ İÇİN CURSOR EQU H'22' TUSMOD EQU H'38' ;TUSKONTROLÜNDE NELER BAZ ALINACAK' XKONUM_E EQU H'23' XBIRLER EQU H'24' XKONUM_Y EQU H'25' XONLAR EQU H'26' ZKONUM_E EQU H'27' ZBIRLER EQU H'28' ZKONUM_Y EQU H'29' ZONLAR EQU H'2A' XADIM EQU H'2B' XACISI EQU H'2C' ZADIM EQU H'2D' ZACISI EQU H'2E' GIDEN EQU H'2F' ZSAYACI EQU H'30' #DEFINE RS PORTE, 0 #DEFINE RW PORTE, 1 #DEFINE EN PORTE, 2 ;**************************************************************************************************** ORG 0X000 GOTO START ORG 0X004 INTERRUPT RETFIE START ; BAŞLANGIÇ PROGRAMI BCF STATUS, RP1 BSF STATUS, RP0 ;BANK1 CLRF TRISC ;PORTC7..4=AX,BX,CX,DX;PORTC3..0=AZ,BZ,CZ,DZ MOVLW H'0F' IORWF ADCON1, 1 ;E PORTU DİJİTAL GİRİŞ ÇIKIŞ SEÇİLDİ. CLRF TRISE ;E PORTU ÇIKIŞ LCD RS,RW,E CLRF TRISD BSF OPTION_REG, 7 ;WEAK PULL-UP'LAR PASİF BCF INTCON, 7 MOVLW B'00010111' MOVWF TRISB ;SATIRLAR ÇIKIŞ SEÇİLDİ BCF STATUS, RP0 ;BANK0 AKTIF CLRF PORTE ;LCD_RS= PORTE.0, LCD_RW= PORTE.1, LCD_E= PORTE.2, CLRF TUSMOD ;ACILIS ORJIN MODDA MOVLW B'10011000' ;İLK STEPPER KONUMLARI MOVWF PORTC ;STEPPERLER ÇALIŞTI MOVLW D'04' MOVWF XKONUM_E MOVLW D'18' MOVWF ZKONUM_E CALL LCD_START ;LCD_RESET+INITIAL+SHOW GOTO RUTIN ;START VERİLDİ... ;********************************************************* TUSMOD050 ;XAYAR3 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'04' ;XAYAR3 MÜ? BTFSS STATUS, 2 ;EVETSE ATLA GOTO TUSMOD051 ;HAYIRSA DALLAN MOVF XONLAR, 0 ;AKÜDE ONLAR X DEĞERİNİN YENİSİ ADDWF PCL, 1 ; GOTO HATALI ;YENİSİ 0 İSE 05 OLAMAZ GOTO TUSMOD502 ;15 OLUR GOTO HATALI ;25 DERECE DE OLMAZ GOTO HATALI ;35 DERECE OLMAZ. GOTO TUSMOD502 ;45 DERECE OLUR GOTO HATALI ;55 DERECE OLMAZ GOTO HATALI ;ZATEN 60 TIR. ;************************************************* TABLO1 ADDWF PCL, 1 MSJ1 DT "HALIT TOKMAK", 0 MOVF PCL, 0 RETURN TABLO2 ADDWF PCL, 1 MSJ2 DT "RECEP OCAL", 0 MOVF PCL, 0 RETURN TABLO3 ADDWF PCL, 1 MSJ3 DT "OTOMATIK LAZER", 0 MOVF PCL, 0 RETURN TABLO4 ADDWF PCL, 1 MSJ4 DT "KONTROL", 0 MOVF PCL, 0 RETURN TABLO5 ADDWF PCL, 1 MSJ5 DT "X ICIN 4,6 TUSLARI ", 0 MOVF PCL, 0 RETURN TABLO6 ADDWF PCL, 1 MSJ6 DT "Z ICIN 2,8 TUSLARI", 0 MOVF PCL, 0 RETURN TABLO7 ADDWF PCL, 1 MS7 DT "X:*, Z:#, ORJIN:H/R", 0 MOVF PCL, 0 RETURN TABLO8 ADDWF PCL, 1 MSJ8 DT "I", "S", "I", "N", "=", " ", "X", ",", "Z", "(", "+", "0", "0", H'DF', "," "+", "0", "0", H'DF', ")", 0 MOVF PCL, 0 RETURN TABLO9 ADDWF PCL, 1 MSJ9 DT " HATALI TUS !!! ", 0 MOVF PCL, 0 RETURN RUTIN ;TEKRARLAMALI PROGRAMLAR KONTROLÜ CALL TMK ;TUS MANTIĞI KONTROL EDİLİR ADDWF PCL, 1 GOTO TUS00 GOTO TUS01 GOTO TUS02 GOTO TUS03 GOTO TUS04 GOTO TUS05 GOTO TUS06 GOTO TUS07 GOTO TUS08 GOTO TUS09 GOTO TUS10 ;* GOTO TUS11 ;# GOTO TUS12 ;AU GOTO TUS13 ;H/R GOTO TUS14 ;RD GOTO TUS15 ;ENTER GOTO TUS16 ;TUS BASILI DEĞİL ;********************************************************* TUSMOD000 ;KONTROLE DEVAM MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'04' ;TUSMOD 04H MI? BTFSS STATUS, 2 ;EVETSE ATLA GOTO TUSMOD001 ;HAYIRSA DALLAN MOVF XONLAR, 0 ;AKÜDE ONLAR X DEĞERİNİN YENİSİ TABİKİ ADDWF PCL, 1 ; GOTO TUSMOD002 ;YENİSİ 0 İSE GOTO HATALI ;ONLARBASAMAĞI 1 İSE 10 DERECE OLMAYACAĞINDAN ;HATA VERMESİ GEREKİYOR.. GOTO HATALI ;20 DERECE DE OLMAZ GOTO TUSMOD002 ;30 DERECE OLUR. GOTO HATALI ;40 DERECE OLMAZ GOTO HATALI ;50 DERECE OLMAZ GOTO TUSMOD002 ;ZATEN 60 TIR. TUS00 ;0 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'03' ;XAYAR2 MOD MU? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD000 ;HAYIRSA DALLAN INCF TUSMOD, 1 ;XAYAR3 E GEÇTİ MOVLW H'00' MOVWF XONLAR ;YENİ DEĞER 00H OLDU MOVLW "0" CALL GONDER ;XONLARA 0 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' ;500 MİLİSANİYE MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. HATALI ;HATAYI ÇAĞIRAN ARA PROGRAMDIR.. CALL HATA GOTO RUTIN TUSMOD002 ;BİRLER BASAMAĞI 0 OLABİLİR DURUMLARI İÇİN.. MOVLW H'01' MOVWF TUSMOD ;STATİK MODA GEÇTİ CLRF XBIRLER MOVLW "0" CALL GONDER ;XBIRLERE 0 YAZILDI MOVLW H'0C' CALL KOMUT ;CURSOR SAKLANDI GOTO XCTRL ;X İN YENİ DEĞERLERİ KONTROL EDİLMELİ TUSMOD001 ;HANGİ MODDA? SORUSUNA DEVAM.. MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR 2 Mİ? BTFSS STATUS, 2 ;EVETSE ATLA GOTO TUSMOD003 ;HAYIRSA DALLAN MOVLW H'07' MOVWF TUSMOD ;ZAYAR3 MODA GEÇTİ CLRF ZONLAR MOVLW "0" CALL GONDER INCF CURSOR, 1 MOVLW D'250' ;500 MİLİSANİYE MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD003 ;HANGİ MODDA CEVAP ARANIYOR MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'07' ;ZAYAR1 Mİ? BTFSS STATUS, 2 ;EVETSE ATLA GOTO HATALI ;HAYIRSA DALLAN MOVLW H'01' MOVWF TUSMOD ;STATIK MODA GEÇTİ MOVLW H'00' MOVWF ZBIRLER MOVLW "0" CALL GONDER ;ZBIRLERE 0 YAZILDI MOVLW H'0C' CALL KOMUT ;CURSOR SAKLANDI GOTO ZCTRL ;Z İN YENİ DEĞERLERİ KONTROL EDİLMELİ ;***************************************************** TUS01 ;1 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'03' ;TUSMOD XAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD010 ;HAYIRSA DALLAN MOVLW H'01' MOVWF XONLAR INCF TUSMOD, 1 ;XAYAR3 MODUNA GEÇTİ MOVLW "1" CALL GONDER ;XONLARA 1 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' ;500 MS MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD010 ;ZAYAR2 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;TUSMOD 06H MI? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN MOVLW H'01' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "1" CALL GONDER ;ZONLARA 1 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' ;500 MS MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;************************************************** TUS02 ;2 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'00' ;TUSMOD 00H MI? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD020 ;HAYIRSA DALLAN CALL BAIZ22 ;BİR ADIM YUKARI +5 DERECE Z GOTO RUTIN TUSMOD020 ;ZAYAR2 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN MOVLW H'02' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "2" CALL GONDER ;ZONLARA 2 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' ;500 MS MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;************************************************** TUS03 ;3 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'03' ;XAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD030 ;HAYIRSA DALLAN MOVLW H'03' MOVWF XONLAR INCF TUSMOD, 1 ;XAYAR3 MODUNA GEÇTİ MOVLW "3" CALL GONDER ;XONLARA 3 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' ;500 MS MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD030 ;ZAYAR2 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN MOVLW H'03' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "3" CALL GONDER ;ZONLARA 3 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;************************************************** TUS04 ;4 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'03' ;XAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD040 ;HAYIRSA DALLAN MOVLW H'04' MOVWF XONLAR INCF TUSMOD, 1 ;XAYAR3 MODUNA GEÇTİ MOVLW "4" CALL GONDER ;XONLARA 4 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD040 ;ZAYAR2 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD041 ;HAYIRSA DALLAN MOVLW H'04' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "4" CALL GONDER ;ZONLARA 4 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD041 ;ORJİN MODDA MI? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'00' ;ORJİN MOD MU? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN CALL BAGX ;BİR ADIM SOLA MOVLW D'150' ;300 MS ADIM ARASI GECİKMESİ MOVWF KEY2 CALL WAIT GOTO RUTIN ;************************************************* TUS05 ;5 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD050 ;HAYIRSA DALLAN MOVLW H'05' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "5" CALL GONDER ;ZONLARA 5 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD502 ;XBIRLER YAZMACINA 5 YÜKLEYEN PROGRAMDIR MOVLW H'05' MOVWF XBIRLER MOVLW H'01' MOVWF TUSMOD ;STATIK MODDA MOVLW "5" CALL GONDER ;XBIRLERE 5 YAZILDI MOVLW H'0C' CALL KOMUT ;CURSOR SAKLANDI GOTO XCTRL ;X İN YENİ DEĞERLERİ KONTROL EDİLMELİ TUSMOD051 ;ZBIRLER MODUNDAMI? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'07' ;ZBIRLER MODU MU? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN MOVF ZONLAR, 0 XORLW H'09' ;ONLAR 09H MI? BTFSC STATUS, 2 GOTO HATALI MOVLW H'05' MOVWF ZBIRLER MOVLW H'01' MOVWF TUSMOD ;STATIK MODDA MOVLW "5" CALL GONDER ;ZBIRLERE 5 YAZILDI MOVLW H'0C' CALL KOMUT ;CURSOR SAKLANDI.. GOTO ZCTRL ;Z İN YENİ DEĞERLERİ İŞLENMELİ.. ;********************************************** TUS06 ;6 BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'03' ;XAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD060 ;HAYIRSA DALLAN MOVLW H'06' MOVWF XONLAR INCF TUSMOD, 1 ;XAYAR3 MODUNA GEÇTİ MOVLW "6" CALL GONDER ;XONLARA 6 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD060 ;ZAYAR2 DEMİ? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO TUSMOD061 ;HAYIRSA DALLAN MOVLW H'06' MOVWF ZONLAR INCF TUSMOD, 1 ;ZAYAR3 MODUNA GEÇTİ MOVLW "6" CALL GONDER ;ZONLARA 6 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD061 ;ORJİN MODDA MI? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'00' ;TUSMOD 00H MI? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN CALL BAIX ;BİR ADIM SAĞA MOVLW D'150' ;300 MS ADIM ARASI GECİKME MOVWF KEY2 CALL WAIT GOTO RUTIN ;******************************************************* TUS07 ;7 BASILDI MOVF TUSMOD, 0 XORLW H'06' ;ZAYAR2 Mİ? BTFSS STATUS, 2 GOTO HATALI MOVLW H'07' MOVWF ZONLAR INCF TUSMOD, 1 MOVLW "7" CALL GONDER ;ZONLARA 7 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;************************************************** TUS08 ;8 BASILDI MOVF TUSMOD, 0 XORLW H'06' BTFSS STATUS, 2 GOTO TUSMOD080 MOVLW H'08' MOVWF ZONLAR INCF TUSMOD, 1 MOVLW "8" CALL GONDER ;ZONLARA 8 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD080 ;ORJİN MODDA MI? MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'00' ;ORJİN MODDA MI? BTFSS STATUS, 2 ;EVETSE Z=1 DİR GOTO HATALI ;HAYIRSA DALLAN CALL BAGZ22 ;22 ADIM AŞAĞI YANİ -5 DERECE Z GOTO RUTIN ;************************************************ TUS09 ;9 BASILDI MOVF TUSMOD, 0 XORLW H'06' BTFSS STATUS, 2 GOTO HATALI MOVLW H'09' MOVWF ZONLAR INCF TUSMOD, 1 MOVLW "9" CALL GONDER ;ZONLARA 9 YAZILDI CURSOR BİR KAYDI INCF CURSOR, 1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;**************************************************** TUS10 ;* BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'01' ;STATIK MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO HATALI ;YANLIŞ TUŞA BASILDI.. MOVLW H'02' ;XAYAR1 MODUNA GEÇTİ.. MOVWF TUSMOD ;GEÇİŞ TAMAM... ;BURADAN SONRA +,- YANIP SÖNER VE AU BEKLENİR.. MOVLW H'CA' MOVWF CURSOR CALL KOMUT MOVLW H'0F' ;KURSÖR AÇIK, DISPLAY ON, BLINK ON CALL KOMUT MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;************************************************* TUS11 ;# BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'01' ;STATIK MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO HATALI ;YANLIŞ TUŞA BASILDI.. MOVLW H'05' ;ZAYAR1 MODUNA GEÇTİ.. MOVWF TUSMOD ;GEÇİŞ TAMAM... ;BURADAN SONRA +,- YANIP SÖNER VE AU BEKLENİR.. MOVLW H'CF' MOVWF CURSOR CALL KOMUT MOVLW H'0F' ;KURSÖR AÇIK, DISPLAY ON, BLINK ON CALL KOMUT MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR ;*************************************************** TUS12 ;AU BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'02' ;XAYAR1 MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO TUSMOD120 ;ZAYAR1 Mİ Bİ DE ONA BAK COMF XACISI, 1 ;X AÇISI TERSLENDİ BTFSS XACISI, 0 GOTO TUS1200 MOVLW "-" CALL GONDER MOVLW H'CA' MOVWF CURSOR CALL KOMUT GOTO TUS1201 TUS1200 MOVLW "+" CALL GONDER MOVLW H'CA' MOVWF CURSOR CALL KOMUT TUS1201 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD120 ;ZAYAR1 KONTROLÜ MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'05' ;ZAYAR1 MODDA İSE BTFSS STATUS, 2 ;TUSMOD 05H İSE ATLA GOTO HATALI ;HATA MESAJI COMF ZACISI, 1 ;Z ACISI TERSLENDİ BTFSS ZACISI, 0 GOTO TUS1202 MOVLW "-" CALL GONDER MOVLW H'CF' MOVWF CURSOR CALL KOMUT GOTO TUS1203 TUS1202 MOVLW "+" CALL GONDER MOVLW H'CF' MOVWF CURSOR CALL KOMUT TUS1203 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. ;******************************************************** TUS13 ;H/R BASILDI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'01' ;STATIK MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO HATALI ;YANLIŞ TUŞA BASILDI.. MOVLW H'00' ;ORGIN MODUNA GEÇTİ.. MOVWF TUSMOD ;GEÇİŞ TAMAM... CALL LCD_ORJIN1 ;EKRANDA ORJIN GÖRÜLDÜ MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR ;*************************************************** TUS14 ;RD BASILDI GOTO HATALI ;*************************************************** TUS15 ;ENTER BASILDI MOVF TUSMOD, 0 XORLW H'00' BTFSS STATUS, 2 GOTO TUSMOD150 CLRF XACISI CLRF ZACISI CLRF ZONLAR CLRF ZBIRLER CLRF XBIRLER CLRF XONLAR MOVLW D'18' MOVWF ZKONUM_E MOVLW D'04' MOVWF XKONUM_E INCF TUSMOD, 1 ;STATIK MODA GEÇİŞ.. CALL LCD_STATIK1 MOVLW D'250' MOVWF KEY2 CALL WAIT ;BİRAZ MOLA.. GOTO RUTIN ;RUTIN İŞLERE DEVAM EDİLİR. TUSMOD150 ;XAYAR1 +,- MODUNDA MI MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'02' ;XAYAR1 MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO TUSMOD151 INCF TUSMOD, 1 MOVLW H'CB' ;XONLARIN ADRESİ MOVWF CURSOR CALL KOMUT MOVLW H'0F' ;KURSÖR AÇIK, DISPLAY ON, BLINK ON CALL KOMUT MOVLW D'250' MOVWF KEY2 CALL WAIT GOTO RUTIN TUSMOD151 MOVF TUSMOD, 0 ;TUSMOD AKÜDE XORLW H'05' ;ZAYAR1 MODDA İSE BTFSS STATUS, 2 ;TUSMOD 01H İSE ATLA GOTO HATALI INCF TUSMOD, 1 MOVLW H'D0' ;ZONLARIN ADRESİ MOVWF CURSOR CALL KOMUT MOVLW H'0F' ;KURSÖR AÇIK, DISPLAY ON, BLINK ON CALL KOMUT MOVLW D'250' MOVWF KEY2 CALL WAIT GOTO RUTIN ;************************************************* TUS16 ;TUŞA BASILMADI... GOTO RUTIN ;************************************************ WAIT MOVLW D'250' ;KEY2*1 MOVWF KEY1 ;KEY2*1 W12 NOP ; \ NOP ; \ NOP ; \ KEY2*2 MS NOP ; / NOP ; / TOPLAM=5*KEY2+2+2000*KEY2= DECFSZ KEY1, 1 ; / =2005*KEY2+2 GOTO W12 ;8*250*KEY2 ;/ DECFSZ KEY2, 1 ;KEY2*1 GOTO WAIT ;KEY2*2 RETURN ;2 ;************************************************ TMK ;TUS MATRİS KONTROL MODÜLER PROGRAMI MOVLW B'01111111' MOVWF PORTB ;SATIR1 1 YAPILDI BTFSS PORTB, 4 ;SÜTUN1 "HİGH" MI? RETLW D'1' BTFSS PORTB, 2 ;SÜTUN2 "HİGH" MI? RETLW D'2' BTFSS PORTB, 1 ;SÜTUN3 "HİGH" MI? RETLW D'3' BTFSS PORTB, 0 ;SÜTUN4 "HİGH" MI? RETLW D'12' MOVLW B'10111111' MOVWF PORTB ;SATIR2 1 YAPILDI BTFSS PORTB, 4 ;SÜTUN1 "HİGH" MI? RETLW D'4' BTFSS PORTB, 2 ;SÜTUN2 "HİGH" MI? RETLW D'5' BTFSS PORTB, 1 ;SÜTUN3 "HİGH" MI? RETLW D'6' BTFSS PORTB, 0 ;SÜTUN4 "HİGH" MI? RETLW D'13' MOVLW B'11011111' MOVWF PORTB ;SATIR3 1 YAPILDI BTFSS PORTB, 4 ;SÜTUN1 "HİGH" MI? RETLW D'7' BTFSS PORTB, 2 ;SÜTUN2 "HİGH" MI? RETLW D'8' BTFSS PORTB, 1 ;SÜTUN3 "HİGH" MI? RETLW D'9' BTFSS PORTB, 0 ;SÜTUN4 "HİGH" MI? RETLW D'14' MOVLW B'11110111' MOVWF PORTB ;SATIR4 1 YAPILDI BTFSS PORTB, 4 ;SÜTUN1 "HİGH" MI? RETLW D'10' BTFSS PORTB, 2 ;SÜTUN2 "HİGH" MI? RETLW D'0' BTFSS PORTB, 1 ;SÜTUN3 "HİGH" MI? RETLW D'11' BTFSS PORTB, 0 ;SÜTUN4 "HİGH" MI? RETLW D'15' RETLW D'16' ;TUSA BASILMADIYSA16 GONDERİR... ;********************************************** KOMUT ;LCD KOMUT SİNYALİZASYONU BCF RS BCF RW MOVWF PORTD ;DATA YOLDA BSF EN CALL IS_BUSY BCF EN RETURN GONDER ;LCD VERİ SİNYALİZASYONU MOVWF PORTD ;DATA YOLDA.. BCF EN BSF RS BCF RW BSF EN CALL IS_BUSY BCF EN RETURN IS_BUSY ;LCD NİN MEŞGUL OLUP OLMADIĞINI ARAŞTIRIR.. BCF EN BCF RS BSF RW MOVLW H'FF' BSF STATUS, RP0 MOVWF TRISD BCF STATUS, RP0 BSF EN IS_BUSY00 ;MEŞGULLÜK BİTENE KADAR MOVF PORTD, 1 BTFSC PORTD, 7 GOTO IS_BUSY00 BCF EN MOVLW H'00' BSF STATUS, RP0 MOVWF TRISD BCF STATUS, RP0 RETURN ;****************************************** LCD_START ;LCD Yİ RESETLEMEK İÇİN MOVLW D'20' ;40 MİLİSANİYEDEEN FAZLA MOVWF KEY2 CALL WAIT BSF EN MOVLW H'30' MOVWF PORTD BCF EN MOVLW D'20' ;40 MİLİ SANİYEDEN FAZLA MOVWF KEY2 CALL WAIT BSF EN MOVLW H'30' MOVWF PORTD BCF EN MOVLW D'5' ;10 MİLİ SANİYEDEN FAZLA MOVWF KEY2 CALL WAIT BSF EN MOVLW H'30' MOVWF PORTD BCF EN MOVLW D'5' ;10 MİLİ SANİYEDEN FAZLA MOVWF KEY2 CALL WAIT MOVLW H'38' ;8 BİT DATA YOLU VE 7*5 FONT CALL KOMUT MOVLW H'0C' ;KURSÖR GÖRÜNMEZ, DİSPLAY AÇIK, KARARTMA YOK.. CALL KOMUT MOVLW H'01' ;DDRAM BAŞTAN SONA BOŞLUK KARAKTERİ İLE DOLAR.. CALL KOMUT MOVLW H'06' ;VERİLER ARTARAK DİZİLİR DDRAM'A.. CALL KOMUT MOVLW H'84' ;1. SATIR, 5. SÜTUNDAN İTİBAREN.. CALL KOMUT CLRF GIDEN GIDEMEYEN1 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO1 IORLW H'00' BTFSC STATUS, 2 GOTO MESAJ1_END CALL GONDER MOVLW D'50' MOVWF KEY2 ;100 MİLİ SANİYE BEKLE CALL WAIT INCF GIDEN, 1 GOTO GIDEMEYEN1 MESAJ1_END CLRF GIDEN MOVLW H'06' CALL KOMUT MOVLW H'C5' ;2. SATIR, 6. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN2 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO2 IORLW H'00' BTFSC STATUS, 2 GOTO MESAJ2_END CALL GONDER MOVLW D'50' MOVWF KEY2 ;100 MİLİ SANİYE BEKLE CALL WAIT INCF GIDEN, 1 GOTO GIDEMEYEN2 MESAJ2_END MOVLW D'250' MOVWF KEY2 ;500 MİLİ SANİYE BEKLE CALL WAIT MOVLW H'01' CALL KOMUT CLRF GIDEN MOVLW H'83' ;1. SATIR, 4. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN3 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO3 IORLW H'00' BTFSC STATUS, 2 GOTO MESAJ3_END CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN3 MESAJ3_END CLRF GIDEN MOVLW H'C6' ;2. SATIR, 7. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN4 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO4 IORLW H'00' BTFSC STATUS, 2 GOTO MESAJ4_END CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN4 MESAJ4_END CLRF GIDEN MOVLW D'250' MOVWF KEY2 CALL WAIT MOVLW D'250' MOVWF KEY2 ;TOPLAM 1 SANİYE BEKLE CALL WAIT GOTO LCD_ORJIN1 ;*********************************************** LCD_ORJIN1 ;ORJİN MODDA ODAKLANAN LCD MOVLW H'01' ;LCD TEMİZLENDİ CALL KOMUT CLRF GIDEN MOVLW H'80' ;1. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN5 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO5 IORLW H'00' BTFSC STATUS, 2 GOTO LCD_ORJIN2 CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN5 LCD_ORJIN2 ;BU EKRANA ORJİN Z AYARINI YAZAR CLRF GIDEN MOVLW H'C0' ;2. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN6 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO6 IORLW H'00' BTFSC STATUS, 2 RETURN ;LCD_START DAN DÖNÜŞ START ANA PROGRAMA DÖNER. CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN6 ;********************************************************* LCD_STATIK1 ;STATIK DURUM YAZICI MOVLW H'01' ;LCD TEMİZLENDİ CALL KOMUT CLRF GIDEN MOVLW H'80' ;1. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN7 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO7 IORLW H'00' BTFSC STATUS, 2 GOTO LCD_STATIK2 ;GEREKLİ ORJİN VS. CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN7 LCD_STATIK2 ;BU EKRANA STATIK KONUMU YAZAR CLRF GIDEN MOVLW H'C0' ;2. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYEN8 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO8 IORLW H'00' BTFSC STATUS, 2 RETURN CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYEN8 ;******************************************************* HATA ;LCD DEN HATA MESAJI BİR SÜRE GÖRÜNÜR CLRF GIDEN MOVLW H'80' ;1. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYENH1 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO9 IORLW H'00' BTFSC STATUS, 2 GOTO HATA_WAIT ;HATAYI YAPAN GÖRENE DEK BEKLE CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYENH1 HATA_WAIT MOVLW H'0C' CALL KOMUT ;CURSOR SAKLANDI MOVLW D'250' MOVWF KEY2 ;500 MİLİ SANİYE BEKLE CALL WAIT MOVF TUSMOD, 0 XORLW H'00' BTFSS STATUS, 2 GOTO HATA00 CLRF GIDEN MOVLW H'80' ;1. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYENH5 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO5 IORLW H'00' BTFSC STATUS, 2 RETURN ;HATA MESAJI İŞİ BİTTİ CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYENH5 HATA00 ;ORJİN MODDA DEĞİLSE.. CLRF GIDEN MOVLW H'80' ;1. SATIR, 1. SÜTUNDAN İTİBAREN.. CALL KOMUT GIDEMEYENH7 ;TABLOYU SIRAYLA BASMAK İÇİN.. MOVF GIDEN, 0 CALL TABLO7 IORLW H'00' BTFSC STATUS, 2 GOTO HATACURSOR CALL GONDER INCF GIDEN, 1 GOTO GIDEMEYENH7 HATACURSOR MOVF CURSOR, 0 CALL KOMUT RETURN ;*************************************************** BAGZ ;BİR ADIM GERİ Z BTFSS PORTC, 3 ;Z=1000 MI? GOTO ZG11 ;HAYIR BCF PORTC, 3 ;EVET BSF PORTC, 0 RETURN ;Z=0001 ZG11;STEPPER BTFSS PORTC, 2 ;Z=0100 Mİ? GOTO ZG22 ;HAYIR BCF PORTC, 2 ;EVET BSF PORTC, 3 RETURN ;Z=1000 ZG22;STEPPER BTFSS PORTC, 1 ;Z=0010 Mİ? GOTO ZG33 ;HAYIR BCF PORTC, 1 ;EVET BSF PORTC, 2 RETURN ;Z=0100 ZG33;STEPPER BCF PORTC, 0 ;Z=0001 DEMEKTİR BSF PORTC, 1 RETURN ;Z=0010 ;***************************************************** BAIZ ;BİR ADIM İLERİ Z BTFSS PORTC, 3 ;Z=1000 MI? GOTO ZI11 ;HAYIR BCF PORTC, 3 ;EVET BSF PORTC, 2 RETURN ;Z=0100 ZI11;STEPPER BTFSS PORTC, 2 ;Z=0100 Mİ? GOTO ZI22 ;HAYIR BCF PORTC, 2 ;EVET BSF PORTC, 1 RETURN ;Z=0010 ZI22;STEPPER BTFSS PORTC, 1 ;Z=0010 Mİ? GOTO ZI33 ;HAYIR BCF PORTC, 1 ;EVET BSF PORTC, 0 RETURN ;Z=0001 ZI33;STEPPER BCF PORTC, 0 ;Z=0001 DEMEKTİR BSF PORTC, 3 RETURN ;Z=1000 ;*********************************************** BAGX ;BİR ADIM GERİ X BTFSS PORTC, 7 GOTO XG56 BTFSS PORTC, 4 ;X=1001 Mİ? GOTO XG23 ;HAYIR BCF PORTC, 7 ;EVET BSF PORTC, 6 RETURN ;X=0101 XG23 ;STEPPER KONUMU İÇİN BCF PORTC, 5 BSF PORTC, 4 RETURN ;X=1001 XG56 ;STEPPER KONUMU BTFSS PORTC, 5 ;X=0110 MU? GOTO XG89 ;HAYIR BCF PORTC, 6 ;EVET BSF PORTC, 7 RETURN ;X=1010 XG89 ;STEPPER KONUMU BCF PORTC, 4 BSF PORTC, 5 RETURN ;X=0110 ;************************************************ BAIX ;BİR ADIM İLERİ X BTFSS PORTC, 7 GOTO XI56 BTFSS PORTC, 4 ;X=1001 Mİ? GOTO XI23 ;HAYIR BCF PORTC, 4 ;EVET BSF PORTC, 5 RETURN ;X=1010 XI23 ;STEPPER KONUMU İÇİN BCF PORTC, 7 BSF PORTC, 6 RETURN ;X=0110 XI56 ;STEPPER KONUMU BTFSS PORTC, 5 ;X=0110 MU? GOTO XI89 ;HAYIR BCF PORTC, 5 ;EVET BSF PORTC, 4 RETURN ;X=0101 XI89 ;STEPPER KONUMU BCF PORTC, 6 BSF PORTC, 7 RETURN ;X=1001 ;***************************************************** BAIZ22 ;BAIZ PROGRAMINI 22 DEFA USULUNE UYGUN ÇAĞIRIR.. MOVLW D'23' MOVWF ZSAYACI BAIZ2200 DECFSZ ZSAYACI, 1 GOTO ADIMZI RETURN ADIMZI CALL BAIZ MOVLW D'25' MOVWF KEY2 ;50 MS ADIM ARASI BEKLEME CALL WAIT GOTO BAIZ2200 ;******************************************************** BAGZ22 ;BAGZ PROGRAMINI 22 DEFA USULUNE UYGUN ÇAĞIRIR.. MOVLW D'23' MOVWF ZSAYACI BAGZ2200 DECFSZ ZSAYACI, 1 GOTO ADIMZG RETURN ADIMZG CALL BAGZ MOVLW D'25' MOVWF KEY2 ;50 MS ADIM ARASI BEKLEME CALL WAIT GOTO BAGZ2200 ;*************************************************** ZCTRL ;Z KONUM KONTROLÜ BTFSS ZACISI, 0 GOTO POZITIFZ MOVF ZONLAR, 0 ;ZONLAR AKÜDE IORWF ZBIRLER, 0 ;Z ACISI +00 MI? BTFSC STATUS, 2 ;HAYIRSA DEVAM GOTO NEGNOTR ;EVETSE GIT MOVF ZONLAR, 0 ;EVET.. ZONLAR 0 MI IORLW H'00' BTFSC STATUS, 2 GOTO NEGSIFIR ;0 SA NEGSIFIRA GIT MOVLW D'18' ;HAYIR.. DEVAM. MOVWF ZKONUM_Y ;YENİ KONUM ORJİN NEGATIFZTEKRAR MOVLW H'02' ;2 AZALACAK SUBWF ZKONUM_Y, 1 ;KONUM 2 ZALDI DECFSZ ZONLAR, 1 ;0 OLDUMU GOTO NEGATIFZTEKRAR ;HAYIR.. İKİ DAHA AZALT MOVF ZBIRLER, 0 IORLW H'00' BTFSC STATUS, 2 ;ZBIRLER 0 MI GOTO ZCTRL_AYAR ;EVETSE NEGSIFIRB YE GIT DECF ZKONUM_Y, 1 ;1 DAHA AZALDI. ÇÜNKÜ BIRLER BAS. 5 GOTO ZCTRL_AYAR NEGSIFIR ;ZONLAR SIFIRSA GELİR MOVLW D'17' MOVWF ZKONUM_Y ;-05 YAPILDI ÇÜNKÜ SON SEÇENEKTİ GOTO ZCTRL_AYAR NEGNOTR MOVLW D'18' MOVWF ZKONUM_Y GOTO ZCTRL_AYAR POZITIFZ MOVF ZONLAR, 0 ;ZONLAR AKÜDE IORWF ZBIRLER, 0 ;Z ACISI +00 MI? BTFSC STATUS, 2 ;HAYIRSA DEVAM GOTO POZNOTR ;EVETSE GIT MOVF ZONLAR, 0 ;EVET.. ZONLAR 0 MI IORLW H'00' BTFSC STATUS, 2 GOTO POZSIFIR ;0 SA POZSIFIRA GIT MOVLW D'18' MOVWF ZKONUM_Y POZITIFZTEKRAR MOVLW H'02' ;2 ARTACAK ADDWF ZKONUM_Y, 1 ;KONUM 2 ARTTI DECFSZ ZONLAR, 1 ;0 OLDUMU GOTO POZITIFZTEKRAR ;HAYIR.. İKİ DAHA ARTTIR MOVF ZBIRLER, 0 IORLW H'00' BTFSC STATUS, 2 ;ZBIRLER 0 MI GOTO ZCTRL_AYAR ;EVETSE POZSIFIRB YE GIT INCF ZKONUM_Y, 1 ;1 DAHA ARTTI. ÇÜNKÜ BIRLER BAS. 5 GOTO ZCTRL_AYAR POZSIFIR ;ZONLAR SIFIRSA GELİR MOVLW D'19' MOVWF ZKONUM_Y ;+05 YAPILDI ÇÜNKÜ SON SEÇENEKTİ GOTO ZCTRL_AYAR POZNOTR MOVLW D'18' MOVWF ZKONUM_Y GOTO ZCTRL_AYAR ;************************************* ZCTRL_AYAR MOVF ZKONUM_E, 0 SUBLW D'18' ;18 DEN BÜYÜK MÜ BTFSC STATUS, 0 GOTO KUCUKZ GOTO BUYUKZ KUCUKZ BTFSC STATUS, 2 ;18 E EŞİT Mİ GOTO ESITZ ;KUCUKTUR MOVF ZKONUM_E, 0 SUBLW D'18' MOVWF ZADIM CALL ZCTRL_BAIZ GOTO ZCTRL_AYAR2 BUYUKZ MOVLW D'18' SUBWF ZKONUM_E, 0 MOVWF ZADIM CALL ZCTRL_BAGZ GOTO ZCTRL_AYAR2 ESITZ GOTO ZCTRL_AYAR2 ;******************************************* ZCTRL_BAIZ CALL BAIZ22 DECFSZ ZADIM, 1 GOTO ZCTRL_BAIZ RETURN ZCTRL_BAGZ CALL BAGZ22 DECFSZ ZADIM, 1 GOTO ZCTRL_BAGZ RETURN ;***************************************** ZCTRL_AYAR2 MOVF ZKONUM_Y, 0 SUBLW D'18' ;18 DEN BÜYÜK MÜ BTFSC STATUS, 0 GOTO KUCUKZ2 GOTO BUYUKZ2 KUCUKZ2 BTFSC STATUS, 2 ;18 E EŞİT Mİ GOTO ESITZ2 ;KUCUKTUR MOVF ZKONUM_Y, 0 SUBLW D'18' MOVWF ZADIM CALL ZCTRL_BAGZ GOTO ZCTRL_AYAR22 BUYUKZ2 MOVLW D'18' SUBWF ZKONUM_Y, 0 MOVWF ZADIM CALL ZCTRL_BAIZ GOTO ZCTRL_AYAR22 ESITZ2 GOTO ZCTRL_AYAR22 ZCTRL_AYAR22 MOVF ZKONUM_Y, 0 MOVWF ZKONUM_E GOTO RUTIN ;************************************************** XCTRL ;X KONUM KONTROLÜ BTFSS XACISI, 0 GOTO POZITIFX MOVF XONLAR, 0 XORLW H'06' BTFSS STATUS, 2 GOTO NEGATIFX45MI MOVLW H'00' MOVWF XKONUM_Y GOTO XCTRL_AYAR NEGATIFX45MI MOVF XONLAR, 0 XORLW H'04' BTFSS STATUS, 2 GOTO NEGATIFX30MU MOVLW H'01' MOVWF XKONUM_Y GOTO XCTRL_AYAR NEGATIFX30MU MOVF XONLAR, 0 XORLW H'03' BTFSS STATUS, 2 GOTO NEGATIFX15MI MOVLW H'02' MOVWF XKONUM_Y GOTO XCTRL_AYAR NEGATIFX15MI MOVF XONLAR, 0 XORLW H'01' BTFSS STATUS, 2 GOTO NEGATIFX00DIR MOVLW H'03' MOVWF XKONUM_Y GOTO XCTRL_AYAR NEGATIFX00DIR MOVLW H'04' MOVWF XKONUM_Y GOTO XCTRL_AYAR POZITIFX MOVF XONLAR, 0 XORLW H'06' BTFSS STATUS, 2 GOTO POZITIFX45MI MOVLW H'08' MOVWF XKONUM_Y GOTO XCTRL_AYAR POZITIFX45MI MOVF XONLAR, 0 XORLW H'04' BTFSS STATUS, 2 GOTO POZITIFX30MU MOVLW H'07' MOVWF XKONUM_Y GOTO XCTRL_AYAR POZITIFX30MU MOVF XONLAR, 0 XORLW H'03' BTFSS STATUS, 2 GOTO POZITIFX15MI MOVLW H'06' MOVWF XKONUM_Y GOTO XCTRL_AYAR POZITIFX15MI MOVF XONLAR, 0 XORLW H'01' BTFSS STATUS, 2 GOTO POZITIFX00DIR MOVLW H'05' MOVWF XKONUM_Y GOTO XCTRL_AYAR POZITIFX00DIR MOVLW H'04' MOVWF XKONUM_Y GOTO XCTRL_AYAR ;********************************** XCTRL_AYAR MOVF XKONUM_E, 0 SUBLW H'04' ;4 DEN BÜYÜK MÜ BTFSC STATUS, 0 GOTO KUCUKX GOTO BUYUKX KUCUKX BTFSC STATUS, 2 ;4 E EŞİT Mİ GOTO ESITX ;KUCUKTUR MOVF XKONUM_E, 0 SUBLW H'04' MOVWF XADIM CALL XCTRL_BAIX GOTO XCTRL_AYAR2 BUYUKX MOVLW H'04' SUBWF XKONUM_E, 0 MOVWF XADIM CALL XCTRL_BAGX GOTO XCTRL_AYAR2 ESITX GOTO XCTRL_AYAR2 ;******************************************* XCTRL_BAIX CALL BAIX MOVLW D'150' ;300 MİLİSANİYE BEKLE.. MOVWF KEY2 CALL WAIT DECFSZ XADIM, 1 GOTO XCTRL_BAIX RETURN ;**************************************** XCTRL_BAGX CALL BAGX MOVLW D'150' MOVWF KEY2 CALL WAIT DECFSZ XADIM, 1 GOTO XCTRL_BAGX RETURN ;***************************************** XCTRL_AYAR2 MOVF XKONUM_Y, 0 SUBLW H'04' ;4 DEN BÜYÜK MÜ BTFSC STATUS, 0 GOTO KUCUKX2 GOTO BUYUKX2 KUCUKX2 BTFSC STATUS, 2 ;4 E EŞİT Mİ GOTO ESITX2 ;KUCUKTUR MOVF XKONUM_Y, 0 SUBLW H'04' MOVWF XADIM CALL XCTRL_BAGX GOTO XCTRL_AYAR22 BUYUKX2 MOVLW H'04' SUBWF XKONUM_Y, 0 MOVWF XADIM CALL XCTRL_BAIX GOTO XCTRL_AYAR22 ESITX2 GOTO XCTRL_AYAR22 XCTRL_AYAR22 MOVF XKONUM_Y, 0 MOVWF XKONUM_E GOTO RUTIN ;************************************************** END
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/11/20 Etiketler: 2x20 lcd, dişli, ışık, lazer, lcd ekran, microchip pic projeleri, motor, otomatik, PIC16F877 örnekleri, stepper, tork, veri yazma