SI'de AVR Okuma Limanları. AVR Microcontroller komut sisteminin incelenmesi

Giriş

Tüm G / Ç Portları (PVW) AVR Mikrodenetleyiciler, onları evrensel G / Ç bağlantı noktalarının portları olarak kullanırken okuma-modifiye etme prensibi üzerine çalışır. Bu, bir port satırının G / Ç portunun yönünü SBI ve CBI komutları tarafından değiştirilmesi, diğer port satırlarının G / Ç kısmı yönünde yanlış değişiklik olmadan gerçekleşeceği anlamına gelir. Bu, mantıksal seviyeyi değiştirmek için de (bağlantı noktası satırı çıkışa göre yapılandırılmışsa) veya çekme dirençleri açmak / devre dışı bırakmak için (çizginin girecek şekilde yapılandırılmışsa). Her çıkış tamponu, yüksek akan ve akan çıkış akımları ile simetrik bir kontrol özelliğine sahiptir. Çıkış sürücüsü, LED göstergelerini doğrudan kontrol etmenizi sağlayan bir yük kapasitesine sahiptir. Alternatif olarak, gücün gücüne sıkılaştırıcı direnç, direnci besleme voltajına bağlı olmayan tüm bağlantı noktaları çizgilerine bağlanabilir. Tüm PVV hatlarında, Şekil 29'da gösterildiği gibi, VCC ve Genel (GND) ile bağlı koruyucu diyotlar monte edilir. "Elektriksel özellikler" bölümünde bir PVV parametrelerinin ayrıntılı bir listesi verilir.

Şekil 29 - Eşdeğer PVV Çizgi Diyagramı

Kayıtlara ve kayıtların parçalarına bağlantılar bu bölüm Genel olarak Dases. Aynı zamanda, "x" sembolü, PVV'nin adını değiştirir ve "n" sembolü PVV deşarj numarasının yerini alır. Ancak, bir program yaparken, tam kayıt şeklini kullanmanız gerekir. Örneğin, PORTB3, bu belgede 3 portlu B'nin bir kategorisi anlamına gelir, bu belgede PORTXN olarak kaydedilir. Fiziksel G / Ç kayıtlarının adresleri ve deşarjlarının dağılımı "G / Ç portu kayıtlarının açıklaması" nda gösterilmektedir.

G / Ç hafızesindeki her G / Ç portu için, üç hücre ayrılmıştır: Veri kaydı kapsamında - PORTX, diğeri veri yol tarifleri için - DDRX ve bağlantı noktası girişlerinin durumu altında üçüncü. Bağlantı noktaları girdilerindeki durumu depolayan bir hücre sadece okunabilir ve veri kayıtları ve veri kayıtları çift yönlü erişime sahiptir. Ek olarak, STRIOR PUD PUD \u200b\u200bSıkma Dirençlerini Sıkma Dirençleri Sıkma Dirençleri, tüm bağlantı noktalarının tüm çıktılarını devre dışı bırakır.

Aşağıda, Universal Digital I / O için G / Ç portunun bir açıklamasıdır. Çoğu liman sonuçları, yerleşiklerin alternatif fonksiyonlarını desteklemektedir. Çevresel aygıtlar mikrodenetleyici. Alternatif bir özellik açıklaması ayrıca "Alternatif Port İşlevleri" alt bölümünde ayrıca (ayrıca ilgili çevresel modüllerin işlevlerinin açıklamasına bakınız).

Bazı limanların, bazı sonuçların alternatif fonksiyonlarının çözünürlüğünün, evrensel dijital giriş çıkışı için diğer çıktıları kullanmanın imkansız hale getirdiğini lütfen unutmayın.

Evrensel Dijital G / Ç Olarak Bağlantı Noktaları

Tüm bağlantı noktaları, isteğe bağlı çekme dirençlerine sahip çift yönlü G / Ç bağlantı noktalarıdır. Şekil 30, PXN olarak gösterilen bir giriş-çıkış bağlantı noktası hattının bir fonksiyon diyagramını göstermektedir.


Şekil 30 - Evrensel Dijital G / Ç (1) Organizasyonu

Yaklaşık. 1: WPX, WDX, RRX, RPX ve RDX sinyalleri bir bağlantı noktasında yaygındır. CLKI / O, uyku ve pud sinyalleri tüm limanlar için ortaktır.

