www.8051plusplus.com


 

Ana Sayfa

Dersler

Örnekler

Hakkımızda

 

 

 

 

 

 

 

http://www.rigelcorp.com/8051soft.htm

http://www.ceibo.com/eng/home.shtml

http://www.spjsystems.com/sc51.htm

 

 

8051plusplus@gmail.com

 Kayan Yazi...Kodları ve Proteus çizimini indirmek için tıklayınız...

Zamanlayıcı ve sayıcılar aşağıdaki görevler için kullanılırlar.

   Zaman gecikmesi yaratmak için

   Pals zamanı veya zaman aralığı ölçmek için

   Pals veya oluşan olayları saymak için

   Çoklu işlem uygulamalarında (Multi-tasking)

   Kesme üretmek için

Standart 8051 iki zamanlayıcı/sayıcıya sahiptir. Bu zamanlayıcı/sayıcılar 8 bit veya 16 bit zamanlayıcı/sayıcı olarak kullanılabilir.  Aşağıda M1 ve M0 bitlerinin değerlerine bağlı olarak zamanlayıcı/sayıcıların hangi modlarda kullanılabileceği belirtilmektedir.

 TMOD

 M1 M0  FUNCTION                                                              

| 0  0  |    8 bit counter or 8 bit timer with / 32 scaler                 

| 0  1  |    16 bit timer/counter                                                 

| 1  0  |    8 bit timer counter with auto-reload to initial start for count up   

| 1  1  |    TC1 - disabled                                                       

   TH0 - TH0 is an 8 bit timer incremented by setting TR1.Interrupts  are channelled to .001Bh                                         

  TL0 - is an 8 bit timer/counter controlled by TMOD and TCON         

Zamanlayıcı/sayıcı  çalıştır bitleri TR1 ve TR0, TCON registerinde bulunur. Bu bitlerden birisi  "1" yapıldığında,  bu bite  karşılık gelen sayıcı çalışmaya başlar.  Bu bitlerin değeri "0" yapıldığında zamanlama/sayma işlemleri de bitirilmiş olur.  Kesme kontrolü registerinde (IE) bulunan ET1 ve ET0 bitleri, zamanlayıcı taşmasında kesme üretilip üretilmeyeceğini belirlemekte kullanılır.  Bit değerinin "1" olması, zamanlayıcı/sayıcı taşmasının kesme üretmesi anlamına gelir.

TMOD registerindeki C/T biti, zamanlaycı/sayıcıyı, sayıcı modunda veya zamanlayıcı modunda çalıştırmak için kullanılır.  Bu bitin değeri "1" yapıldığında zamanlayıcı/sayıcı, 8051 entegrenin TX giriş pinindeki olayları saymak üzere konfigüre edilmiş olur.

Bu bitin değeri "0" olduğunda zamanlayıcı/sayıcı, zamanlayıcı modundadır ve sistem osilatöründen gelen sinyali 12'ye bölerek çalışır.

TMOD registerindeki GATE biti, "1" yapıldığında, zamanlayıcı/sayıcı n'in aktif olması için, INTn ve TRn bitleri "1" yapılmalıdır.  GATE biti "0" yapıldığında zamanlayıcı/sayıcı n,in aktif yapılması için, TRn bitinin "1" yapılması yeterlidir.  GATE biti zamanı ölçmekte, olayların zamanını ölçmekte, pals genişliğini ölçmekte kullanılır.  INTx hattı "1" olduğu sürede, bu değerler sayıcya geçirilir. Sistem osilatörünün frekansı 12'ye bölünerek zaman sayması gerçekleşir. Buna göre 12 MHz osilatör kullanan bir sistemde, zamanlayıcının frekansı 1 Mhz olur.

 

//22-02-2007 counter.c 

#include <reg51.h>
#include <stdio.h>


void main (void)
{
//seri port 9600 baud kristal 11.0592 MHz.Timer 1
SCON  = 0x50;
TMOD |= 0x20;
TH1   = 0xFA;
TR1   = 1;
TI    = 1;
PCON |= 0x80;

printf ("\r\nCounter \r\n");
printf ("\r\nCounter Basladi...\r\n\r\n");

TMOD = (TMOD & 0xF0) | 0x05;
TR0 = 1;

while (1)
  {
  printf ("\rCounter 0 = %2.2bX%2.2bXh", TH0, TL0);
  }
}