Kayıtlar

ASSEMBLY 16F877 - 16F877A BASLANGIC UYGULAMALARI

Resim
Merhaba arkadaşlar, bugün başlangıç seviyesinde assembly komutlar yazmaya çalışacağız. İlk olarak 16f877 datasheet ini buradan indirip takıldığınız noktalarda bakabilirsiniz. Bu yazıda hem MPLAB programını tanıyacağız hemde yazdığımız kodları nasıl simülasyon ortamına (PROTEUS'a) yükleriz bunları öğreneceğiz. Daha fazla lafı uzatmadan assembly de yazılan her bir komutun ne kadar süre icra ettiğini hesaplamaya koyulalım. 4MHz işlemciye sahip bir bilgisayarda simüle edeceğiz yazdığımız her projeyi. Bu yüzden PROTEUS'da yaptığımız projelerde bunu yapmamız gerekir. Artık ilk kodumuzu yazmaya başlayabiliriz. MPLAB programı açtığımızda karşımıza böyle bi ekran gelecek. Şimdi bir proje oluşturup kod yazmaya başlayacağız. 1-Project Wizard diyoruz Dedikten sonra kullanacağımız pic i seçiyoruz ve ileri diyoruz. 2-16f877 seçiyoruz 3- Kaydedeceğimiz yeri seçiyoruz ve ileri diyoruz Proje oluşturma işimizi hallettik. Şimdi kod yazacağımız editörün açmalıyız. 4

ASSEMBLY 16F877 - 16F877A KULLANIMI

Resim
Merhaba arkadaşlar bu yazımda ASSEMBLY ile pic 16f877 yi tanıyacağız ve ilerleyen konularda da pic ile farklı örnekler yaparak öğrenmeye çalışacağız. Öncelikle kod yazmak için MPLAB programını kullanacağız bunun için aşağıda paylaştığım linkten programı indirebilirsiniz. MPLAB İkinci aşama olarak da yazdığımız bu kodu simüle etmek için kullanacağımız bir program olacak bunun içinde PROTEUS programını kullanacağız. Aşağıdaki linkten de bunu indirebilirsiniz. PROTEUS Bu şekilde ihtiyacımız olan programları indirdikten sonra kurma işlemine geçiyoruz. Aşağıdaki adımları izleyerek kurma işlemlerimizi de yapıyoruz. MPLAB KURULUM MPLAB klasörüne giriyoruz Setup ı çalıştırıyoruz Tabiki de kullanıcı sözleşmesini okudum kabul ettim diyoruz :) :) Kütüphaneler yükleniyor Kurulum tamamlandı finish diyoruz PROTEUS KURULUMU Başlangıç kurulumlarımızı hallettiğimize göre artık işe koyulabiliriz. Bir sonraki yazımda kod yazmaya ve başlangıç işlemlerimizi yap

Bağli liste de kuyruk

//Düğüm sınıfımız class node {     Object element;     node next;     public node() {     }     public node(Object e, node n) {         element = e;         next = n;     } } //bağlı liste ekleme silme sınıfımız class bagliKuyruk {     node rear = null, front = null;     int size = 0;     //eleman ekleme     public void push(int data) {         node newnode = new node();         newnode.element = data;         newnode.next = null;         if (front == null) {             front = newnode;             rear = newnode;         } else {             rear.next = newnode;             rear = newnode;         }     }     //eleman silme     public Object push() {         Object temp = -111111;         if (front == null) {             System.out.println("bağlı kuyruk boş");             return temp;         } else {             temp = front.element;             front = front.next;             size--;         }         if (front == null) {

Bağlı listede yığıt

Bağlı yığıt bağlı listede tanımladığımız düğüm (node) sınıfını kullanacağız. Yığıta eleman eklemenin mantığını önceki yazımızdan biliyoruz. İlk son giren ilk çıkar. Bu mantıkla kodumuzu verelim. class node {     Object element;     node next;     public node() {     }     public node(Object e, node n) {         element = e;         next = n;     } } class bagliYigit {     node top = null;     int size = 0;             //eleman ekleme     public void push(int data) {         node newnode = new node();         newnode.element = data;         newnode.next = top;         top = newnode;         size++;     }         //eleman silme     public Object push() {         Object temp = -111111;         if (top == null) {             System.out.println("bağlı yığıt boş");         } else {             temp = top.element;             top = top.next;             size--;         }         return temp;     } }

Tek yönlü bağlı liste

Resim
Tek yönlü bağlı liste de bir düğün (node) sınıfımız var ve bu sınıfın içinde tuttuğu bilgiler var. Örnek olarak içinde bir integer sayı tutan bir düğüm olsun, bu düğüm yapısının bir sonraki hedefi gösterdiği bir de işaret referansı(next) vardır. Dizilerden farklı, dizilerde elemanlar sıra ile dizilmişti ama burda elemanlar sıralı değil. Sırasız bu elemanların referanslarını kullanarak birbirlerini göstermesini sağlıyoruz. Öncelikle bahsettiğimiz düğüm yapısını verelim: public class node {     Object element;     node next;         //yapılandırıcılar     public node(){     }      public node(Object e, node n){          element=e;          next=n;     } } Şimdi de eleman ekleme kısmını verelim: public class bagliListe {   Node head = null;   Node tail = null;   public bagliListeEkleme () {     Node x = null;     for (int i = 0; i < 10; i++){        x = new Node();         x.element = new Integer(i);               if (head = = null ) {  

Java' da Kuyruk

Resim
Java' da kuyruk ise yığıttan biraz farklı bir mantık ile çalışıyor. İlk giren ilk çıkar mantığı ile çalışır. Kod kısmında ki "rear" ve "front" kavramları yığıtta ki "top" kavramına denk gelir. Kuyruk ta ön ve arka kavramı vardır o yüzden bu kavramlarla daha anlaşılır halde yazılabilir. public class queue {     private int capacity,counter=0;     private int dizi[];     private int front = 0,rear=-1;             //eleman ekleme methodu     public void push(int data) {         if (front == capacity - 1) {             System.out.println("kuyruk dolu.");         } else {            rear=(rear+1)%capacity;            dizi[rear]=data;            counter++;         }     }     //eleman silme methodu     public int pop() {         int temp = -11111;         if (front == 0) {             System.out.println("kuyruk boş.");         } else {             temp = dizi[front];             front=(front+1)%capacit

Java' da yığıt

Resim
Konuya geçmeden önce yığıt kavramından biraz bahsetmek istiyorum. Yığıt mantığı son girenin ilk çıktığı bir yapıdır. Listemize giren son elemanın ilk çıkmasını istediğimiz durumlarda kullanırız. Şimdi dizilerde yığıtı java kodu ile vermeye çalışacağım. public class stack {     private int maxSize;     private int dizi[];     private int top = 0;     // class ın yapılandırıcısını oluşturduk     public stack(int size) {         maxSize = size;         dizi = new int[maxSize];     }     //eleman ekleme methodu     public void push(int data) {         if (top == maxSize - 1) {             System.out.println("yığıt dolu.");         } else {             top++;             dizi[top] = data;         }     }     //eleman silme methodu     public int pop() {         int temp = -11111;         if (top == 0) {             System.out.println("yığıt boş.");         } else {             temp = dizi[top];             top--;         }