Sonuç

Her çıkış modu ve durumu, üç kayıtların karşılık gelen rakamlarının değeri ile belirlenir: DDXN, PORTXN ve PINXN. "G / Ç bağlantı noktası kayıtlarının açıklaması" nda gösterildiği gibi, DDXN bitlerine erişim, G / Ç alanındaki DDRX adresinde ve sırasıyla PORTX adresindeki PortXN bitlerine ve Pinxn bitlerinde Pinxn bitlerinde mümkündür.

DDXN DDRX DDRX BITS, G / Ç çizgisinin yönünü belirler. DDXN \u003d 1 ise, PXN görüntülenecek şekilde yapılandırılmıştır. DDXN \u003d 0 ise, PXN girmek için yapılandırılmıştır.

PortXN \u003d 1 Eğer bağlantı noktası satırını giriş yaparken yapılandırırsa, sıkma direncinin bağlantısı izin verilir. Bu direnci kapatmak için, PORTXN günlüğüne yazmanız gerekir. Veya port satırını çıkışa yapılandırın. Sıfırlama sırasında, senkronizasyon çalışmıyor olsa bile, tüm bağlantı noktaları üçüncü (yüksek preslenmiş) durumdadır.

PortXN \u003d 1 Port satırını çıkışa yapılandırırken, çıkış durumu PORTXN değeri ile belirlenir.

