Test çipi: Mikroçip PIC 18F4550
Tümleşik geliştirme ortamı: MPLAB IDE v8.53
Derleyici: Microchip C18
PIC18 serisi tek çipli mikrobilgisayarlar, Microchip'in 8 bitlik mikro denetleyici serisinde üst düzey bir seridir.Herhangi bir G / Ç pini tarafından izin verilen maksimum batırma akımı veya maksimum kaynak akımı, doğrudan LED'leri ve röleleri çalıştırabilen 25mA'dır. PORTA, PORTB ve PORTE'nin toplam maksimum batma akımı veya maksimum kaynak akımı 200mA, PORTC ve PORTD'nin toplam maksimum lavabo akımı veya maksimum kaynak akımı 200mA ve PORTF ve PORTG'nin toplam maksimum lavabo akımı veya maksimum kaynak akımı 100mA'dır (Not: PIC18F4550 Bu iki bağlantı noktası olmadan).
Mikro denetleyici ve çevre birimler arasındaki etkileşim, G / Ç bağlantı noktası aracılığıyla gerçekleştirilir ve her G / Ç bağlantı noktasında üç çalışma kaydı bulunur:
1. TRISx Veri yönü kaydı
I / O pinlerinin yönünü, yani PORTx'in giriş mi yoksa çıkış mı olduğunu kontrol etmek için kullanılır.
2. PORTx Bağlantı noktası kaydı
Çıkış verilerini kilitlemek için kullanılır. PORTx'i okurken, cihaz doğrudan G / Ç pin seviyesini okur (kalıcı değeri değil).
3. LATx - çıkış veri mandalı
Bağlantı noktasına yazmak, mandala (LATx) yazmak anlamına gelir. Veri mandalı ayrıca doğrudan okunabilir ve yazılabilir. Çevre birimi pimi kullanmazsa ve TRISx bit pimi bir çıkış olarak yapılandırırsa, mandaldaki veriler pime çıkarılır.
Sıfırlama durumunda, TRISx'in sıfırlama değeri 0xff, yani TRISx kaydının 8 bitinin (D0 ~ D7) değeri 1'dir. Bu sırada, ilgili PORTx pini bir giriş olarak tanımlanır ve karşılık gelen çıkış sürücüsü, yüksek empedans durumu sunar. 0 olarak ayarlandığında, ilgili pin çıkış olarak tanımlanır.
Burada PORT yazmanın LAT yazdığına dikkat edilmelidir, ancak PORT okumak LAT okumaktan farklıdır. PORT'u okumak, pinin bir giriş pini veya bir çıkış pini olarak ayarlanıp ayarlanmadığına bakılmaksızın pinin durumunu okur. LAT okunarak elde edilen değer, çıkış verisi mandalının saklanan değeridir.LAT okunarak elde edilen değer PORT okunarak elde edilen değerden farklı olabilir.
Microchip C18'de, G / Ç bağlantı noktasının üç işlem kaydı bit veya bayt olarak çalıştırılabilir.
Örneğin, B portunun yön kaydı TRISB (veya DDRB) ile temsil edilir ve bir bit, TRISBbits.TRISB0 (veya DDRB bitleri.RB0) ile temsil edilir. Bayt, TRISB (veya DDRB) ile temsil edilir.
Örneğin, B bağlantı noktasının PORT kaydı PORTB ile temsil edilir ve belirli bir bit PORTBbits.RB0 ile temsil edilir. Bayt, PORTB ile temsil edilir.
Örneğin, B bağlantı noktasının çıkış veri mandalı LATB ile temsil edilir ve belirli bir bit LATBits.LATB0 ile temsil edilir. Bayt, LATB ile temsil edilir.
LATx (PORTx) mandalının değeri, yonga sıfırlandıktan sonra rastgele olduğundan, G / Ç pin seviyesinde hata olasılığını ortadan kaldırmak için, bağlantı noktasını başlatırken, önce PORT veri mandalını (LAT veya PORT yazmacı) ve sonra veri yönü yazmacı TRIS'i başlatın.
Spesifik uygulamayı açıklamak için bir örnek kullanalım: Aşağıdaki şekil PIC18F4550 ve güç kaynağı, kristal osilatör ve ışık yayan diyot, aynı anda yanması için 8 ışık yayan diyot gerektiren en basit 8 bitlik mikro denetleyici sistemini oluşturur.
İlk olarak, bitsel işlem yöntemini seçebilirsiniz. Bit-bazlı çalışmanın aslında PORTB'ye bağlı 8 LED'in eşzamanlı aydınlatmasını gerçekleştirmediğini görmek zor değildir, ancak LED'lerin gecikme etkisi, bunların sıralı olarak yanması gerçeğini aydınlatarak nihai etkinin eşzamanlı aydınlatma elde etmesini sağlar. Aşağıda, bitsel işlemin uygulama kodu verilmiştir.
#Dahil etmek
void main (void)
{
PORTBbits.RB0 = 1;
TRISBbits.TRISB0 = 0; // ilk LED'i yak
PORTBbits.RB1 = 1;
TRISBbits.TRISB1 = 0; // ikinci LED'i yakar
PORTBbits.RB2 = 1;
TRISBbits.TRISB2 = 0; // üçüncü LED'i yak
PORTBbits.RB3 = 1;
TRISBbits.TRISB3 = 0; // 4. LED'i yak
PORTBbits.RB4 = 1;
TRISBbits.TRISB4 = 0; // 5. LED'i yak
PORTBbits.RB5 = 1;
TRISBbits.TRISB5 = 0; // 6. LED'i yak
PORTBbits.RB6 = 1;
TRISBbits.TRISB6 = 0; // 7. LED'i yak
PORTBbits.RB7 = 1;
TRISBbits.TRISB7 = 0; // 8. LED'i yak
while (1);
}
İkinci olarak, bayt işlemiyle gerçekleştirilebilir, kod bitsel işlemden çok daha basittir ve eşzamanlı aydınlatma gereksinimini gerçekten gerçekleştirir. Aşağıda bayt işleminin uygulama kodu verilmiştir.
PORTB = 0xff;
TRISB = 0x00; // 8 LED yakar
Feragatname: Bu web sitesinin orijinal içeriğini yeniden yazdırmanız gerekirse, lütfen kaynağı belirtin; bu web sitesinde çoğaltılan içeriğin (makaleler, resimler, videolar) ve diğer materyallerin telif hakkı orijinal web sitesine aittir. Herkese açıklamamanız gereken makaleler veya resimler kullanırsak ve her iki tarafa da gereksiz ekonomik kayıplardan kaçınmak için zamanında onaylamazsak, lütfen bize e-posta gönderin, böylece uygun önlemleri hızlı bir şekilde alabiliriz; katkılarınızı bekliyoruz, e-posta: editors @ eccn. com.tr.