8051 de yapılmıs bir kod >> Pic için çevrilmesi gerek yardımcı olabilir misiniz

Başlatan ziftinpeki, 26 Nisan 2013, 16:57:21

ziftinpeki

#include <89c51rd2.H>
#define PWM      P2_0      // PWM çıkış ucu(Servonun kontrol ucu)
#define Saga_Don   P1_0   // Sağa dönme butonu
#define Merkez   P1_1      // Merkeze alma butonu
#define Sola_Don   P1_2   // Sağa dönme butonu
void main (void)
{
//       _            _
//   __| |__________| |__________
//    -----20msn---          

  int i=3; // 20 msn'lik PWM periyot içindeki '1' olma süresi için
  int sayac;   // PWM sinyalin 20 msn'lik peryodu için
  TMOD=0x01;   // T0'ın 16 bit (mod1) zamanlayıcı olarak ayarlanması
  TH0=0xFE;         // Z/S'nin başlangıç değerinin kurulması
  TL0=0x0C;         // T0 her 500 saymada taşacak(0,5 ms)
  P1=0xFF;         // P1 portunun giriş olarak ayarlanması
  while(1)
  {
    if(!Sola_Don)   // Sola Dön butonuna basıldı ise
      i=2;         // 1 msn 'lik PWM sinyali elde edilecek
    if(!Saga_Don)    // Sola Dön butonunan basıldı ise
      i=4;      // 2 msn 'lik PWM sinyali elde edilecek
    if(!Merkez)   // Merkez butonunan basıldı ise
      i=3;        // 1,5 msn 'lik PWM sinyali elde edilecek
    TR0=1;      // T0'ın saymaya başlaması
    while(TF0)   // Taşma olmuş ise
    {
      TR0=0;             //Z/S'i durdur
      TF0=0;             // Taşma bayrağını temizle
      if (sayac==40)    // 40x0,5=20 msn olduğunda(PWM peryodu)   
        sayac=0;       // sayacı sıfırla
      else
        sayac++;   // sayacı bir arttır   
      if(sayac<i)   // i'nin değerine göre 1,1.5 ve 2 msn   
        PWM=1;     // boyunca PWM çıkışı Lojik 1
      else
        PWM=0;     // Diğer durumlarda Lojik 0
   /* Z/S her çalıştırmada sayacak değere tekrar kurulmalı */
   TH0=0xFE;
   TL0=0x0C;   
    }
  }
}