DDRX ve PORTX kayıtlarına eşzamanlı giriş mümkün olmadığından, daha sonra üçüncü durum ((DDXN, PORTXN) \u003d 0B00) arasında geçiş yaparken ve kütüğün çıktısı. 1 ((((((DDXN, PORTXN) \u003d 0B11) Bir ara hal, bağlı bir sıkma direnci ((DDXN, PORTXN) \u003d 0B01) veya kütüğün çıkışıyla oluşmalıdır. 0 ((DDXN, PORTXN) \u003d 0B10). Kural olarak, bir durumun, çekme dirençinin bağlantısı olan bir durumun geçişi, mikrodenetleyicinin çıkışı yüksek empedans girişi ile ilişkili ise, loganın çıkış durumuna eşdeğerdir. Aksi takdirde, tüm bağlantı noktalarındaki tüm sıkılaştırıcı dirençleri kapatmak için Sfior Pud Pud biti oluşturmak gerekir.

Sıkma dirençleri ve çıkışın girilmesi arasında geçiş yapma düşük seviye benzer bir problemle ilişkili. Bu nedenle, kullanıcı kullanmak zorunda kalır veya üçüncü durumu ((DDXN, PORTXN) \u003d 0B00) veya çıkış günlüğü. 1 ((DDXN, PORTXN) \u003d 0B11) ara adım olarak.

Tablo 25, kontrol sinyallerinin çıktı durumuna etkisini özetlemektedir.

Tablo 25 - Bağlantı noktası çıkışını ayarlama

Ddxn. PORTXN. Pud (Sfior'da) Giriş çıkış Sıkma direnci Yorum Yap
0 0 X. Giriş Değil
0 1 0 Giriş Evet PXN, harici bir düşük seviye uygularken mevcut kaynak olacaktır.
0 1 1 Giriş Değil Üçüncü Devlet (Z-State)
1 0 X. Çıktı Değil Çıkış günlüğü. 0 (akım akımı)
1 1 X. Çıktı Değil Çıkış günlüğü. 1 (akan akım)

Çıktı durumunu oku

DDXN veri dosyasının değerinden bağımsız olarak, bağlantı noktası çıktı durumu Pinxn kayıt biti aracılığıyla görüşülebilir. Şekil 30'da gösterildiği gibi, Pinxn kayıt biti ve tetik mandalı bir senkronizatör olduğundan önce gelir. Bu yaklaşım Çıkıştaki değişimin dahili senkronizasyonun önüne yakın olması durumunda metastabiliteyi önlemenizi sağlar. Ancak, bu yaklaşım gecikmenin oluşumu ile ilişkilidir. Şekil 31, çıkış seviyesine harici olarak tutturulmuş anket sırasında geçici bir senkronizasyon diyagramı sunar. Sinyal dağılımındaki minimum ve maksimum gecikmelerin süresi, sırasıyla TPD, MAX ve TPD, MIN olarak belirtilir.


Şekil 31 - Çıkışa uygulanan seviyenin anketi sırasında senkronizasyon

Aşağıdaki örneklerde, limanın 0 ve 1 çizgilerinin günlüğüne nasıl kurulacağı gösterilmiştir. 1 ve satırlar 2 ve 3'te - log. 0, satırları (4 ...), satırları 6 ve 7. çizgilerin üzerine sıkma dirençlerinin bağlanmasıyla birlikte nasıl yapılandırılacağı gibi, hatların ortaya çıkan durumu geri okunur, ancak yukarıdakileri dikkate alarak, NOP Bildirim, sadece bazı sonuçların atanmış durumunu okumanın olasılığını sağlamak için etkindir.

Assembler (1) üzerinde örnek kodu ...; Yukarı çıkıp yüksek çıkış seviyeleri kurmama izin verin; LDI R16 bağlantı noktalarının bu hatlarının yönlerini belirler (1<

Yaklaşık. 1: Assemble programı, 0, 1, 6 ve 7 boşaltma dirençlerinin ayarlanmasından geçen zaman aralığını en aza indirmek için, günlük yönünün yönünün doğru montajına kadar. 0 satırları 2 ve 3'te ve 0 ve 1 discharjentler üzerinde, yüksek bir dezavantajları yüksek akımlı bir sürücünün yüksek seviyesine bağlayarak oluşan bir yüksek seviyeyi değiştirerek.

Dijital Giriş Çözünürlüğü ve Uyku Modları

Şekil 30'da gösterildiği gibi, giriş dijital sinyali toplam Schmita tetikleyici girişine barındırılabilir. Uyku olarak işaretli olan sinyal, mikrodenetleyici kapatıldığında, ekonomik mod, görev modu ve gelişmiş görev moduna çevrildiğinde ayarlanır. Bu, bazı girdi sinyalleri yüzer bir durumdaysa veya giriş analog sinyalinin seviyesi VCC / 2'ye yakın olacağı durumlarda, mevcut tüketimdeki artıştan kaçınır.

Uyku sinyali, harici kesintilerin girişleri ile göz ardı edilir. Harici kesme talepleri devre dışı bırakılırsa, uyku bu sonuçlar için geçerlidir. Alternatif işlevlerini yerine getirirken uyku da diğer girdilerde görmezden gelir (bkz. "Alternatif bağlantı noktası işlevleri").

Harici bir asenkron kesmenin çıktısında, ön cepheyi kesecek şekilde yapılandırılmış, ön veya herhangi bir değişiklik, bir günlük seviyesi vardır. 1 ve aynı zamanda harici kesintinin izin verilmemesi durumunda, harici kesintinin karşılık gelen bayrağı yukarıda belirtilen uyku modlarının çıkışında ayarlanacaktır, çünkü Uyku modundaki giriş şönt işlevi mantıksal değişikliklerle sonuçlanır.

Bağlantısız Sonuçlar

Birkaç sonuç kullanılmamışsa, belirli bir mantıksal seviyenin varlığını garanti etmeniz önerilir. Çoğu dijital girişin, yukarıda açıklandığı gibi derin uyku modlarında devre dışı bırakıldığına rağmen, dijital girişin izin verdiği tüm mikrodenetleyici tüm modlarında akım tüketimini önlemek için yüzer girişlerden kaçınmak için gereklidir (sıfırlama, aktif mod ve bekleme modu).

Kullanılmayan bir çıkışta belirli bir seviyenin varlığını garanti etmenin en basit yöntemi, iç sıkma direncinin bağlantısını çözmektir. Bununla birlikte, bu durumda, sıfırlama modunda, çekme dirençleri devre dışı bırakılır. Düşük tüketim gerekliyse ve sıfırlama modunda, bir artı veya eksi gücüne harici bir sıkma direnci takmak gerekir. Çıkışları doğrudan VCC veya GND'ye bağlama önerilmez, çünkü Veri çıkışında böyle bir çıkışın rastgele yapılandırması ile tehlikeli bir akım olabilir.

Bitkili işlemler, daha önce daha önce düşündüğümüz mantıksal operasyonlara dayanmaktadır. AVR mikrodenetleyicilerinin ve diğer türleri programlamada önemli bir rol oynarlar. Beaten operasyonlarının kullanımı olmadan neredeyse hiçbir program masrafı yoktur. Bundan önce, MK'nın programlanmasını inceleme sürecini kasten kaçınduk.

Önceki makalelerde, yalnızca G / Ç portlarını A programladık ve örneğin zamanlayıcılar, analog-dijital dönüştürücüler, kesintiler ve diğer iç cihazlar gibi, MK'nın tüm gücünü kaybettiği gibi ek gömülü düğümler kullanmadı.

Dahili MK cihazlarının geliştirilmesine devam etmeden önce, AVR MK'nın kayıtlarının bireysel bitlerini nasıl yöneteceğinizi veya kontrol edeceğinizi öğrenmelisiniz. Önceden, bir kerede boşalmayı kontrol edin veya ayarladık. Farkın ne olduğu ile uğraşalım ve daha sonra devam edin.

Şişeleme işlemleri

Çoğu zaman, AVR mikrodenetleyicilerini programlarken, Acemi Programcıları MK için karşılaştırıldığında ve iyi durumda olduğundan daha fazla görünürlüğe sahip olduğundan, kullandığımız için kullandık. Örneğin, sadece D Port'un 3. bitini kurmamız gerekiyor. Bunun için, zaten bildiğimiz gibi, aşağıdaki ikili kodu kullanabilirsiniz:

Portd \u003d 0b00001000;

Ancak, 3. kategoriyi bu takımla ve diğerlerinin (0, 1, 2, 4, 5, 6 ve 7) tarafından sıfıra attığımızızı belirledik. Ve şimdi, 6. ve 7. deşarjların ADC girişleri olarak yer aldığı ve şu anda MK'nın karşılık gelen sonuçlarına kadar herhangi bir cihazdan bir sinyal alır ve yukarıdaki komuta uyguladık, bu sinyalleri sıfırladık. Sonuç olarak, mikrodenetleyici onları görmez ve sinyallerin gelmediğine inanıyor. Bu nedenle, böyle bir ekip yerine, diğer bitleri etkilemezken, birim başına sadece 3. bitler kuracak olan bir başkasını uygulamalıyız. Bunun için, aşağıdaki dövülmüş işlem genellikle uygulanır:

Portd | \u003d (1<<3);

Sözdizimi aşağıda ayrıntılı olarak açıklayacağımız. Ve şimdi bir örnek daha. Diyelim ki, PIND sicilinin 3. deşarjının durumunu kontrol etmemiz gerektiğini, böylece düğmenin durumunu kontrol etmeliyiz. Bu boşaltma sıfıra sıfırlanırsa, düğmeye basıldığını ve ardından komut kodunun, preslenmiş düğmenin durumuna karşılık gelen komut kodunun yapıldığını biliyoruz. Daha önce aşağıdaki girişi kullandık:

if (Pind \u003d\u003d 0B0000000000)

(herhangi bir kod)

Bununla birlikte, yardımı ile, ayrılmamayı, - 3'ü ve hemen tüm Bütün bitlerin tüm bitlerini kontrol ediyoruz. Bu nedenle, düğmeye basılsa bile ve istenen boşalma sıfırlanırsa bile, ancak şu anda sinyal D bağlantı noktasının diğer çıktılarına bir sinyal alacaktır, karşılık gelen ömür bir olarak kurulur ve parantez içindeki durum yanlış. Sonuç olarak, düğmeye basıldığında bile kıvırcık parantez içerisinde bulunan kod yapılmayacaktır. Bu nedenle, PIND KAYITININ 3. BAZI DURUMUNUNU DEĞERLENDİRMEK İÇİN, bir parti işlemi uygulanmalıdır:

eğer (~ pind & (1)<<3))

(herhangi bir kod)

C programlama cephaneliğinde mikrodenetleyicinin ayrı bitleriyle çalışmak için, birlikte bir veya daha fazla bireysel bitinin durumunu değiştirebileceğiniz veya kontrol edebileceğiniz var.

Ayrı bir bit yükleme

Ayrı bir bit yüklemek için, örneğin D bağlantı noktası D, bükülmüş bir işlem uygulanır veya. Makalenin başında kullandığımız buydu.

Portd \u003d 0b00011100; // ilk anlamı

PORTD \u003d PORTD | (bir<<0); применяем побитовую ИЛИ

Portd | \u003d (1<<0); // сокращенная форма записи

PORTD \u003d\u003d 0B00011101; // Sonuç

Bu komut, sıfır boşalmanın kurulumunu gerçekleştirir ve kalan kalan yapraklar değişmez.

Örneğin, D D. bağlantı noktasının bir 6. kategorisini yükleyin.

Portd \u003d 0b00011100; // limanın ilk durumu

Portd | \u003d (1<<6); //

PORTD \u003d\u003d 0B01011100; // Sonuç

Bir birimi derhal sıfır, altıncı ve yedinci liman gibi birkaç ayrı bite kaydetmek için B. Bir sonraki giriş geçerlidir.

Portb \u003d 0B00011100; // ilk anlamı

PORTB | \u003d (1<<0) | (1<<6) | (1<<7); //

Portb \u003d\u003d 0B1011101; // Sonuç

RESET (Sıfırla) Bireysel Bits

Ayrı bir biti sıfırlamak için, daha önce gözden geçirilmiş üç komut uygulanır: .

PORTC kayıt defterinin 3. kategorisini sıfırlayalım ve geri kalanını değiştirmeden bırakalım.

Portc \u003d 0b00011100;

PORTC & \u003d ~ (1<<3);

PORTC \u003d\u003d 0B00010100;

2. ve 4. kategoriler için benzer eylemler gerçekleştirin:

Portc \u003d 0b00111110;

PORTC & \u003d ~ ((1)<<2) | (1<<4));

PORTC \u003d\u003d 0B00101010;

Bit anahtarlama

Kurulum ve sıfırlamaya ek olarak, tam tersi duruma ayrı bir biti değiştiren kullanışlı bir komut kullanılır: biri sıfırda ve tam tersi. Bu mantıksal işlem, örneğin Yeni Yıl Garland gibi çeşitli aydınlatma efektlerinin inşa edilmesinde yaygın olarak kullanılır. Porta örneğini düşünün

Porta \u003d 0b00011111;

Porta ^ \u003d (1<<2);

PORTA \u003d\u003d 0B00011011;

Sıfır, ikinci ve altıncı bit durumunu değiştirin:

Porta \u003d 0b00011111;

Porta ^ \u003d (1<<0) | (1<<2) | (1<<6);

Porta \u003d\u003d 0b01011010;

Ayrı bir bit durumunu kontrol edin. G / Ç bağlantı noktasının incelemesinin (kayıttan farklı olarak), PIN kaydındaki verileri okuyarak gerçekleştirildiğini hatırlatayım.

En sık, kontrol, iki döngü operatöründen biri tarafından yapılır: eğer ve ise. Bu operatörlere zaten aşinuyoruz.

Mantıksal sıfır (sıfırlama) varlığı için boşalmayı kontrol etme eğer.

eğer (0 \u003d\u003d (Pind & (1)<<3)))

D bağlantı noktasının üçüncü basamağı sıfırlanırsa, CODE1 yürütülür. Aksi takdirde, kod2 gerçekleştirilir.

Benzer eylemler, böyle bir kayıt biçimiyle yapılır:

eğer (~ pind & (1)<<3))

Bir mantıksal birimin (kurulum) varlığı için boşaltın eğer.

eğer (0! \u003d (Pind & (1)<<3)))

eğer (pind & (1)<<3))

