Zamanlama devresi 16f84 denetleyici ve cd4511 dekoder entegreleri üzerine kurulu 7 segment led display göstergesi ve buzer ile ses uyarısı verebiliyor 1,2,3 numaralı butonlar ile ayarlama yapılıyor kaynak MPASM assembler .asm yazılımı bulunmakta
KARANLIK ODA ZAMANLAYICISI
Bu projenin amacı kullanışlı ve yerinde bir cihaz sunmaktır. aynı zamanda yeni başlayanlara programlamada yer alan birçok özelliği gösterir İçerdiği konulardan bazıları şunlardır:
* MPASM derleyicisinin basit kullanımı
* Zamanlayıcı 0 ve ön ölçekleyici kullanımının gösterilmesi
* Zamanlama gecikmelerini ayarlamak için talimatların uzunluğunun kullanılması
* Kesme rutinlerini kullanma
* Bouncing dahil olmak üzere anahtar kapatmalarının tespiti
* Yerleşik EEPROM’dan veri kaydetme ve kurtarma
Ünite açıldığında son kullanılan başlangıç sayımı, dakika 0-99, ekranda 0-59 saniye gösteriliyor. Başlangıç sayısı verilerde tutulur PIC16F84’ün EEPROM’u. Başlat düğmesine basıldığında geri sayım başlar. Sayım sıfıra ulaştığında bir alarm çalar. alarm şuna kadar devam eder: starta tekrar basılır. Bu basış aynı zamanda başlangıç sayımını görüntülemek. Sıfıra ulaşmadan başlata basmak da başlamaya geri döner koşullar Geri sayımdan önce set düğmesine basılırsa başlangıç sayısı değiştirilebilir. Her basamak, sıfırdan ayar düğmesine basılana kadar artarak sırayla yanar. tekrar basıldı. Son basıştan sonra yeni başlangıç sayısı EEPROM’a kaydedilir ayar düğmesinden 15 ayarlanabilir başlangıç sayısı vardır. Seçimi kullanarak bunlar arasında geçiş yaparsınız. butona basınız. Ayar düğmesi yalnızca o anda başlangıç sayısını değiştirir görüntülenir.
MPASM’nin kaynak kodu ‘CNTDN.ASM’ dosyasındadır. Bu kadar basit montajcı direktiflerinin gittiği yere kadar gidebilirsiniz. ‘LIST’ işlemciyi tanımlar, ‘#INCLUDE’ tarafından getirilen ek kod tüm özel işlevleri tanımlarken yazmaçlar, bitler vb. #DEFINE’lar kodu daha net hale getirmek için kullanılır.’ORG 0′ diyor kodu 0 konumunda başlatmak için ve ‘END’ programın sonunu işaretler.
Etiketler ilk sütundan başlar. Hem eşittir hem de hedef satırlar onlara yapıştırılmış etiketler. Diğer her şey 2. sütunda veya sonrasında başlar. #tanımlamak ve #include isteğe bağlı olarak 1. sütunda da başlayabilir. “p16F84.inc” dosyasına bakın dahil edilen tüm tanımları görmek için. Bireysel kayıt bitlerinin adları vardır sayılar yerine kullanılmalıdır, yani STATUS,2 yerine STATUS,Z. İlgili sayıların yerini tanımlar ve işleri daha net hale getirir, (PORTA,7 yerine PORTA,START_PB).
‘CNTDN.ASM’yi bir araya getirdiğinizde bir takım uyarılar ve mesajlar alacaksınız. Uyarılar ‘TRIS’ ve ‘OPTION’ komutlarından kaynaklanmaktadır. Boşver onları, bu kayıtları kurmanın en kolay yolu. Mesajlar, çünkü MPASM hangi sayfada olduğunuzu takip edemiyorum. Sadece RB0’ın STATUS olduğundan emin olun. belirtilen talimatlara ulaşılmadan ve silinmeden önce ayarlandı daha sonrasında. Aynı anda devam eden iki rutin var. Ana rutin setleri başlangıç koşulları ve ardından döngüler, kontrol anahtarları ve bir alarm bayrağı için sayımın sona ermesi. Bir kesme rutini, geri sayım devam ediyorsa, sayımı her saniye görüntüler ve azaltır. Ayrıca, sayı sıfıra ulaştığında bir alarm bayrağı ayarlar. Kesinti zamanlayıcı 0’ın (TMR0) taşmasına bağlı olarak.
ZAMANLAYICININ SIFIRLANMASI
TMR0 kurulumu karmaşıktır. Zamanlayıcı sıfır sürekli artar. yuvarlandığında üzerinde, INTCON kaydındaki T0IF bayrağı ayarlanır. biz sorumluyuz yazılımdaki bayrağı temizleme. İsteseydik, bu bayrağı yoklayabilirdik. Bu, bayrağı sürekli kontrol eden bir döngü gerektirir. Daha iyi bir yol zamanlayıcı sıfır kesmesini etkinleştir (INTCON’da T0IE = 1) ve kesmeleri etkinleştir genel, (INTCON’da GIE = 1). Her iki bit ayarlandığında, bir TMR0 taşması T0IF’i yükseltin ve kesmeye atlama olan konum 4’e bir ÇAĞRI’ya neden olan rutin.
Rutin girildiğinde GIE temizlenir, böylece diğer kesintiler olmaz müdahale etmek. GIE, rutinin sonunda RETFIE tarafından sıfırlanacaktır, (dönüş ve GIE’yi etkinleştirin). T0IF’i temizlemeyi unutmayın yoksa hemen geri döneriz. durumu tekrar kesintiye uğratın. Kod, başında ve sonunda da gereklidir W ve STATUS kaydının değerlerini kaydetmek ve geri yüklemek için rutinin. Unutmayın, devam etmekte olan başka bir rutin (ANA) vardır ve bunları gerektirebilir. değerler. Bunları kaydetmek biraz zor çünkü hiçbirini kullanamıyoruz. Bunu yapmak için STATUS’un değerini değiştiren komutlar. SWAP çalışıyor gibi görünüyor.
PIC’i başlattığımızda, TMR0, Port A bitinden gelen darbelerde artmaya ayarlanmıştır. 4 pimli, (SEÇENEKTE T0CS = 1). yapmak için T0CS’yi (Zamanlayıcı 0 Saat Seçimi) 0’a sıfırlayın Komut döngüsü ile TMR0 artışı. Bu, bir 4Mhz kristal. TMR0, 256 mikrosaniye sonra taşacaktır. Bu çok hızlı. Hızı yavaşlatmak için ön ölçekleyiciyi kullanıyoruz. Ön ölçekleyici atanmış olarak gelir bekçi uygulaması zamanlayıcısına, (OPTION’ın PSA’sı = 1). PSA = 0, onu TMR0’a atayacaktır. OPTION hakkında konuşurken, 0-3 bitleri bölünmeyi kontrol eder.
Zamanlayıcı devre şeması
Darkroom timer
The purpose of this project is to present a device that is useful and at the
same time demonstrate to the beginner many features involved in programming
the PIC. Some of the topics included are:* Simple use of MPASM assembler
* Demonstration of use of timer 0 and the prescaler
* Use of length of instructions to set up timing delays
* Using interrupt routines
* Detection of switch closures including debouncing
* Saving and recovering data from the onboard EEPROM
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/02/12 Etiketler: Led Display, microchip pic projeleri, timer, zamanlayıcı
Devreyi yapıp çalıştran varmı arkadaşlar. Start verdiğimde röleye 220 volt elektriği 30 dakikayı geri sayıp sayma işlemi bittiğinde 220 voltu kesicek bir devreye ihtiyacım var.