Yukarıdaki iki döngü benzer şekilde çalışır, ancak programlama dilinin C'nin esnekliği nedeniyle, farklı bir kayıt formuna sahip olabilir. Operasyon! \u003d Eşit olmadığını gösterir. PD G / Ç portunun üçüncü boşalması ayarlanmışsa (birim), değilse, kod1 yapılır.

Bir bit bekliyorum süre

süre (pind & (1)<<5))

5. Pind Kayıt Kategorisi kategorisi ayarlanırken kod1 yürütülecektir. Sıfırlama yaparken, kod2 yürütülecektir.

Batal kurulumunu bekliyorum süre

Burada, C dilinin sözdizimi, en yaygın iki yolla kod yazmanıza izin verir. Uygulamada, her iki kayıt türü de uygulanır.

Mikrodenetleyici programlamanın en önemli yönlerinden biri, kayıtlar ve bağlantı noktaları ile çalışmaktır. AVR serisi mikrodenetleyicilerin birkaç G / Ç kayıtlarına ve 32 genel amaçlı siciline sahiptir. Programcı, bir giriş / çıkış kaydına doğrudan bir numara yazamaz. Bunun yerine, genel amaçlı bir kaydıya bir numara yazmalı ve ardından bu kayıtın değerini G / Ç kaydına kopyalamanız gerekir. Çalışma kayıtları R1, R2, ..., R31 olarak belirtilmiştir.

Yazma programlarını basitleştirmek için, isim kayıtlarını vermek çok uygundur. Saklanan bilgilere karşılık gelen isimler verilmesi tavsiye edilir. Örneğin, R16 kaydı geçici bilgileri saklamak için kullanılırsa, TEMP olarak adlandırılabilir. Bu aşağıdaki gibi yapılır:

G / Ç kayıtlarını ve mikrodenetleyicinin ana kayıtlarını "aramamak" için, kullanılan mikrodenetleyici için geçerli olan başlık dosyasını bağlamak için programın başında yeterlidir. Şunlar. Bağlantı noktası, zamanlayıcı / sayaç vb. Bağlantılarının isimlerini vermek zorunda kalmayacaktır. Örneğin, program AT90S8515 mikrodenetleyici için tasarlanmışsa:

"8515def.inc" dahil

AT90S1200 mikrodenetleyici için, ilk AVR mikrodenetleyicisi için, giriş / çıkış kaydı, 0 $ ila 3F (MK modeline bağlıdır) sayılara sahiptir. Ayrı olarak, PORT G / Ç Kayıtlarını, Pinb, Portd, Pind'u seçebilirsiniz (1200def.inc'u bağladıktan sonra alfabetik gösterime sahiptirler ve adresleri 18 $, 16, 12 $, 10 $ - Dijital sabitleri tutmak çok zor kafamda, daha kolay harf isimleri). En son mikrodenetleyiciler AVR limanları çok daha büyük, onlar A, B, C, D, E olarak adlandırılır ...

Popüler mikrodenetleyici attiny2313 bulgularının yerini düşünün. Bacaklar 2-9, 11, PD0 - PD7 adları ile birlikte, B bağlantı noktasına benzer olan Port D'dir. B, B portunun sekiz bit olduğunu ve D L portunun yedi olduğunu unutmayın.

Bağlantı noktaları girdi olarak ve çıkış olarak çalışabilir. Bağlantı noktası bir giriş olarak çalışırsa, o zaman değerleri saymak için, PINB veya PIND Kayıtlarına - hangi bağlantı noktasının okunmasına bağlı olarak erişmeniz gerekir. Bazı çamlar günlüğe karşılık gelen yüksek seviyelerse. "1", daha sonra okunan değerlerdeki karşılık gelen bitler "1" olarak yüklenecektir. Sonuçlar 20 mA'ya kadar akımlara dayanabilir, ancak limanın tüm limanlarının toplam akımını unutmaya değmez. Sınırlamalar var. Bağlantı noktası çıktıysa, bağlantı noktalarındaki değerler, karşılık gelen değeri PORTB veya PORTD bağlantı noktası kaydına kaydedilerek takılır. Bir kütük oluşturmak için. Port çıkışında "1", PORTB veya PORTD kaydındaki karşılık gelen bit yüklenmelidir.

Bağlantı noktasıyla en önemli çalışma noktası, port satırlarının giriş veya çıkışta işlemden sorumlu olan mandal kaydı ile çalışmaktır. Bu Kayıt DDRx'in adı, burada x bağlantı noktası harfidir. Bacak çıkışlarını yapmak için, karşılık gelen bitlere "1" yazmalıyız. Örneğin, bağlantı noktasının PB7 portunu girişte ve kalan bacak çıkışlarını yapmak istiyoruz, çünkü bunun için DDRB Kayıt Değeri 0B011111'e yazmanız gerekir. Önek 0b, sayının ikili formda kaydedildiği anlamına gelir. Başlarken, DDRX kayıtları sıfırlanır, yani Tüm bacaklar girdidir. Girdi yapmak için cihazda kullanılmayan bacaklar önerilir.

Bir mikrodenetleyici portu ile çalışan basit bir program düşünün:

"8515Def.Inc"; Dosyayı Register .def Temp \u003d R16 RJMP sıfırlamasına bağlayın; Sıfırla sıfırlama sırasında geçiş vektörü: LDI TEMP, 0B00000011; PC0 ve PC1'i DDRC, TEMP LDI TEMP, 0B00000001 olarak belirleyin; LED PC0On Portc'teki LED'i Temp, Pinc; LOCOP Port'tan seviyeleri okuyun:; Ana Döngüsü NOP RJMP Döngü

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

· Bit 7 - tüm kesintilerin izni. Kesme işlemlerini çözmek için, bu bit 1. duruma ayarlanmalıdır. Belirli bir kesintinin çözünürlüğü EIMSK ve TIMSK kesme kaydı tarafından gerçekleştirilir. Bu bit temizlenirse (\u003d 0), sonra kesintilerin hiçbiri işlenmez. Bit donanımı, kesmenin oluşmasından sonra silinmiştir ve ardından RETI komutu tarafından sonraki kesinti çözünürlüğü için kurulur.
· Bit 6 - Kopya koruma biti kopyalayın. BLOD ve BST bitleri Kopyalama komutları bu biti savaş sırasında bir kaynak ve alıcı olarak kullanın. Genel amacın BST komutu biti bit T'ye kopyalanır, BLD komut biti, genel amaçlı kayıt bitlerine kopyalanır.
· Bit 5 - Yarı Mannenos bayrağı. Bir dizi aritmetik işlem yaparken tetrad arasındaki transferi gösterir.
· Bit 4 - İşaretin işareti. Bit S, negatif değerin (n) bayraklarının üzerinde veya iki taşma bayrağına (V) ilavelerinin üstünde veya (n (+) v) üzerindeki bir işlemin sonucunun değerine sahiptir.

· Bit 3 - iki taşma bayrağına ek olarak. İlavelerin aritmetikliğini ikiye destekler.
· Bit 2 - Negatif değer bayrağı. Bu bayrak, bir dizi aritmetik ve mantıksal işlemin olumsuz bir sonucu olduğunu gösterir.
· Bit 1 - sıfır değer bayrağı. Bu bayrak, bir dizi aritmetik ve mantıksal işlemin sıfır bir sonucunu gösterir.
· Bit 0 - Transfer bayrağı. Bu bayrak, aritmetik ve mantıksal işlemlerin transferini gösterir.

AT90S8535 mikrodenetleyicinin 4 paralel G / Ç portu A, B, C ve D'dir.
A Port A 8 bit çift yönlü bağlantı noktasıdır. A bağlantı noktasıyla etkileşim, veri girişi / çıkış alanında üç kayıt yoluyla gerçekleştirilir: Veri Kayıtları - Porta, 1B $ (3b $), Veri Yönü Kayıt - DDRA, $ 1A ($ 3A), Giriş Veri Kaydı - Pina, 19 $ (39 $). Pina Register, yalnızca okuma olasılığını sağlar ve PORTA ve DDRA kayıtları okuma ve yazma olasılığıdır. Pina Kayıt, kelimenin tam anlamıyla bir kayıt değil. Tüm port üretiminin fiziksel durumunu okumayı sağlar. Port A ayrıca analog A / D sinyallerini girmeye yarar.

Liman Veri Kaydı A -Porta

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Liman verilerinin verilerinin kaydı a -Ddra

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Liman a -Pina.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

BOD B, 8 bit çift yönlü bir G / Ç portudur. Port ve bağlantı noktası ile olan bağlantı noktası ve etkileşimi, veri girişi / çıktı alanında üç kayıt yoluyla gerçekleştirilir: Veri Kayıtları - PORTB, 18 $ (38 $), Veri Yönü Kayıt - DDRB, 17 $ (37 $) ve Giriş Kayıt - Pinb, 16 $ (36 $). Pinb kayıt sadece okuma sağlar. Pinb Kayıt, kelimenin tam anlamında bir kayıt değil. Tüm port üretiminin fiziksel durumunu okumayı sağlar. Bağlantı noktasının resimleri, tabloda belirtilen alternatif işlevler gerçekleştirebilir. 2.1.

Tablo 2.1. Liman bulgularının alternatif fonksiyonları

Port çıkışı

Alternatif özellik

T0 - Zamanlayıcı / Zamanlayıcı / Sayaç Kuyruk Girişi 0

T1 - Zamanlayıcı Saati Giriş / Metre 1

AIN0 - Pozitif karşılaştırıcının sonucu

AIN1 - Olumsuz karşılaştırıcının sonucu

- Giriş Seçimi SPI

MOSI - Kurulum Kurşun Çıkışı / Hız SPI Girişi

MISO - Kurulum Kurşun Giriş / Hız Çıkışı SPI

SCK - SPI Saat Sinyali

Alternatif işlevler için sonuçları kullanırken, PORTB kayıtları, DDRB buna göre kurulmalıdır.

Liman Veri KaydıB.Portb.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Bağlantı Noktası Verilerini Yönetme Kaydı B -Ddrb.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Giriş Veri Kaydı B -Pinb.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

C bağlantı noktası 8 bitlik çift yönlü bir G / Ç portudur. Ayrıca, C bağlantı noktalarıyla birlikte A ve Etkileşim Nasıl Veri Belleği / Çıkış / Çıkış Alanında gerçekleştirilir: Veri Kaydı - Portc, 15 $ (35 $), Veri Yönü Kayıt - DDRC, 14 $ ($ 34) ve Giriş Veri Kaydı - Pin, 13 $ (33 $). Pinc Kayıt, sadece okuma olasılığını sağlar ve portc ve DDRC kayıtları okuma ve yazma olasılığıdır. Pinc Kayıt, kelimenin tam anlamında bir kayıt değildir. Tüm port üretiminin fiziksel durumunu okumayı sağlar.
Sadece iki çıkışla bağlantı noktasında alternatif işlevleri yerine getirebilir: PC6 ve PC7 Sonuçları TSC1 ve TOCC2 zamanlayıcı / sayaç 2'nin işlevlerini gerçekleştirir.

Liman Veri KaydıC.Portc.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Liman verilerini yönetme kaydı c -DDRC.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Giriş Veri Kaydı C -Peynir.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Port D, 8 bit çift yönlü bir G / Ç portudur. Ayrıca, A, B portlarında olduğu gibi, D, D Veri girişi / çıkış alanındaki üç kayıt sayesinde, veri girişi / çıkış alanındaki üç kayıtla olduğu gibi: Veri Kaydı - PORTDD, 12 $ (32 $), Veri Yönü Kayıt - DDRD, 11 $ (31 $) ve Giriş Kayıt Ol - Pind, 10 $ (30 $). Pind Kayıt, okuma ve PORTD ve DDRD kayıtları okuyor ve yazıyor. Pind Kayıt, kelimenin tam anlamında bir kayıt değil. Tüm port üretiminin fiziksel durumunu okumayı sağlar.
Port D Sonuçlar Tabloda belirtilen alternatif işlevler gerçekleştirebilir. 2.2.

Tablo 2.2. Liman Sonuçlarının Alternatif İşlevleri D

Port çıkışı

Alternatif özellik

RXD - UART Alıcı Girişi

TXD - UART Verici çıkışı

INT0 - Harici kesme girişi 0

INT1 - açık kesme girişi 1

OC1B - Zamanlayıcı / sayacın çıkış karşılaştırması 1

OC1A - Çıkış karşılaştırması ve zamanlayıcı / sayaç 1

ICP - Zamanlayıcı Yakalama Tetik Girişi 1

OC2 - Zamanlayıcı / Sayaç Çıkışı Karşılaştırma Çıkışı 2

Alternatif işlevler için çıkışlar kullanırken, PORTD, DDRD kayıtları buna göre kurulmalıdır.

Liman Veri KaydıD.Portd.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Port verilerinin kaydıD.DDRD.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Port girişi kaydıD.Pind.

Bit

Okuma yazma

Başlangıç \u200b\u200bdeğeri

Önce dikkat çeken ilk kişi olduğundan, tüm öğrenciler ilk önce öğrenci becerilerinin laboratuar kompleksiyle birlikte çalışması için aynı işi yapar. İşlerinden, PEVM'ye, 1.5.3.1.1.1.1.1.1.1.1.1.1.1.1. Programı derledikten sonra, işyeri mikrodenetleyicisine yazılmıştır ve çalışmaları öğretmen tarafından gösterilmiştir.
Kompleks ile böyle bir tanıdıktan sonra, öğrenci bireysel bir görevi gerçekleştirmeye başlar. Zaman varlığında, öğretmen bireysel görevi zorlaştırabilir.