Ассемблер дээр avr програмчлал. Ассемблер хэл дээр Atmel AVR микроконтроллеруудын практик програмчлал. (3 дахь хэвлэл). Грек загварын электрон хэрэгсэл


Тиймээс, ухамсартай уншигч аль хэдийн програмист, туршилтын самбарыг цуглуулж, шаардлагатай програм хангамжийг суулгаж, тохируулсан гэж найдаж байна.

Одоо цувралын эхний нийтлэлийг бичсэний дараа би бага зэрэг догдолж, өмнөх үеийнхнийхээ адил алдаа гаргаж, "эхлэн суралцагчдад" гэсэн хэллэг хийснээ ойлгож байна. "Ассемблер хэлний програмчлалын эхлэгчдэд" гэсэн сэдвийг томъёолох нь илүү зөв байх болно, өөрөөр хэлбэл уншигч микроконтроллер гэж юу болох талаар ядаж өнгөц ойлголттой болсон гэж би бодож байна, эс тэгвээс бидэнд маш их цаг хугацаа шаардагдах болно. энэ сэдэвтэй танилцана уу. Тэднийг огт мэддэггүй хүмүүст би С.Рюмикийн "AVR микроконтроллерууд" цуврал нийтлэлийг санал болгож болно, энэ нь миний бодлоор үнэхээр гайхалтай бөгөөд Radioamator сэтгүүлд хэвлэгдсэн (2005 оны №1-11) . Энэ мөчлөгт ATmega8-ийг үндсэн хянагчаар сонгосон боловч дээр дурдсан хянагч болон ATtiny13-ийн ерөнхий функциональ нэгжүүд бараг ижил байна.

ATtiny13 микроконтроллертой шууд танилцахын тулд би A.V.-ийн номыг санал болгож байна. Евстифеева "Микроконтроллерууд" AVR гэр бүлжижигхэн. Хэрэглэгчийн гарын авлага" (М.: "Додека-XXI" хэвлэлийн газар, 2007. - 432 х.). Энэ нь өчүүхэн гэр бүлийн контроллеруудын бүх хүрээний орчуулсан, системчилсэн мэдээллийн хуудсыг агуулдаг бөгөөд миний бодлоор ширээний компьютер байх ёстой. Микроконтроллер програмчлалын чиглэлээр ажилладаг хүмүүст зориулж уншина уу.

Гэсэн хэдий ч, үйл явдал өрнөх тусам би бичсэн программуудад ашиглагдах эдгээр зангилаа, хянагчийн модулиудын талаар зарим мэдээллийг өгөх болно.

Гэхдээ энэ бүхэн бол уянгын хазайлт юм. Шууд түүх рүүгээ буцъя.

ATtiny13 хянагч нь жижиг хэмжээтэй хэдий ч маш сайн функциональ шинж чанартай байдаг. Мөн цөөн тооны тээглүүр нь тус бүрийн гүйцэтгэдэг функцүүдийн тоогоор нөхөгддөг. Зүүгүүдийн зүү ба тайлбарыг доор үзүүлэв.

Хүснэгтийг дээр дурдсан А.В. Евстифеева.

Таны харж байгаагаар тээглүүр бүр дор хаяж гурван функц, эсвэл бүр олон функцийг гүйцэтгэж чадна. Эхлээд бид өөр функцуудыг авч үзэхгүй, харин зөвхөн үндсэн нэг болох тоон оролт/гаралтыг авч үзэх болно.

Зураг болон хүснэгтээс харахад цахилгаан зүүг эс тооцвол бүх зүү нь PB нэртэй, дараа нь серийн дугаартай байна. Энэ юу гэсэн үг вэ? Хялбар ажиллахад хялбар болгох үүднээс бүх хянагч зүүг 8 хэсэг болгон нэгтгэсэн бөгөөд 8 зүү бүхий бүлэг тус бүрт гурван тусгай оролт гаралтын бүртгэлийг хуваарилдаг. Ер нь хянагчтай, ялангуяа ассемблертэй ажиллахад регистр гэдэг ойлголт чухал байдаг. Дээр дурдсан гурван бүртгэл тус бүрийг нарийвчлан авч үзье. Эдгээр нь бүгд хянагчийн санах ойн нэг байт эсүүд юм. Бит бүр нь хянагчийн гаралтын аль нэгтэй тохирч, регистр дэх битийн дугаар нь гаралтын дугаартай давхцдаг (жишээлбэл, 0-р бит нь PB0 гаралтыг, 1-р бит нь PB1 гаралтыг хариуцдаг гэх мэт). Бүх регистрүүд өөрийн гэсэн нэртэй байдаг бөгөөд түүгээрээ програм бичихдээ ханддаг. Эдгээр нь ямар нэрс вэ?

1. DDRB регистр нь хянагчийн зүү тус бүрийн мэдээлэл дамжуулах чиглэлийг хариуцна. Хэрэв энэ регистрийн аль нэг бит нь "0" байвал харгалзах гаралт нь оролт, "1" бол гаралт болно. Түүнчлэн, гаралт бүрийг тусад нь болон програмын хаана ч тохируулдаг. Энэ нь өөр өөр нөхцөлд эсвэл өөр өөр цаг үед ижил зүүг бусад зүүгээс үл хамааран оролт эсвэл гаралт болгон тохируулах боломжтой гэсэн үг юм.

2. PINB регистр нь бүх зүүнүүдийн одоогийн төлөвийг агуулна: хэрэв зүү дээр хүчдэл өгсөн бол харгалзах бит дээр логик "1", хүчдэл байхгүй бол логик "0" гэж бичнэ. Энэ регистрийг голчлон оролтын горимд байгаа тээглүүрийн төлөвийг уншихад ашигладаг.

3. PORTB регистр нь мэдээлэл дамжуулах чиглэлээс хамааран давхар үүрэг гүйцэтгэдэг. Хэрэв зүү нь дижитал гаралт хэлбэрээр ажилладаг бол PORTB регистрийн аль нэг бит дээр "1" гэж бичвэл харгалзах зүү дээр хүчдэл гарч ирэх ба "0" гэж бичвэл хүчдэл алга болно. Тиймээс гаралтын горимд энэ бүртгэл нь зүү бүрийн төлөвийг тодорхойлдог. Тоон оролтын горимд дурын битэд логик "1" бичих нь угсарсан татах резисторыг харгалзах зүү рүү холбож, "0" гэж бичихэд идэвхгүй болгодог. Энэ "татах резистор" гэж юу вэ, энэ нь юунд зориулагдсан бэ? Хэрэв зүү нь дижитал оролтын үүрэг гүйцэтгэдэг бол оролтын буферийн эсэргүүцэл нэлээд өндөр, оролтын гүйдэл бага байна. Тиймээс аливаа цахилгаан хөндлөнгийн оролцоо нь гаралтыг дурын төлөвт аяндаа шилжүүлэхэд хүргэдэг. Үүнээс урьдчилан сэргийлэхийн тулд оролт ба тэжээлийн эх үүсвэрийн хооронд хэдэн арван кило-ом эсэргүүцэлтэй резисторыг холбож, оролтын потенциалыг тэжээлийн хүчдэлд "татах" (тиймээс нэр). Энэ резистороор урсаж буй гүйдэл нь хэлхээний бусад хэсэгт саад болохгүй, харин зүүг санамсаргүйгээр солихоос сэргийлж хангалттай том байна. Товчлууртай ажиллахдаа бид татах резисторыг ихэвчлэн ашиглах болно, учир нь тэдгээр нь дарагдаагүй үед холбогдсон зүү нь агаарт "өлгөөтэй" бөгөөд хөндлөнгийн нөлөөнд автдаг.

Ачаалах үед бүх регистрүүд 0-д дахин тохируулагдсан бөгөөд зүү тус бүр нь татах резисторгүйгээр дижитал оролтын үүрэг гүйцэтгэдэг гэдгийг тэмдэглэх нь зүйтэй.

Одоо бид хянагч оролттой ажиллахад ЮУ хэрэгтэй байгаа талаар дор хаяж тодорхой ойлголттой болсон тул тэдэнтэй ХЭРХЭН ажиллахаа олж мэдэх цаг болжээ.

Эхнийхээ бичье ажлын хөтөлбөрассемблер дээр. Нэгдүгээрт, би шинэ төсөл үүсгэх бүрэн алгоритмыг өгөх болно, гэхдээ ирээдүйд би үүнийг орхиж, зөвхөн програмын текст дээр анхаарлаа хандуулах болно.

1. Asm фолдер руу орж шинэ хавтас үүсгэнэ үү. Бидэнд тохиромжтой нэрээр нэрийг нь өөрчил. Тодорхой болгохын тулд би тэднийг алхамын дугаараар нь дурдах болно. Энэ тохиолдолд "2-р алхам".

2. build.bat файл дээр хулганы баруун товчийг дараад эх файл руу очих замыг шинээр үүсгэсэн хавтас руу заана (алхам 2). Үүний дараа миний контент дараах байдалтай байна.

"F:\Prog\AVR\asm\avrasm32 -fI %F:\Prog\AVR\asm\step2\main.asm
түр зогсоох"

Энэ нь таны архивыг хаана задлахаас шалтгаалж өөр байж болно.

3. Asmedit хавтас руу орж ASM_Ed.exe програмыг ажиллуул

4. Нээгдэх цонхонд програмын текстийг бичнэ. Энэ нь бидний өнөөдрийн болон дараагийн хичээлүүдийн гол зүйл учраас би энэ талаар илүү дэлгэрэнгүй ярих болно.

Ассемблер програмын текст гэж юу вэ? Энэ нь тодорхой дүрмийн дагуу бичигдсэн хэд хэдэн элементүүдийг агуулж болно:

Зааврын синтаксаас хамааран операндтай эсвэл операндгүй угсрах заавар. Тушаалын нэр болон эхний операндын хооронд хоосон зай, таб эсвэл аль алиных нь аль нэг нь байх ёстой. Операндууд нь таслалаар тусгаарлагдах бөгөөд үүний өмнө эсвэл дараа нь дурын тооны зай эсвэл таб байж болно;

Заавар тус бүр нь "." -ээр эхэлдэг;

Хэрэглэгчийн дур зоргоороо нэрлэсэн программын газруудад шилжих шаардлагатай байж болох шошгууд. Шошго бүр ":" тэмдэгтээр төгсдөг;

";"-ээр эхэлсэн сэтгэгдэл. Hex файл үүсгэх үед тайлбарын эхнээс мөрний төгсгөл хүртэлх бүх текстийг үл тоомсорлож, бүрэн дур зоргоороо байж болно;

Хөтөлбөрийн бүтэц, уншихад хялбар болгох үүднээс хоосон мөрүүд.

Мөр бүрт нэгээс илүү команд байж болохгүй. Гэсэн хэдий ч тушаал, тайлбар бүхий мөрөнд шошго нэгэн зэрэг байхыг зөвшөөрдөг.

Эдгээр дүрмүүдийг ашиглан бид SB1 товчлуурыг дарсан үед LED2-г асаах, товчлуурыг сулласан тохиолдолд унтраах програм бичнэ. Хөтөлбөрийн текстийг доор үзүүлэв.

.include "F:\Prog\AVR\asm\Appnotes\tn13def.inc"
sbi DDRB, 4 ;РВ4 - гаралт (LED2)
sbi PORTB, 2 ; PB2 дээрх татах резисторыг асаана уу (SB1 товчлуур)
sbic PINB, 2 ;Хэрэв PB2=0 (товчлуур дарагдсан) бол дараагийнхыг алгасана уу. шугам
sbi PORTB, 4 ; PB4-ийг 1-д суулгаж байна (LED-ийг унтраах)
sbis PINB, 2 ;Хэрэв PB2=1 (товчлуур суллагдсан) бол дараагийнхыг алгасана уу. шугам
cbi PORTB, 4 ;PB4-г 0 болгож тохируулах (LED асаалттай)

Үүнийг илүү нарийвчлан авч үзье. Эхний мөрөнд дээрх дүрмийн дагуу эхэнд нь цэг тавьж бичсэн "include" зааврыг агуулна. Үүний зорилго нь ард заасан файлыг програмын текстэд оруулах явдал юм. Эхний алхам дээр хэлсэнчлэн бидэнд "tn13def.inc" файл хэрэгтэй болно. Энэ мөрөнд та өөрийн компьютер дээрх Appnotes хавтасны байршлыг өөрчлөх шаардлагатай болно. Бид яагаад энэ файлыг оруулах шаардлагатай байна вэ? Сонирхолтой уншигч үүнийг судалж, агуулгыг нь уншиж болно, гэхдээ тэр үүнийг эхлээд бага зэрэг ойлгох болно. Одоохондоо энэ нь ассемблерийн анхдагчаар мэддэггүй регистрүүдийн нэрс, хянагч дахь физик хаягуудын хоорондох захидал харилцааг агуулдаг гэж би хэлэх болно.

Дараах мөрүүд нь ассемблер командууд юм. Анхааралтай уншигч нийт дөрвөн өөр команд ашиглагдаж байгааг анзаарах болно. Тус бүрийн зорилгыг харцгаая.

sbi заавар нь хоёр операндтай: эхнийх нь регистрийн нэр, хоёр дахь нь битийн дугаар юм. Гүйцэтгэлийн үр дүнд заасан бүртгэлд заасан битийг "1" болгож тохируулна.

cbi команд нь дээрхтэй ижил төстэй синтакс бөгөөд яг эсрэг функцийг гүйцэтгэдэг - энэ нь заасан регистрийн заасан битийг "0" болгож тохируулдаг.

sbis команд нь дээрхтэй ижил төстэй синтакс юм. Гэхдээ тэднээс ялгаатай нь регистрүүдтэй ямар нэгэн үйлдэл хийдэггүй, зөвхөн заасан регистрийн заасан битийн төлөвийг шалгах ба хэрэв "1"-тэй тэнцүү бол командын дагуу мөр алгасах болно. Үгүй бол түүнийг дагаж мөрдөж байгаа мөр, мөн түүний араас бусад бүх мөрийг гүйцэтгэнэ.

sbis команд нь sbis командын эсрэг юм. Хэрэв заасан регистрийн бит "0" байвал дараагийн мөрийг алгасах болно.

Одоо дээр дурдсан бүх зүйлийг нэгтгэн дүгнэж, програмын алгоритмыг ойлгохыг хичээцгээе. Эхлэхийн тулд би үүнийг шууд утгаараа мөр мөрөөр нь хийх болно.

1 мөр. Оруулах заавар нь регистрийн тодорхойлолтыг агуулсан tn13def.inc файлыг агуулдаг.

2-р мөр. sbi команд нь DDRB регистрийн 4-р битийн "1"-ийг тохируулж, PB4 зүүг гаралт руу шилжүүлдэг. Хэрэв та самбарын диаграммыг харвал (өмнөх алхамын 1-р зураг) LED2 энэ зүүтэй холбогдсон болохыг харж болно. Тушаал болон тэмдгийн дараа ";" мөрөнд гүйцэтгэсэн үйлдлийн утгыг товч тайлбарласан тайлбар бичсэн байна.

3 мөр. Үүнтэй ижил sbi тушаал нь PORTB регистрийн 2-р битийн "1"-ийг тохируулж, дотоод татах резисторыг SB1 товчлуурыг холбосон PB2 зүүтэй холбодог. Бид DDRB регистрийн 2-р битийн төлөвийг өөрчлөөгүй тул энэ зүү нь оролт хэвээр үлдэх бөгөөд энэ нь бидэнд хэрэгтэй зүйл юм.

4 мөр. sbic команд нь PINB бүртгэлийг ашиглан PB2 оролтод логик "0" байгаа эсэхийг шалгадаг. Хэрэв та диаграммыг анхааралтай ажиглавал товчлуурууд дарагдсан үед холбогдох терминалыг нийтлэг утсаар хааж байгааг харж болно. Энэ нь стандарт техник юм, учир нь товчлуурыг суллахад татах резисторын улмаас гаралт дээр логик "1" гарч ирдэг бөгөөд товчлуурыг дарахад товчлуурын холболтын улмаас логик "0" гарч ирдэг. нийтлэг утас руу гарна. Тиймээс, хэрэв PB2 зүү дээр логик "0" байвал, өөрөөр хэлбэл товчлуур дарагдсан бол бид дараагийн мөрийг алгасаж, товчлуурыг суллавал бид гүйцэтгэнэ.

5 мөр. Үүнд sbi команд нь PORTB регистрийн 4-р битэд логик "1"-ийг тогтоож, LED2-г унтраадаг. Хэрэв бид гаралтанд хүчдэл өгөх юм бол LED яагаад унтардаг талаар ухаалаг уншигч гайхаж магадгүй юм. Хариулт нь дизайнд оршдог. LED нь анодыг цахилгаан утас руу, катодыг хянагчийн гаралт руу холбодог. Тиймээс хэрэв та гаралтанд хүчдэл өгөх юм бол анод ба катодын потенциал тэнцүү байх ба LED унтарна. Хэрэв гаралтад логик "0" гарвал LED-д хүчдэл өгч, асна. Тиймээс 4 ба 5-р хос мөр нь товчлуурыг суллахад LED2-г унтраадаг.

6 мөр. Утга нь 4-ийн эсрэг байна. sbis тушаал нь PB2 оролт дээр логик "1" байгаа эсэхийг шалгадаг, өөрөөр хэлбэл товчлуурыг сулласан эсэхийг шалгадаг. Хэрэв товчлуурыг суллавал дараагийн мөр алгасаад дараагийн мөр нь дараагийнх руу шилжинэ. Харин 7-р мөр нь сүүлчийнх учраас 2-р мөрөнд шилждэг. Хэрэв товчлуур дарвал 7-р мөрийг гүйцэтгэнэ.

7 мөр. 5-ын эсрэг талд. cbi команд нь PORTB регистрийн 4-р битийг "0" болгож, LED2-г асаана. Тиймээс SB1 товчлуурыг дарахад 6 ба 7-р хос шугам LED2-г асаана.

Таны харж байгаагаар бид тийм ч төвөгтэй зүйл хийгээгүй. Зөвхөн 3 регистр, 4 зааврын мэдлэгийг ашиглан бид анхны програмаа бичсэн. Дараа нь түүнтэй юу хийх вэ? Хэрэв та мартаагүй бол бид програмыг үүсгэх алгоритмыг үргэлжлүүлэн бичиж байна.

5. Редакторын цонхонд програмын текстийг бичээд "Файл" цэсийн зүйлийг сонгоод нээгдэх жагсаалтаас "Хадгалах ..." дээр дарна уу. Файл хадгалах цонхноос бидний үүсгэсэн step2 хавтсыг сонгоод "main" файлын нэрийг зааж өгнө үү, учир нь энэ нь бидний "build.bat" файлд заасан нэр юм.

Хадгалсны дараа програмын цонх дараах байдлаар харагдах ёстой.

6. Hex файл үүсгэнэ. Үүнийг хийхийн тулд хэрэгслийн самбар дээрх "II" товчийг дарна уу. Дараах цонх гарч ирэх ёстой.

Энэ нь угсрах ажлыг алдаагүй хийж, "main.hex" програмын файлыг 6 үг, өөрөөр хэлбэл 12 байтаар үүсгэсэн болохыг бидэнд мэдэгдэж байна. Би үүнийг тэмдэглэж байна ижил төстэй програмСи хэл дээр дор хаяж 5 дахин их хэмжээтэй байх болно.

7. Step2 хавтас руу орсны дараа бид шинээр үүсгэсэн main.hex файл хэлбэрээр нэмэлтийг олдог бөгөөд үүнийг одоо ямар ч програмистаар хянагч руу оёж болох бөгөөд үр дүнг харахын тулд үүнийг хийх ёстой. бидний бичсэн програм. Хянагчийг анивчсаны дараа хэлхээг зөв угсарсан бол бүх зүйл бидний боловсруулсан алгоритмын дагуу ажиллах ёстой: товчлууруудыг суллахад LED2 унтарч, SB1 товчлуурыг дарахад асаалттай байх ёстой.

Дараагийн алхамын өмнө би танд дараах ажлуудыг хийхийг санал болгож байна.

1. SB2 товчлуурыг эсрэг алгоритмаар дарах боловсруулалтыг программд нэмнэ: SB2 товчлуурыг суллахад LED1 асч, дарагдсан үед унтарсан байх ёстой.

2. Хоёр товчлуурыг ашиглан LED2-г удирдах програм бич. SB1 товчлуурыг дарахад LED нь асч, SB2 товчлуурыг дарах хүртэл асаалттай байх ёстой бөгөөд энэ нь SB1-ийг дараагийн дарах хүртэл унтраадаг.

Хөрвүүлэгч орчуулдаг эх кодуудассемблер хэлнээс объектын код хүртэл. Үүссэн объектын кодыг ATMEL симулятор дээр ашиглаж болно AVR Studio, эсвэл ATMEL AVR In-Circuit Emulator дээр. Хөрвүүлэгч нь мөн AVR микроконтроллерт шууд програмчлах боломжтой кодыг үүсгэдэг.

Хөрвүүлэгч нь холбох шаардлагагүй кодыг үүсгэдэг.

Хөрвүүлэгч доор ажилладаг Microsoft Windows 3.11, Microsoft Windows95 болон Microsoft Windows NT. Үүнээс гадна MS-DOS-д зориулсан консол хувилбар байдаг.

Гэр бүлийн зааврын багц AVR микроконтроллеруудЭнэ баримт бичигт товч тайлбарласан тул дэлгэрэнгүй зааврыг өөрийн микроконтроллерын бүрэн заавар, баримт бичгээс авна уу.

Эх кодууд

Хөрвүүлэгч нь заавар, шошго, удирдамж агуулсан эх файлуудтай ажилладаг. Заавар, заавар нь ихэвчлэн нэг буюу хэд хэдэн операндтой байдаг.

Кодын мөр нь 120 тэмдэгтээс урт байж болохгүй.

Аливаа мөр нь хоёр цэгээр төгссөн тэмдэгтүүдийн мөр болох шошгоор эхэлж болно. Шилжилтийн үед хяналтыг шилжүүлэх газрыг зааж өгөхийн зэрэгцээ хувьсагчийн нэрийг зааж өгөхөд шошго ашигладаг.

Оролтын мөр нь дөрвөн хэлбэрийн аль нэгийг авч болно:

[шошго:] удирдамж [операндууд] [Сэтгэгдэл][шошго:] заавар [операндууд] [Сэтгэгдэл]СэтгэгдэлХоосон мөр

Сэтгэгдэл нь дараах хэлбэртэй байна.

; [Текст]

Дөрвөлжин хаалт доторх байрлал нь сонголттой. Цэг таслал (;)-ын дараа, мөрийн төгсгөл хүртэлх текстийг хөрвүүлэгч үл тоомсорлодог. Шошго, заавар, зааврыг доор дэлгэрэнгүй тайлбарласан болно.

Жишээ нь:

шошго: .EQU var1=100 ; var1-ийг 100 болгож тохируулна (Энэ бол заавар) .EQU var2=200 ; var2-г 200 болгож тохируулна

тест: rjmp тест; Төгсгөлгүй гогцоо (Энэ бол заавар юм); Зөвхөн нэг сэтгэгдэлтэй мөр

; Сэтгэгдэлтэй өөр нэг мөр

Хөрвүүлэгч нь мөрийн тодорхой баганад шошго, заавар, тайлбар, зааварчилгааг шаарддаггүй.

avr процессорын заавар

Доорх нь AVR процессоруудад зориулсан командуудын багц бөгөөд тэдгээрийн илүү нарийвчилсан тайлбарыг AVR мэдээллийн номноос олж болно.

Арифметик ба логик заавар

Мнемоник

Операндууд

Тодорхойлолт

Үйл ажиллагаа

Тугнууд

Цикл

Rd,Rr

Авахгүйгээр нэгтгэн дүгнэх

Rd,Rr

Ачаатай нэгтгэн дүгнэх

Rd = Rd + Rr + C

Rd,Rr

Зөөвөрлөхгүйгээр хасах

Rd,K8

Тогтмолыг хасах

Rd,Rr

Зөөврийн тусламжтайгаар хасах

Rd = Rd - Rr - C

Rd,K8

Тогтмолыг зөөвөрлөж хасах

Rd = Rd - K8 - C

Rd,Rr

Логик БА

Rd,K8

Логик БА тогтмол

Rd,Rr

Логик OR

Rd,K8

Тогтмолтой логик OR

Rd,Rr

Логик онцгой OR

Битийн урвуу

Тэмдгийн өөрчлөлт (Нэмэлт код)

Rd,K8

Бүртгэлд бит(үүд) тохируулах

Rd,K8

Бүртгэл дэх бит(үүд)-ийг арилгах

Rd = Rd ($FF - K8)

Бүртгэлийн утгыг нэмэгдүүлэх

Бүртгэлийн утгыг багасгах

Тэг эсвэл сөрөг байгаа эсэхийг шалгаж байна

Бүртгэлийг арилгах

Бүртгэлийг тохируулах

Rdl,K6

Тогтмол ба үг нэмнэ үү

Rdh:Rdl = Rdh:Rdl + K6

Rdl,K6

Үгнээс тогтмолыг хас

Rdh:Rdl = Rdh:Rdl - K 6

Rd,Rr

Тэмдэглэгдээгүй тоог үржүүлэх

R1:R0 = Rd * Rr

Rd,Rr

Гарын үсэг зурсан тоог үржүүлэх

R1:R0 = Rd * Rr

Rd,Rr

Гарын үсэг зурсан тоог тэмдэггүй тоогоор үржүүлэх

R1:R0 = Rd * Rr

Rd,Rr

Тэмдэггүй бутархайг үржүүлэх

R1:R0 = (Rd * Rr)<< 1

Rd,Rr

Тэмдэглэсэн бутархайг үржүүлэх

R1:R0 = (Rd *Rr)<< 1

Rd,Rr

Тэмдэгт бутархайг тэмдэггүй тоогоор үржүүлэх

R1:R0 = (Rd * Rr)<< 1

Салбарын заавар

Мнемоник

Операндууд

Тодорхойлолт

Үйл ажиллагаа

Тугнууд

Цикл

Харьцангуй шилжилт

(-д шууд бус шилжих) З)

Өргөтгөсөн шууд бус шилжилт ( З)

STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND

Харьцангуй дэд программын дуудлага

STACK = PC+1, PC = PC + k + 1

Шууд бус дуудлага ( З)

STACK = PC+1, PC = Z

Өргөтгөсөн шууд бус дуудлага ( З)

STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND

Дэд програмыг дуудаж байна

STACK = PC+2, PC = k

Дэд хөтөлбөрөөс буцах

Тасалдлаас буцах

Rd,Rr

Харьцуулах, тэнцүү бол алгасах

хэрэв (Rd ==Rr) PC = PC 2 эсвэл 3

Rd,Rr

Харьцуулах

Rd,Rr

Шилжүүлэгтэй харьцуул

Rd,K8

Тогтмолтой харьцуул

Rr,б

Бүртгэлийн бит арилсан бол алгасах

if(Rr(b)==0) PC = PC + 2 эсвэл 3

Rr,б

Бүртгэлийн бит тохируулагдсан бол алгасах

if(Rr(b)==1) PC = PC + 2 эсвэл 3

П,б

Хэрэв порт дахь бит арилсан бол алгасна уу

хэрэв(I/O(P,b)==0) PC = PC + 2 эсвэл 3

П,б

Хэрэв портын бит тохируулагдсан бол алгасах

хэрэв(I/O(P,b)==1) PC = PC + 2 эсвэл 3

с,к

SREG дахь туг арилгасан бол үсрэх

if(SREG(s)==0) PC = PC + k + 1

с,к

SREG-д туг тавьсан бол оч

if(SREG(s)==1) PC = PC + k + 1

Тэнцүү байвал яв

хэрэв(Z==1) PC = PC + k + 1

Хэрэв тэнцүү биш бол алгасах

хэрэв(Z==0) PC = PC + k + 1

Шилжүүлгийг суулгасан бол оч

хэрэв(C==1) PC = PC + k + 1

Шилжүүлэг арилсан бол оч

хэрэв(C==0) PC = PC + k + 1

Тэнцүү эсвэл их бол үсрэх

хэрэв(C==0) PC = PC + k + 1

Хэрэв бага бол алгасах

хэрэв(C==1) PC = PC + k + 1

Хасах бол яв

хэрэв(N==1) PC = PC + k + 1

Нэмсэн бол яв

хэрэв(N==0) PC = PC + k + 1

Тэнцүү эсвэл их бол үсрэх (гарын үсэг зурсан)

хэрэв(S==0) PC = PC + k + 1

Бага бол үсрэх (гарын үсэг зурсан)

хэрэв(S==1) PC = PC + k + 1

Хэрэв дотоод зөөвөрлөгчийн тугийг тохируулсан бол үсрэх

хэрэв(H==1) PC = PC + k + 1

Хэрэв дотоод зөөвөрлөх туг арилсан бол үсрэх

хэрэв(H==0) PC = PC + k + 1

Хэрэв T туг тавьсан бол үсрэх

хэрэв(T==1) PC = PC + k + 1

Хэрэв T туг арилсан бол үсрэх

хэрэв(T==0) PC = PC + k + 1

Хэрэв халих тугийг тохируулсан бол үсрэх

хэрэв(V==1) PC = PC + k + 1

Хэрэв халих туг арилсан бол үсрэх

хэрэв(V==0) PC = PC + k + 1

Хэрэв тасалдлыг идэвхжүүлсэн бол оч

хэрэв(I==1) PC = PC + k + 1

Хэрэв тасалдлыг идэвхгүй болгосон бол оч

хэрэв(I==0) PC = PC + k + 1

* Өгөгдөл хандалтын үйлдлүүдийн хувьд дотоод өгөгдлийн санах ойд хандах үед циклийн тоог зааж өгдөг бөгөөд гадаад RAM-тай ажиллахад буруу байна. CALL, ICALL, EICALL, RCALL, RET болон RETI зааврын хувьд 16 битээс бага (програмын санах ойн хэмжээ 128 КБ) компьютерийн удирдлагад хүлээх бүрт гурван цикл дээр хоёр цикл нэмэх шаардлагатай. 128КБ-аас их програмын санах ойтой төхөөрөмжүүдийн хувьд хүлээх бүрт таван цикл, гурван цикл нэмнэ.

Өгөгдөл дамжуулах заавар

Мнемоник

Операндууд

Тодорхойлолт

Үйл ажиллагаа

Тугнууд

Цикл

Rd,Rr

Бүртгэлийг хуулах

Rd,Rr

Хэд хэдэн бүртгэл хуулж ав

Rd+1:Rd = Rr+1:Rr, r,d тэгш

Rd,K8

Тогтмол ачаалал

Rd,к

Rd,X

Rd,X+

Rd = (X), X=X+1

Rd,

X=X-1, Rd = (X)

Rd,Ю

Rd,Y+

Rd = (Y), Y=Y+1

Rd,

Y=Y-1, Rd = (Y)

Rd,Ю+q

Rd,З

Rd,Z+

Rd = (Z), Z=Z+1

Rd,

Z=Z-1, Rd = (Z)

Rd,З+q

Шууд хадгалах

X,Rr

Шууд бус хадгалалт

X+,Rr

(X) = Rr, X=X+1

,Rr

Ю,Rr

Шууд бус хадгалалт

Y+,Rr

Дараах өсөлттэй шууд бус хадгаламж

(Y) = Rr, Y=Y+1

,Rr

Урьдчилан бууруулсан шууд бус хадгалалт

Y=Y-1, (Y) = Rr

Ю+q,Rr

З,Rr

Шууд бус хадгалалт

Z+,Rr

Дараах өсөлттэй шууд бус хадгаламж

(Z) = Rr, Z=Z+1

,Rr

Урьдчилан бууруулсан шууд бус хадгалалт

Z=Z-1, (Z) = Rr

З+q,Rr

Орлуулах замаар шууд бус хадгалалт

R0 = ( З)

Rd,З

Rd = ( З)

Rd,Z+

Rd = ( З), Z=Z+1

R0 = (RAMPZ: З)

Rd,З

Rd = (RAMPZ: З)

Rd,Z+

Rd = (RAMPZ: З), Z = Z+1

Програмын санах ойд хадгалж байна

(З) = R1:R0

Програмын санах ой дахь өргөтгөсөн санах ой

(RAMPZ: З) = R1:R0

Rd,П

Унших порт

П,Rr

Порт руу бичнэ үү

Бүртгэлийг стек рүү түлхэж байна

Стекээс регистр гаргаж байна

* Өгөгдөл хандалтын үйлдлүүдийн хувьд дотоод өгөгдлийн санах ойд хандах үед циклийн тоог зааж өгдөг бөгөөд гадаад RAM-тай ажиллахад буруу байна. LD, ST, LDD, STD, LDS, STS, PUSH, POP заавруудын хувьд та хүлээх бүрт нэг цикл нэмэх ёстой.

Биттэй ажиллах заавар

Мнемоник

Операндууд

Тодорхойлолт

Үйл ажиллагаа

Тугнууд

Цикл

Логик зүүн шилжилт

Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7)

Логик баруун тийш шилжих

Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0)

C-ээр зүүн тийш эргүүлнэ үү

Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7)

C-ээр баруун тийш эргүүлнэ

Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0)

Арифметик баруун тийш шилжих

Rd(n)=Rd(n+1), n=0,...,6

Тэмдэглэлийн дэвтрийг дахин засах

Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0)

Туг тавих

Төрийн далбааг цэвэрлэж байна

П,б

Порт дээр бит тохируулах

П,б

Порт дахь тодорхой бит

Rr,б

Rd,б

Т-ээс битийг регистр рүү ачаална

Зөөвөрлөх туг тавих

Зөөврийн далбааг арилга

Сөрөг тооны тугийг тохируулна уу

Сөрөг тооны тугийг арилга

Тэг туг тавих

Тэг тугийг арилга

Тасалдлын тугийг тохируулах

Тасалдлын тугийг арилгах

Гарын үсэг зурсан дугаарын далбааг тавь

Гарын үсэг зурсан тооны тугийг арилгана уу

Халих туг тавих

Халих далбааг арилга

Туг тавих Т

T тугийг арилга

Дотоод зөөвөрлөх далбааг тавь

Дотоод зөөвөрлөх далбааг арилга

Үйл ажиллагаа байхгүй

Унтах (эрчим хүчний хэрэглээг багасгах)

Зааврын тайлбарыг үзнэ үү

Харуулын нохойг дахин тохируулж байна

Зааврын тайлбарыг үзнэ үү

Ассемблер нь том жижиг жижиг жижиг үсгийг харгалздаггүй.

Операндууд нь ийм төрлийн байж болно.

Бүгдэд нь оройн мэнд! “Ассемблер” хэмээх тухтай ертөнцөөс нэвтрүүлэг хийж байна. Энэ сэдэв нь AVR микроконтроллеруудтай холбоотой гэдгийг би нэн даруй тодруулах болно - энэ нийтлэл нь ассемблерийг өөр ажилд ашиглахыг хүссэн хүмүүст хэрэг болох эсэхийг хараахан мэдэхгүй байна. Үнэн хэрэгтээ, хэдхэн хоногийн өмнө би ассемблерийг эхнээс нь сурч эхэлсэн - би нэг төхөөрөмж хийх хэрэгтэй - энэ бүх зүйлийг өөрөө хийхээр шийдсэн. Тиймээс нэг сайхан өдөр би үүнийг ойлгосон Ассемблер сурах нь огт ашиггүй юм!Ассемблей хэлийг зөвхөн ойлгох боломжтой! Өөрөөр хэлбэл, ассемблер хэлээр программчлахыг хүсч буй бүх хүмүүст би микроконтроллер ФИЗИКАЛ хэрхэн ажилладаг талаар нарийвчлан судалж, дараа нь командын нарийн ширийн зүйлийг судлахыг зөвлөж байна.
Тиймээс, би танд эхнээс нь хэлэх жижиг цуврал нийтлэлүүдийг эхлүүлэх байх яг яажБи ассемблер хэлний програмчлалын зарим зүйлийг ойлгосон - Би ASM гэж юу болохыг огт ойлгодоггүй хүмүүсийн хувьд би энэ асуудалд маш сайн хүмүүсийн хэлнээс ийм "орчуулагч" байх болно гэж би бодож байна.

Би DIHALT-ийн санаачилгаар энэ сэдэв рүү их бага хэмжээгээр орсон гэдгээ шууд хэлье - тиймээс эдгээр нийтлэлүүд нь супер-худлагдмал ассемблер-микроконтроллер хэлнээс ихэнх хүмүүст ойлгомжтой хэл рүү орчуулах нэг төрөл байх болно. Яахав, жүжиг ахих тусам багш нар намайг засч, гэнэт буруу тайлбарлавал намайг засна гэж найдаж байна.
Ингээд хэдхэн хоногийн өмнө ассемблерийн талаар хийсэн анхны дүгнэлтүүд намайг цочирдуулж, оройн 23 цагаас өглөөний 5 цаг хүртэл DI HALT сэтгүүлийн нийтлэлүүдийг уншиж суусны эцэст сэтгэл хангалуун, аз жаргалтай орондоо орлоо. микроконтроллеруудад зориулсан ассемблер хэлний програмчлал.
Үүнийг яаж илүү энгийнээр тайлбарлах вэ? Бид мөн чанараас нь эхлэх хэрэгтэй гэж бодож байна.
***
Эхэндээ бид техникийн нарийн ширийн зүйлийг ярихгүй (бид дараагийн өгүүллээр ярих болно) - зүгээр л 3 дүр байна гэж төсөөлөөд үз дээ:
1. Микроконтроллер -Энэ бол Орост ирсэн англи хүн Стив юм. Тэр англи хэлийг төгс мэддэг ч орос хэлийг огт ойлгодоггүй - ганц ч үг биш. Зөвхөн англи хэл. Тэр маргаанд ялагдаж, орос хүн юу ч гуйв, ямар ч асуултгүйгээр хийхээ амлав.
2. Ассемблер -Энэ бол орчуулагч Вася бөгөөд ээж нь англи, аав нь орос хүн юм. Тэр англи, орос хэлийг төгс мэддэг.
3. Бид -Энэ бол англи хүн ирсэн орос хүн юм. За, бид бол бид =) Үүний зэрэгцээ бид орос хэлийг төгс мэддэг, (!!!) бага зэрэг англи хэл - бага зэрэг, толь бичигтэй.
***
Энэ байдлыг төсөөлөөд үз дээ - нэг англи хүн танай өрөөнд сандал дээр сууж байна. Та компьютерийнхээ ард суугаад энэ нийтлэлийг уншиж байтал таны цонх гэнэт нээгдэв! Энэ бол муу аз! Салхи сэвэлзээд, хөшиг нь далбаа болон хувирчээ... Хаах ч юм билүү! Гэхдээ сандлаасаа босч, системийн нэгжээс хөлөө авч, шаахайнд хийж, аяга кофегоо (шар айраг) тавиад, байгаль орчинд ээлтэй тэмцэхэд хэтэрхий залхуу байна. Тэгээд та гэнэт манай өрөөнд бооцоо алдсан англи хүн байгаа бөгөөд түүнийг хөөх цаг болсныг та ойлгов! Чи түүнд маш эелдэгээр "Хөөе! Цонхоо хаагаад дахиад сандал дээр суугаарай!" Тэгээд тэр суугаад чам руу гайхан хараад юу ч хийхгүй байна! Та мэдээж байцаатай шөл идэж болно, гэхдээ тэр чамайг ойлгохгүй хэвээр байх болно! Дараа нь та орчуулагч найз Василий гэж дууд - тэр ирээд англи хүний ​​хажууд сандал дээр суув. "Стив, очоод цонхоо хаагаад сандал дээрээ суу!" Орчуулагч нь англи хэл рүү орчуулдаг - англи хүн ойлгоод явж, цонхоо хааж, дараа нь ирж сандал дээр сууна.
Энэ үед та уг "Бид-Усгагч-Хянагч" хэлхээнд ассемблерийн үүргийг ойлгох хэрэгтэй.
Өөрөөр хэлбэл ассемблер гэж юу болохыг хүн бүр хэрхэн ойлгох вэ? Дараа нь уншина уу.
***

Тэгэхээр энэ байдлыг төсөөлөөд үз дээ. Та Васяд - "Сонс, за, товчхондоо, ийм байна - би гэртээ тооны машиныг мартчихаж, 56983-ыг 2-т хувааж, Стивд нударгаараа маш олон түлхэлт хий гэж хэлээрэй" гэж хэлэхэд Вася тооны машин дээр тоолж, Стив англиар "Нуугаараа 28491 удаа түлхэх дасгал хий" гэж хэлдэг "УДИРДЛАГА"- өөрөөр хэлбэл, заавар бол Васягийн даалгавар бөгөөд үүний үр дүн нь Стивийн үйлдэл юм.

Өөр нэг нөхцөл байдал бий - та Вася руу "Стивийг 28491 түлхэх дасгал хий гэж хэлээрэй" гэж хэлэхэд Вася таны үгсийг англи хэл рүү орчуулдаг. гэж нэрлэдэг ОПЕРАТОР

Энэ нь энгийн зүйл - заавар байдаг, оператор байдаг. Оператор бол Стивд юу хийхийг шууд зааварчилгаа юм - Вася энд зөвхөн таны хүсэлтийг англи хэл рүү хөрвүүлдэг. Заавар бол Васягийн хувьд даалгавар бөгөөд Вася эхлээд таны хэлсэн зүйлийг хийж, дараа нь үр дүнгээс хамааран тэр Стивд ямар нэгэн зүйл хэлэв.

Одоо бид англи хүнийг байнга тамлах болно! Гэхдээ эхлээд орчуулагч Васягаа илүү сайн мэдэх хэрэгтэй. Та дараахь зүйлийг мэдэж байх хэрэгтэй - Вася үргэлж таныг эргэлзэлгүйгээр дагаж мөрддөг - түүнд хэлсэн зүйлийг тэр хийдэг. Васягийн тооны машинд аравтын бутархай байхгүй - хэрэв та жишээг түлхэх тусламжтайгаар харвал 56983 \ 2 = 28491.5 - харин аравтын бутархай таслагдсаны дараа Вася бүх зүйл - тэр зөвхөн бүхэл тоог хардаг - энэ нь хамаагүй. 28491.000001 байх уу, эсвэл 28491.9999999 байх уу - Васягийн хувьд энэ нь хоёр тохиолдолд 28491 байх болно. Бөөрөнхийлсөн зүйл байхгүй. Васягийн тухай илүү чухал мэдээлэл. Вася хэрцгий - Стив хорин найман мянган удаа түлхэлт хийж байгаа нь түүнд огт хамаагүй. Тэд түүнд Вася орчуулсан гэж хэлсэн. Тэгээд орчуулаад зогсохгүй чиний хүссэнээр намайг албадуулсан. Тиймээс хэрэв Стив хорин гурван мянга таван зуун арван гурав дахь түлхэлтээр үхвэл энэ нь бүхэлдээ таны буруу байх болно.

Үнэндээ одоохондоо энэ л байна. Дараагийн нийтлэлд бид илүү гүнзгий ухах болно - одоогоор үүнийг ойлгоход хангалттай. Зүгээр л энэ нөхцөл байдлыг төсөөлж, юу болохыг, хэн ямар үүрэг гүйцэтгэдэг, заавар нь оператороос юугаараа ялгаатай болохыг ойлгоорой.
Дараа нь бид бүх зүйлийг зохих нэрээр нь дуудаж, насанд хүрсэн хүн шиг ассемблер микроконтроллероор хэрхэн ажилладагийг ойролцоогоор тооцоолохыг хичээх болно.

Микроконтроллерийн мэргэжлийн программист болж, өндөр цалинтай ажил олоход хялбар ур чадварын түвшинд хүрэхэд юу шаардлагатай вэ (ОХУ-д 2015 оны эхээр микроконтроллерийн програмистын дундаж цалин
80,000 рубль).

НЭМЭХ

Синтакс: ADD reg1, reg2 Энэ команд нь reg1 болон reg2 регистрүүдийн агуулгыг нэмж, үр дүнг reg1 регистрт хадгална. H, S, V, N, Z, C тугуудын төлөвийг өөрчилдөг.

БА

Синтакс: AND reg1, reg2 Энэ команд нь reg1 болон reg2 регистрүүдийн хооронд Логик БА үйлдлийг гүйцэтгэж үр дүнг reg1 регистрт хадгална. S, V, N, Z тугуудын төлөвийг өөрчилдөг.

БАС БИ

Синтакс: ANDI hreg, number Энэ команд нь өндөр регистрийн hreg болон тогтмол тоо (0...255) хооронд Логик БА үйлдлийг гүйцэтгэж, үр дүнг бүртгэлд хадгална. S, V, N, Z тугуудын төлөвийг өөрчилдөг.

BRBC

Синтакс: BRBC бит, шошго Энэ команд нь SREG регистр битийн төлөвийг ($3F) шалгаж, бит нь тодорхой бол шошго руу шилжинэ. Шошго нь brbc командын 63 команд дотор байх ёстой.

BRBS

Синтакс: BRBS бит, шошго Энэ команд нь SREG бүртгэлийн битийн төлөвийг ($3F) шалгаж, бит тохируулагдсан бол шошго руу шилжинэ. Шошго нь brbs командын 63 команд дотор байх ёстой.

BRCC

Синтакс: BRCC бит, шошго Энэ команд нь зөөвөрлөх туг (C)-г шалгаж, тодорхой байвал шошго руу очдог.

BRCS

Синтакс: BRCS бит, шошго Энэ команд нь зөөвөрлөх туг (C)-г шалгаж, тохируулсан бол шошго руу шилжинэ.

BREQ

Синтакс: BREQ бит, шошго Энэ команд нь тэг (Z) тугийг шалгаж, тохируулсан бол шошго руу шилжинэ.

BRNE

Синтакс: BRNE бит, шошго Энэ команд нь тэг (Z) тугийг шалгаж, тодорхой байвал шошго руу очно.

C.B.I.

Синтакс: CBI ioreg, bit Энэ команд нь I/O бүртгэлийн ioreg ($00...$1F) битийг 0 болгож шинэчилнэ. Битийн тоо нь бит операндыг тодорхойлдог.

CLR

Синтакс: CLR reg Энэ команд нь регистрийн бүх битийг 0 болгож шинэчилнэ. S, V, N, Z тугуудын төлөвийг өөрчилнө.

C.P.

Синтакс: CP reg1, reg2 Энэ команд нь reg1-ээс reg2-ийг хасах замаар reg1 ба reg2 регистрүүдийн агуулгыг харьцуулна. Бүртгэлийн агуулга өөрчлөгдөхгүй. H, S, V, N, Z, C тугуудын төлөвийг өөрчилдөг.

ХҮИ

Синтакс: CPI hreg, number Энэ команд нь тогтмолыг регистрээс хасаж hreg регистрийн агуулгыг тогтмол тоотой харьцуулна. Бүртгэлийн агуулга өөрчлөгдөхгүй. H, S, V, N, Z, C тугуудын төлөвийг өөрчилдөг. Энэ команд нь зөвхөн R16…R31 регистрүүдтэй ажилладаг.

ДЕК

Синтакс: DEC reg Энэ команд нь регистр reg-ийн агуулгыг нэгээр багасгаж, үр дүнг регистрт буцааж бичнэ. S, V, N, Z тугуудын төлөвийг өөрчилдөг.

IN

Синтакс: IN reg, ioreg Энэ команд нь I/O регистрийн ioreg-ийн агуулгыг RON reg руу шилжүүлнэ.

INC

Синтакс: INC reg Энэ команд нь регистрийн регистрийн агуулгыг нэгээр нэмэгдүүлж, үр дүнг регистрт буцааж бичнэ. S, V, N, Z тугуудын төлөвийг өөрчилдөг.

LD

Синтакс: LD reg, longreg Энэ команд нь өгөгдлийн санах ойноос (удаан бүртгэлд агуулагдах санах ойн хаяг) нэг байтыг регистрийн бүртгэлд (1200 загварын хувьд) ачаална.

LDI

Синтакс: LDI hreg, number Энэ команд нь тооны шууд утгыг hreg өндөр регистрт ачаална (команд нь зөвхөн R16...R31 регистрүүдтэй ажиллах боломжтой). Тоо нь 0…255 мужид байх ёстой.

LSR

Синтакс: LSR reg Энэ команд нь бүртгэлийн регистрийн агуулгыг логик баруун тийш шилжүүлэхийг гүйцэтгэдэг. Энэ тохиолдолд 0-р битийг C туг руу хуулж, 7-р битийг 0 болгож дахин тохируулна. S, V, N, Z, C тугуудын төлөвийг өөрчилнө.

ORI

Синтакс: ORI hreg, number Энэ команд нь өндөр регистрийн hreg-ийн агуулга болон тооны тогтмол (0...255) хооронд Логик OR үйлдлийг гүйцэтгэж үр дүнг бүртгэлд хадгална. S, V, N, Z тугуудын төлөвийг өөрчилдөг.

ГАРАХ

Синтакс: OUT ioreg, reg Энэ команд нь ерөнхий зориулалтын регистрийн reg агуулгыг I/O регистрийн ioreg руу шилжүүлнэ.

RCALL

Синтакс: RCALL шошго Энэ команд нь rcall (харьцангуй дуудлага) командын 2048 командын дотор байх ёстой шошгоор тодорхойлогдсон дэд программыг дууддаг.

RET

Синтакс: RET Энэ команд нь анхны дуудлагын командыг дагаж буй команд руу шилжих замаар дэд програмаас буцаж ирдэг.

RETI

Синтакс: RETI Энэ команд нь дэд програмаас буцаж ирэх ба ерөнхий тасалдлыг идэвхжүүлэх тугийг тохируулна.

RJMP

Синтакс: RJMP шошго Харьцангуй үсрэлт. RJMP командын 2048 дотор байх ёстой шошгон дээр заасан програмын хэсэг рүү очно.

SBI

Синтакс: SBI ioreg, bit Энэ команд нь I/O регистрийн бит ioreg ($00...$1F)-ийг 1 болгож тохируулна. Битийн тоо нь бит операндыг тодорхойлдог.

SBIC

Синтакс: SBIC ioreg, bit Энэ команд нь I/O регистрийн бит ioreg ($00...$1F)-г шалгаж, хэрэв энэ бит тодорхой бол дараагийн командыг алгасах болно. Битийн тоо нь бит операндыг тодорхойлдог.

SBIS

Синтакс: SBIS ioreg, bit Энэ команд нь I/O регистрийн бит ioreg ($00...$1F)-г шалгаж, тухайн бит тохируулагдсан бол дараагийн командыг алгасах болно. Битийн тоо нь бит операндыг тодорхойлдог.

SEI

Синтакс: SEI Энэ команд нь ерөнхий тасалдлыг идэвхжүүлэх тугийг тохируулдаг.

СЭР

Синтакс: SER reg Энэ команд нь регистрийн бүх битийг 1 болгож тохируулна. S, V, N, Z тугуудын төлөвийг өөрчилнө. Команд нь зөвхөн R16...R31 регистрүүдтэй ажиллах боломжтой.

ST

Синтакс: ST reg, longreg 1200 загварын хувьд энэ команд нь регистрийн агуулгыг өгөгдлийн санах ойд хадгалдаг (санах ойн хаяг нь илүү урт бүртгэлд агуулагддаг), жишээлбэл. PON reg-ийн агуулгыг урт бүртгэлд хадгалагдсан хаяг руу шууд бусаар дамжуулдаг.

SUBI

Зохиол зүй: SUBI hreg, number hreg-ийн өндөр регистрээс тогтмол тоог хасна. Үр дүн нь ижил бүртгэлд хадгалагдана. H, S, V, N, Z, C тугуудын төлөвийг өөрчилнө. Энэ тушаал нь зөвхөн R16…R31 регистрүүдтэй ажиллах боломжтой.

Ревич Ю.В.

Atmel AVR микроконтроллеруудын хэл дээрх практик програмчлал
угсрагч - 2-р хэвлэл, илч. -

Үйл ажиллагааны зарчим, архитектурын онцлог, техникийг тоймлон харуулав

Atmel AVR микроконтроллеруудыг програмчлах. Бэлэн жорыг хүргэж байна
орчин үеийн микроэлектроник төхөөрөмжийн үндсэн функцуудыг програмчлахад зориулагдсан
шинж чанар: хариу үйлдэл хийхээс эхлээд товчлуур дарах эсвэл динамик дэлгэц бүтээх
гадаад санах ой эсвэл функцэд өгөгдөл бичих нарийн төвөгтэй протоколууд руу
бодит цагийн цагийн холболт. Мэдээлэл солилцоход онцгой анхаарал хандуулдаг
хувийн компьютер бүхий тоон микро электрон төхөөрөмжүүдийг өгсөн
хөтөлбөрийн жишээнүүд. Энэхүү ном нь орчин үеийн AVR загвар болон хамтран ажиллах онцлогийг харгалзан үзсэн болно.
Сүүлийн жилүүдэд үйлдвэрлэсэн микро схемүүд. Програмууд нь үндсэн програмуудыг агуулдаг
AVR микроконтроллеруудын параметрүүд, тэдгээрт зориулсан командын жагсаалт, програмын текст,
түүнчлэн ашигласан нэр томъёо, товчлолын жагсаалт.

Оюутан, инженер, радио сонирхогчдод зориулав

Нийтлэл бэлтгэх бүлэг:

Ерөнхий редактор

Екатерина Кондукова

орлогч ерөнхий редактор

Игорь Шишигин

Толгой редакторууд

Григорий Добин

Редактор

Юрий Рожко

Компьютерийн зохион байгуулалт

Ольга Сергиенко

Залруулагч

Зинаида Дмитриева

Хавтасны дизайн

Елена Беляева

Толгой үйлдвэрлэл

Николай Тверских

Микроконтроллер, тэдгээрийн гарал үүсэл, хэрэглээ...................................... ........ 7

Микроконтроллеруудын суурь мэдээлэл................................................. ................................................. ................. 8

Грек хэв маягийн электроникууд................................................. ...... ................................................... ............ ... 10

Яагаад AVR гэж? ................................................... ...... ................................................... ............ ........................... 12

I ХЭСЭГ. ТӨХӨӨРӨМЖИЙН ЕРӨНХИЙ ЗАРЧИМ
ATMEL AVR-ИЙН АЖИЛЛАГАА ................................................ ......... ................... 17

Бүлэг 1. Atmel AVR микроконтроллеруудын тойм ................................... ...... ......... 19

AVR гэр бүл ................................................. .... ................................................. .......................... 21

AVR MK-ийн практик хэрэглээний онцлог ............................................. ...................... 23

Хэрэглээний тухай................................................ ... ................................................... ......... ................... 23

Хэлхээнд AVR ашиглах зарим онцлог ........................... ................. ............. 25

Бүлэг 2. Ерөнхий бүтэц, санах ойн зохион байгуулалт, цаг, дахин тохируулах............ 27

Програмын санах ой................................................. ........ ................................................ .............. ................................. 27

Өгөгдлийн санах ой (RAM, SRAM) ................................... .... ................................................. ......... ......... 29

Тогтворгүй мэдээллийн санах ой (EEPROM) ............................................. .......................... 31

Цагны аргууд................................................. ........ ................................................ .............. .............. 32

Дахин тохируулах................................................ . ................................................... ..................................................... 34

Бүлэг 3: Захын төхөөрөмжүүдийн танилцуулга................................................. ........ 37

Оролт гаралтын портууд................................................. ...................... ................................................. ................................ 38

Цаг хэмжигч-тоолуур.............................................. ......... ................................................... ............... ................................. 39

Аналог-тоон хувиргагч........................................... ........ ................................................ 41

Цуваа портууд................................................. ... ................................................... ......... ......... 42

UART................................................. .. ................................................. ........ ................................... 43

SPI интерфейс ................................................. ... ................................................... ......... ................... 46

TWI интерфейс (I

C) ................................. ...................... ................................................ ..... ..... 50

Universal Serial Interface USI ............................................. .............. ............. 50

Бүлэг 4. Тасалдал ба эрчим хүч хэмнэх горимууд...................................... ......... ... 53

Тасалдал.................................................. ....... ................................................. ............................................. 53

Тасалдлын төрлүүд.................................................. ................. ................................. ................... 57

Эрчим хүч хэмнэх горимууд.................................................. ................. ................................. ......................... ........ 58

II ХЭСЭГ. МИКРО УДИРДЛАГЫГ ПРОГРАМЧЛАХ
ATMEL AVR ................................................ ... ................................................... ......... ................ 61

Бүлэг 5. AVR гэр бүлийн MCU-г програмчлах ерөнхий зарчим ................................. 63

Ассемблей эсвэл С? ................................................... ...... ................................................... ............ ................... 63

AVR програмчлалын арга, хэрэгсэл ................................................ ....... ........................... 67

Код засварлагч................................................. ... ................................................... ......... ........................... 67

AVR Studio-ийн тухай ................................................... ...... ................................................ ...................... 68

Ассемблерийн зохион байгуулалт................................................. ...................... ................................................. ................ ... 70

Программистууд................................................. ....... ................................................. ............. .............. 71

Hex файлуудын тухай................................................. ......... ................................................... .......................... ........................... 75

AVR ассемблерийн команд, заавар, тэмдэглэгээ...................................... ............ ........................... 78

Тоо ба илэрхийлэл.................................................. ......... ................................................... .......................... .............. 79

Удирдамж ба чиг үүрэг............................................. ................................................................... .......................... ......... 80

AVR программын ерөнхий бүтэц................................................. ........ ................................................ ......... 84

Тасалдалтай ажиллах................................................. ................... ................................... ......................... ....... 85

ДАХИН БУУРУУЛАХ ................................................. .... ................................................. ................................................ 89

Хамгийн энгийн програм.............................................. .... ................................................. ......... .............. 90

Саатал.................................................. ................................................... ...... ........................... 92

Эсрэг програм................................................. ........ ................................................ .............. ............ 94

Тасалдал ашиглах................................................. ................ ................................. ...................... ....... 96

Цаг хэмжигч саатал................................................ ........ ................................................ .............. ............ 97

Тасалдал ашиглан эсрэг програм................................................. ................... ............ 98

Тохиргооны битүүдийн тухай................................................. ................................................................... .......................... ...... 101

Бүлэг 6. AVR командын систем ...................................... ........ ................................... 105

Шилжүүлгийн зааварчилгааг хянах, бүртгүүлэх SREG ...................................................................... 105

Шалгах командууд................................................. ................... ................................... ......................... ..... 111

Логик үйлдлийн командууд................................................. ................................................................... .......................... 113

Шилжилтийн заавар ба битийн үйлдлүүд................................................ ....... ................................................. 114

Арифметик үйлдлийн заавар................................................. ..................................................... 116

Өгөгдөл дамжуулах командууд................................................. ................................................................... .......................... ..... 118

Системийн удирдлагын командууд................................................. ...................... ................................................. ................ 122

Ассемблер дээр стандарт процедурыг гүйцэтгэх................................................. ...................... ........................... 123

Стек, локал болон глобал хувьсагчдын тухай................................................ .......................... 125

Бүлэг 7. Арифметик үйлдлүүд............................................. ....... ........................... 127

Стандарт арифметик үйлдлүүд................................................. ................................................................... ..... 128

Олон оронтой тоог үржүүлэх................................................ ................................................................... ...... 129

Олон оронтой тоог хуваах........................................... ................................................................ .............. 131

Бутархай тоотой үйлдлүүд................................................. ...... ........................................... 134

Санамсаргүй тоо үүсгэгч.............................................. ................................................... ...... ...... 136

BCD форматтай тоонуудтай хийх үйлдлүүд ...................................... ........ ................................................ ..... 138

MK дахь сөрөг тоо................................................. ...... ................................................ ............ ....... 143

Бүлэг 8. Програмчлалын таймер................................................. ......... ................... 147

8 ба 16 битийн таймерууд...................................... ......... ................................................... ............... ......... 147

Өгөгдсөн давтамжийн утгыг бүрдүүлэх................................................. ........ ........................... 149

Тооцоолол.................................................. ................................................................ .......................... ........................... 153

Цагийн нарийн залруулга.................................................. ................................................................... ................... 158

Давтамж хэмжигч ба үе хэмжигч................................................ ...... ................................................... ............ ......... 160

Давтамж хэмжигч................................................. ... ................................................... ......... ......................... 160

Хугацаа хэмжигч................................................. ........ ................................................ .......................... ........................... 164

Динамик дэлгэцийн хяналт.................................................. ................................................................... ...... 167

LED үзүүлэлтүүд ба тэдгээрийн холболт................................. ................................... 168

Динамик дэлгэцийг програмчлах................................................. ................... ............... 171

PWM горим дахь таймерууд ............................................. ...... ................................................... ............ ............ 174

Бүлэг 9. EEPROM ашиглах ................................... ....... ................................. 179

EEPROM дахь өгөгдлийн аюулгүй байдлын талаар дахин нэг удаа ................................................... ... ................................... 179

EEPROM бичих, унших ................................................ ...... ................................................... ............ ......... 181

EEPROM-д тогтмол хэмжигдэхүүнүүдийг хадгалах ............................................. ................................................................ ................... .. 183

Бүлэг 10. Аналог харьцуулагч ба ADC...................................... ......... ................... 187

Аналог-тоон үйлдлүүд ба тэдгээрийн алдаа................................................. ......... ........................... 187

Аналог харьцуулагчтай ажиллах................................................. ................................................................... ............. 190

Харьцуулагч дээр ADC-г нэгтгэх................................................. ....... ................................. 193

Үйлдлийн зарчим ба тооцооны томъёо................................................. ....... ........................... 194

ADC програмыг нэгтгэх................................................. ................................................................... ...... 198

Баригдсан ADC................................................. ...... ................................................ ............ ........................... 201

ADC ашиглах жишээ................................................. ................ ................................. ................... .... 204

Хөтөлбөр.................................................. ................................................... ...................................... 206

Бүлэг 11. SPI програмчлал ................................... ....... ........................... 215

SPI-ээр дамжуулан хийх үндсэн үйлдлүүд ............................................. ................................................................ ........................... ... 215

Техник хангамжийн сонголт................................................. ... ................................................... ......... ......... 216

Програм хангамжийн сонголт................................................ ... ................................................... ......... ...... 218

Тогтворгүй санах ойн төрлүүдийн тухай................................................ .......................... 219

SPI-ээр флаш санах ой бичих, унших ............................................. ......... ................................................... .. 221

SPI-ээр дамжуулан 45DB011B санах ойтой програм солилцох .................................... .... .............. 224

Флаш карт бичих, унших................................................. ...... ................................................... ............ ............ 225

MMS картуудыг холбож байна................................................. .... ................................................. ......... ... 225

Командуудыг илгээх, MMC-ийг эхлүүлэх...................................... ......... ........................... 228

MMS бичих, унших................................................. ...... ................................................ ............ ......... 232

Бүлэг 12. TWI интерфейс (I

C) ба түүний практик хэрэглээ................ 237

Үндсэн протокол I

C ...................................... ............ ............................................. ...... ......... 237

Протокол I-ийн програм хангамжийн эмуляц

C ...................................... ............ ...................... 240

Гадаад тогтворгүй санах ойд өгөгдөл бичих................................................ ............ ......... 241

AT24 санах ойтой горимуудыг солих ................................... ....... ................................................. 241

Хөтөлбөр.................................................. ................................................... ...................................... 243

Интерфейстэй цаг I

C ...................................... ............ ............................................. ...... .... 247

Өгөгдөл бичих................................................. ........ ................................................ .............. ................... 255

Мэдээлэл унших................................................. ........ ................................................ .............. ................... 259

Бүлэг 13. UART/USART програмчлал ................................................. .... ............. 261

UART эхлүүлэх ................................................. ... ................................................... ......... .............. 262

Мэдээлэл дамжуулах, хүлээн авах................................................. ...... ................................................ ............ ......... 263

UART ашиглан DS1307 цагийг тохируулах жишээ ...................................... ...... ................... 266

Харилцаа холбооны эвдрэлээс хамгаалах арга техник ................................................ ........ ........................... 271

Паритет шалгах................................................. ................... ................................... ......................... ........ 271

Биржийг хэрхэн зөв зохион байгуулах вэ................................................. ................................ ........................... ........ 273

USART-ийн нэмэлт функцууд ................................................ ................................... 274

RS-232 ба RS-485 интерфэйсүүдийн хэрэгжилт ...................................... ................................................................ ..... 276

RS-232-д зориулсан түвшний хувиргагч ...................................... ................................................ 280

RS-485 ................................................... ...... ................................................ ................................................ 283

Бүлэг 14. Эрчим хүч хэмнэх горим ба харуулын цаг хэмжигч................................... 285

Эрчим хүч хэмнэх горимыг програмчлах................................................. ...................... ................................... 286

Зайгаар ажилладаг төхөөрөмжийн жишээ................................................. ......... ................................... 287

Хөтөлбөрийн эцсийн боловсруулалт.................................................. ................................................................ ................. ...... 289

Харуулын цаг хэмжигчийг ашиглах................................................. ................................................................ ............ 293

ХЭРЭГЛЭЭ.................................................. ....... ................................................. ............. ....... 299

Хавсралт 1. Atmel AVR микроконтроллеруудын үндсэн параметрүүд ......... 301

Хавсралт 2. Atmel AVR командууд ...................................... ..... ........................... 309

Арифметик ба логик командууд...................................... ................................... 310

Битийн үйлдлийн заавар................................................. ................................................................... .......................... ...... 311

Харьцуулах командууд................................................. ... ................................................... ......... .............. 312

Шилжүүлгийг удирдах командууд................................................. ......... ................................................... ............... .313

Нөхцөлгүй үсрэлт болон дэд программуудыг дуудах командууд...................................... ......... ... 313

Шалгах-Алгасах заавар ба нөхцөлт үсрэлт хийх заавар...................................... ................... 314

Өгөгдөл дамжуулах командууд................................................. ................................................................... .......................... ........ 315

Системийн удирдлагын командууд................................................. ...................... ................................................. ................ 316

Хавсралт 3. Хөтөлбөрийн бичвэрүүд...................................... ...... ................................. 317

Flash Communication Demo Program 45DB011B
SPI интерфэйсээр ................................................... .... ................................................. ............................ 317

Интерфейсийн солилцооны журам I

C ...................................... ............ ........................ 321

Хавсралт 4. Персонал компьютерээр мэдээлэл солилцох
болон UART-аар дибаг хийх програмууд ................................................ ....... ................................ 329

Delphi дахь COM порттой ажиллах ............................................. ... ................................................... ......... ..... 329

RTS шугамыг DOS болон Windows дээр суулгах ............................................. ...................... ................................. 335

COM2000 програм ................................................. ... ................................................... ......... ................... 337

Терминал эмулятор ашиглан програмуудыг дибаг хийх................................................... ........ ................. 339

Хавсралт 5. Түгээмэл хэрэглэгддэг товчлол, нэр томьёоны толь....... 341

Уран зохиол.................................................. ................................................... ...... .............. 347

Сэдвийн индекс................................................. ................................................ 349

ОРШИЛ

Микроконтроллер,
тэдгээрийн гарал үүсэл, хэрэглээ

Тэд 1960-аад онд оюутны жагсаалд оролцогчдыг харж байсан гэж ярьдаг
Үүнийг эсэргүүцсэн Гордон Мур "Бид жинхэнэ хувьсгалчид" гэж хэлэв. Оюутнууд
транзисторыг зохион бүтээгчдийн нэг У.Шоклигийн ажилтан, бусад зүйлсээс гадна
алдартай Цахиурын хөндийг үүсгэн байгуулагч далд, эргээд үүсгэн байгуулсан
хөгжилд тэргүүлэх үүрэг гүйцэтгэх хувь тавилантай байсан компаниудын утас болон удирдагч
микроэлектроник, Мур юу ярьж байгаагаа мэдэж байсан. Хачирхалтай нь тийм юм
Мур болон түүний хамтран ажиллагсдын бүтээлүүд тэр ертөнцийн үндэс суурь болох хувь тавилантай байв
дараа нь "босогч залуучуудын" үйл ажиллагаа төвлөрч байв
1960-аад он Орчин үеийн хакерууд (компьютерийн хулгайчид биш, харин жинхэнэ)
компьютерийн эрдэмтэд ажилдаа дуртай) - шууд үзэл суртлын өв залгамжлагчид
Сорбонна оюутнууд болон Америкийн жагсагчид "Хий
дайн биш хайр"

"Уриа лоозон бүү бич - код бич." Олон алдартай болсон нь санамсаргүй хэрэг биш юм

электрон компьютерийн үйлдвэрлэлийн нэр хүндтэй хүмүүс, шинэ бүтээлийн зохиогчид, үүсгэн байгуулагчид
Орчин үеийн ертөнцийн нүүр царайг бүрдүүлсэн хүмүүс яг тэр "богцоотой" ойр орчноос гаралтай.
ядарсан залуучууд."
Микроконтроллеруудын тухай бидний түүх 1957 онд Гордон Муртай хамтран ажилласнаар эхэлсэн.
дараа нь микрофон зохион бүтээгчдийн нэг болсон Роберт Нойстой хамт
roschemy болон Shockley Semiconductor Labs-ийн зургаан ажилтан (Шокли дуудсан
тэдний "урвагч найм"), Fairchild Semiconductor компанийг үүсгэн байгуулжээ. Түүнд бид
зөвхөн хагас дамжуулагчийн зах зээлийг хөгжүүлж, микро схемийг нэвтрүүлсэнтэй холбоотой
инженерийн практикт орохоос гадна боловсон хүчний нэг төрлийн үйлдвэр болон
залуу үйлдвэрлэлд зориулсан санаа үүсгүүр.
Энд зөвхөн зарим түүхэн баримтуудыг дурдъя. Мур өөрөө 1960-аад оны сүүлээр Нойстой хамт
Intel товчилсон нэрээр Integrated Electronics компанийг байгуулсан
одоо сургуулийн сурагч бүрт танил болсон. Жереми Сандерс, өөр нэг алдартай үүсгэн байгуулагч
Хамгийн том компани болох AMD мөн Fairchild-ийг орхиж, тэнд хамтран ажилладаг компаниа нээснээрээ ялгарчээ.
хагас дамжуулагчийн үйлдвэрлэл, борлуулалтын түр зуурын эдийн засгийн загвар
Бүтээгдэхүүний өртөг өсөх тусам тэг болох хандлагатай байдаг бүрэлдэхүүн хэсгүүд

Вьетнамын дайныг эсэргүүцэж байсан 1960-аад оны хиппиүүдийн уриа нь “Дайн биш, хайрыг бүтээ”.

Оршил

багцын хэмжээг өөрчлөх. Фэйрчайдын гол менежерүүдийн нэг Чарли Спорк 1967 онд
Үндэсний хагас дамжуулагчийн захирал болсон бөгөөд дараа нь дөрөвний нэгийг нь удирдсан
зуун. "Урвагч найм"-ын тал нь - Джин Хоерни, Евгений Клейнер,
Жей Ласт, Шелдон Робертс нар 1961 онд Amelco-г үүсгэн байгуулсан
дараа нь одоо алдартай Intersil, Maxim, Ixys нар өссөн. Ажилтан
Бид үйл ажиллагааны өсгөгчийг зохион бүтээсэн Роберт Видларт Фэйрчайлд өртэй -
микро схемийн сортууд бөгөөд өнөөг хүртэл алдартайгаараа хоёрдугаарт ордог
микропроцессорууд. Түүгээр ч барахгүй Fairchild-ийн түүх нь алдартнууд гарч ирсэнтэй холбоотой юм
шийдвэрлэх үүрэг гүйцэтгэсэн шинэ бизнес (өөрөөр хэлбэл "эрсдэлтэй") санхүүжилтийн загвар
электроник, компьютер болон
харилцаа холбоо. Фэйрчайлд ихэвчлэн "бүх цахилгаан эрчим хүчний тэргүүн эх" гэж нэрлэгддэг нь хоосон биш юм.
троникс".

Микроконтроллеруудын суурь мэдээлэл

Энэ бүх үйл явдлын хар салхины дунд бидний өгүүлэхэд чухал зүйл бол тэр юм
бусад шинэлэг зүйл болох Fairchild-ийн ажилтнууд хагас дамжуулагчийг анхлан сурталчилсан
хуурамч санах ой. Одоо CD, DVD, хатуу диск, флаш картын эрин үед бид
1960-аад оны эхээр компьютерийн программууд гэж төсөөлөхөд бэрх
ихэвчлэн картон хуудас (цоолбор карт), хаягдал бүтээгчид хадгалагдаж байсан
Таны толгой мөнгөн усны саатлын шугам, осциллограф дээр үнэтэй RAM модулиудаас хэтэрсэн эсэх
график хоолой ба феррит цагираг, бит бүрийг гараар "оёдог"
үгүй. Мэдээлэл хадгалах хамгийн авсаархан электрон төхөөрөмж
RAMAC 305 нэртэй 5 МБ багтаамжтай соронзон дискүүд нь хэмжээтэй байсан
үйлдвэрийн хөргөгчтэй, сарын 5 мянган доллараар түрээсэлсэн.
Эдгээр мангасуудын харанхуй хаант улсад цорын ганц "гэрлийн туяа" нь шинэ бүтээл байв
1956 онд хүлээн авсан Америкийн Bosch Arma корпорацийн ажилтан Йен Чоу
Одоо "нэг удаагийн програмчлагдсан ROM" гэж нэрлэгддэг төхөөрөмжийн патент
(OTP ROM

). Дашрамд хэлэхэд энэ патентад энэ нэр томъёог анх удаа ашигласан

"шатаах" - микромодуль нь хайлдаг холбогчтой матрицаас бүрддэг бөгөөд энэ нь
програмчлалын явцад тэдгээрт өндөр хүчдэл өгснөөр шатсан.
OTP ROM нь удаан хугацааны туршид авсаархан цорын ганц төхөөрөмж хэвээр байв
мэдээлэл хадгалах, мөн саяхан болтол утгаа алдаагүй -
наад зах нь дэлхийн микроконтроллеруудын дөрөвний нэг нь, ялангуяа энгийн байдаг нь хүртэл
яг ийм нэг удаагийн программчлагдах программтай одоо ч үйлдвэрлэгдэж байна
маш хямд учраас үрчлээстэй. Мөн сүүлийн жилүүдэд л "шатсан" па-
санах ойг аажмаар илүү тохиромжтой флаш санах ойгоор сольж эхэлсэн бөгөөд сүүлийн үед
үнэ нь маш их унасан тул OTP ROM ашиглах нь бараг утгагүй юм.
Гэхдээ 1960-аад он руу буцъя. Компакт хагас дамжуулагч санах ой үнэхээр хэрэгтэй байсан
Цэрэг, НАСА-аас эхлээд гэр ахуйн цахилгаан хэрэгсэл үйлдвэрлэгчид хүртэл бүгд үүнд дуртай. Хамгийн эхэнд
Fairchild өнөөдөр DRAM гэж нэрлэгддэг зүйлийг танилцуулсан, ялангуяа ийм микро
Оросын хэлхээ (тус бүр нь 256 битийн багтаамжтай 32,768 чип) баннерын санах ойг барьсан.

Зарим товчлолын тайлбарыг үзнэ үү Хавсралт 5.

Дотоодын BESM-6-ийн өрсөлдөгч болох судалтай суперкомпьютер ILLIAC-IV. Мэдэрсэн
1968 онд Мур, Нойс нар Фэйрчайлдыг орхиж, Intel-ийг үүсгэн байгуулав.
санах ойг хөгжүүлэх, үйлдвэрлэх чиглэлээр мэргэшсэн компани. Тэд хараахан болоогүй байна
Intel-ийн хамгийн алдартай бүтээгдэхүүн нь санах ой биш, харин жижиг хэмжээтэй байх болно гэдгийг мэдэж байсан
төхөөрөмж (Зураг. B1), микропроцессор гэж нэрлэдэг, хөгжүүлэлт нь үндсэндээ байсан юм
нь ердийн тооцооллын загварт туслах үе шат болгон анх санаачилсан
Тора.

Цагаан будаа. ДАХЬ 1.Микропроцессор

БА

МИКРОПРОЦЕССОРЫН БҮТЭЭЛ

1969 онд Японы залуу компани болох Busicom-ийн хэд хэдэн хүмүүс Intel-д гарч ирэв.
тооны машин үйлдвэрлэл эрхэлдэг эрдэм шинжилгээний хүрээлэн. Тэдэнд 12 багц хэрэгтэй байсан.
gral схемүүд нь шинэ хямд ширээний тооцоолуурын гол элемент юм.
Тора. Төслийг Японы компанийг төлөөлөн Масатоши Шима боловсруулсан
Рон. Тед Хофф (Марсиан Э. Тед Хофф, 1937 онд төрсөн), хэлтсийн дарга.
Intel-ийн бүтээгдэхүүнүүдэд зориулсан програмуудыг боловсруулж, төсөлтэй танилцсаны дараа би үүнийг ойлгосон
зарим програмчлалын чадвартай тооны машин бүтээхийн оронд
програмчлалын, та эсрэгээр нь хийж болно, гэж ажиллах програмчлагдсан компьютер
тооны машин. Энэ санаагаа хөгжүүлснээр 1969 оны намар Хофф урлагийн талаар шийджээ
ирээдүйн микропроцессорын архитектур. Хавар Хоффа тэнхимд ирэв (бүгд ижилхэн
Фэйрчайлд, бидэнд аль хэдийн танил болсон), шинэ ажилтан Фредерико Фаггин
ry болон бүхэл бүтэн системийн нэрийг гаргаж ирэв: "гэр бүл 4000". Гэр бүл нь бүрдсэн
дөрвөн 16 зүү чип: 4001 нь 2 KB ROM агуулсан; 4002 - RAM-тай
4-

програм татаж авах битийн гаралтын порт; 4003 нь 10 бит байсан

Цуваа оролт, зэрэгцээ гаралттай оролт гаралтын өргөтгөгч
гар, заагч болон бусад гадаад төхөөрөмжтэй харилцах гэр; Гэсэн хэдий ч-
4004 нь 4 битийн CPU (төв боловсруулах нэгж) байсан. Энэ бол CPU юм
2300 транзистор агуулсан бөгөөд 108 кГц цагийн давтамжтайгаар ажилладаг. 11 сарын 15
1971

Анхны микропроцессор бүтээснээ зарлав. Busicom худалдаж авсан

хөгжүүлэлт, Intel-д 60,000 доллар төлсөн боловч Intel энэ мөнгийг Busicom-д буцааж өгөхөөр шийджээ.
микропроцессорын эрхийг эргүүлэн авах.
i4004 нь анхны электрон компьютертэй харьцуулахуйц боловсруулах хүчин чадалтай байв.
Ютер ENIAC (1946). 4004 систем дэх анхны практик хэрэглээгээ олсон
гэрлэн дохио, цусны анализаторыг хянах. Энэ микро процесс
сорыг гариг ​​хоорондын Пионер-10 датчикийн төхөөрөмжид ашигласан
ry ижил төстэй төхөөрөмжүүдийн дунд урт наслалтын дээд амжилтыг тогтоосон: энэ онд анх худалдаанд гарсан
1972

, мөн 2001 оны 9-р сар гэхэд Пионер-10 дэлхийгээс 11.78 тэрбум км-ийн зайд нүүсэн бөгөөд одоо ч байсан.

НАСА 2003 оны 2-р сард албан ёсоор ажиллаж байсан бөгөөд өнөөг хүртэл ажиллаж байгаа байх
нийгэмд түүнтэй салах ёс гүйцэтгэсэн.

Оршил

Ийнхүү хожим хуваагдсан микропроцессоруудын ялалтын марш эхэлжээ
үндсэндээ хоёр үндсэн бүлэгт багтдаг хэд хэдэн сортууд:
микропроцессор (MP) болон микроконтроллерууд (MC) өөрсдөө. Эхнийх нь
Хамгийн түгээмэл нь тооцоолох системийн нэг хэсэг болгон ашиглахад зориулагдсан
ихэнх нь хувийн компьютер (PC) байдаг тул тэдгээрийг ихэвчлэн ашигладаг
"PC процессорууд" гэж нэрлэдэг (гэхдээ энэ бүлэгт ихэвчлэн үйлдвэрлэсэн
серверт зориулсан драйвер MP болон бусад). МК УИХ-ын гишүүнээс үүгээрээ ялгаатай
Эдгээр нь үндсэндээ янз бүрийн системийг удирдахад зориулагдсан байдаг.
тиймээс харьцангуй сул тооцоолох цөмтэй, тэдгээр нь орно
олон нэмэлт зангилаа байдаг. Ердийн УИХ-ын гишүүний хувьд энэ нь гэж таамаглаж байна
гадаад чипсет эсвэл нэмэлт модулиудын нөөц (санах ой, оролтын портууд)
гаралт, таймер, тасалдал хянагч, аналог дохио боловсруулах зангилаа
загас агнуур гэх мэт), MK-д энэ нь шууд чип дээр байрладаг тул тэд нэгэн цагт загварлаг байсан
үүнийг "микрокомпьютер" гэж нэрлэ.
Үнэн хэрэгтээ, хамгийн энгийн тохиолдолд бүрэн ажиллагаатай болгох
компьютерийн хувьд холбогдсон нэг MK чип
түүнд холбогдсон оролт/гаралтын төхөөрөмжүүд. Энгийн нэг болор орчин үеийн загварууд
ган MK нь 286 дахь IBM PC AT-ийн тооцоолох чадвараас давсан.
1980-аад оны хоёрдугаар хагасын процессор. УИХ-ын хооронд хиллэдэг газар байдаг ба
MK-ийг хэрэгжүүлэхэд хэцүү байдаг: жишээлбэл, гар утасны төхөөрөмжүүдийн процессорууд
гар утас, халаасны компьютерийг процессортой дижитал камерт
зангилаа нь дэвшилтэт тооцоолох функцтэй байх ёстой бөгөөд олон удирддаг
олон тооны гадаад бүрэлдэхүүн хэсгүүд.

Грек загварын электрон хэрэгсэл

1962 онд Грекийн цагаач Перлегос гэр бүлд мэндэлжээ
Триполис хотын оршин суугчид. Эцэг эх нь эх орондоо шиг усан үзмийн тариалан эрхэлж, хөвгүүд нь
Новя, Жорж, Густ Перлегос нар загварлаг инженерийн мэргэжлийг сонгосон
электроникийн инженер: хоёулаа эхлээд Сан Хосегийн их сургуулийг, дараа нь Стэнфордыг төгссөн
их сургууль. 1974 онд 24 настайдаа ах дүүсийн хамгийн залуу нь Жорж Перлегос
Intel-д ажиллаж эхэлсэн бөгөөд тэрээр хамгийн дэвшилтэт газруудын нэгийг олж мэдэв.
шатсан OTP ROM-г орлох цахилгаанаар устгадаг санах ойг хөгжүүлэх.
Перлегосоос өмнө ч 1971 онд микропроцессорыг зохион бүтээхтэй зэрэгцэн,
Intel-ийн ажилтан Дон Фрохман хөвөгч хаалтыг зохион бүтээж, анхны хэт ягаан туяаг бүтээжээ
2K устгаж болох EPROM (256 8).

З

ТАЙЛБАР ДЭЭР

"Энгийн" амьдралд нэг үсгээс бүрдэх мэдээллийн нэгжийн товчлолыг ашигла
"K" (мөн "М" гэх мэт) хэрэглэхийг зөвлөдөггүй: энэ нь тийм эсэхийг ойлгоход заримдаа маш хэцүү байдаг
килобит, килобайт, "кило үг" эсвэл ерөнхийдөө секундэд килобитийн тухай. Гэсэн хэдий ч
Ийм товчлолыг техникийн баримт бичигт оруулаад ихэвчлэн олддог бөгөөд бид ирэх болно
Би заримдаа энэ жишээг дагахыг хичээдэг. Тодорхой байхын тулд бид дараах дүрмийг хүлээн зөвшөөрч байна.
la: нэг том үсэг "K" нь хоёртын килобит (1024 бит), "M" нь хоёртын килобитийг илэрхийлдэг.
хоёртын мегабит (1024 кбит). Хэдийгээр уран зохиолд килобайтыг ихэвчлэн хүлээн зөвшөөрдөг
"KB" болон килобитийг "KB" гэж товчилбол бид энэ төөрөгдлөөс зайлсхийхийг хичээх болно.

Микроконтроллер, тэдгээрийн гарал үүсэл, хэрэглээ

Бусад бүх тохиолдолд бүрэн хэмжээгээр бичнэ үү: кбайт ба МБ, кбит/с, МБ/с. Үүнээс бусад нь -
Хэрэв микроконтроллерийн програмууд үйлдвэрлэгдсэн бол санах ойн хэмжээг тодорхойлох болно
давхар байт үгээр хэмжигддэг: жишээлбэл, 4K үг нь 4096 нүд гэсэн үг юм -
үг (8 кбайт).

Жорж Перлегос энэ үйл явцад идэвхтэй оролцож, эхлээд түүний оролцоотойгоор, мөн
Дараа нь түүний шууд удирдлага дор хоёр технологи бий болсон.
Эдгээр нь бүхэл бүтэн флаш санах ойн салбарын өсөлтийн цэг болсон - нэг
орчин үеийн "дижитал хувьсгал"-ын гол тулгуур багана. Үүнийг анх зохион бүтээсэн
чип 2716 - 16K (2048 8) EPROM нэг тэжээлийн хүчдэл +5 В, дараа нь
2816 - анхны EEPROM, цахилгаанаар устгадаг ROM нь прототип болсон.
түргэн санах ой.
1981 онд Перлегос Intel-г орхиж, хэд хэдэн ажилчдын хамт (үүнд
Өөр нэг алдартай Chips & компанийн ирээдүйн бүтээгч Гордон Кэмпбелл байв.
Technologies) нь Seeq компанийг бий болгодог. Энэ бол цахим үйлдвэрлэлийн уналтын үе байсан.
үйлдвэржилт, гурван жилийн дараа нэхэмжлэлийн улмаас компанийг орхих шаардлагатай болсон
хөрөнгө оруулагчид. Тэдэнд итгэхээ больсон Жорж, түүний ах Густ болон бусад хүмүүс
1984 онд бид Seeq-ийн ажилтнуудтай хамтран хувийн хөрөнгөөр ​​компани байгуулж,
Бүтэн нэр нь Advanced Technology Memory and Logic эсвэл
Атмел гэж товчилсон.
Эхлээд Atmel бүтээгдэхүүнүүд нь бүх төрлийн тогтворгүй санах ойн чипүүд байсан
шинэ боломжууд - OTP EPROM болон EEPROM зэрэг цуваа болон зэрэгцээ
хандалт ба Flash. 1985 онд Атмел дэлхийн анхны гэрт суурилсан EEPROM-ыг гаргасан.
Өнөөдөр шинээр гарч ирж буй CMOS технологи, 1989 онд анхны хүчирхэг флаш санах ой
нэг хүчдэлээс +5 В. 1980-аад оны сүүлээр Intel хэд хэдэн компанийг шийтгэхээр болжээ.
EPROM үйлдвэрлэгч компаниуд, түүний дотор Атмел патентыг зөрчсөн гэж үзэн,
Гэвч эцэст нь лиценз солилцох талаар тохиролцох боломжтой болсон. Тэгээд эцэст нь -
Эцэст нь Атмел сонгодог микроконтроллер үйлдвэрлэх лиценз авсан.
ler 8051, тэр үед Intel дэмжихээс аажмаар холдож байсан бөгөөд төвлөрсөн.
PC-ийн процессоруудыг сайжруулах.

П

ДЭЛГЭРЭНГҮЙ

EEPROM нь флаш санах ойгоос ялгаатай гэдгийг санацгаая
дурын нүдэнд тусад нь хандах, хоёр дахь нь зөвхөн бүхэл блокуудад хандах. -
Энэ EEPROM нь эзэлхүүнээрээ бага (мэргэшсэн микро
EEPROM хэлхээнүүд - килобитийн нэгжээс мегабитийн нэгж хүртэл) ба одоогийн байдлаар илүү үнэтэй байдаг.
Энэ нь ихэвчлэн өгөгдөл хадгалах, түүний дотор микроконтроллеруудын нэг хэсэг болгон ашигладаг
Леров. Флэш санах ой нь илүү энгийн бөгөөд хямд бөгөөд хурдыг мэдэгдэхүйц нэмэгдүүлэх боломжийг олгодог.
их хэмжээний мэдээлэл, ялангуяа унших/бичих урсгалтай өсөлт,
медиа төхөөрөмжүүдийн хувьд ердийн зүйл (дижитал камер эсвэл MP3 тоглуулагч гэх мэт). Оруулсан
Микроконтроллеруудын флаш санах ой нь програмуудыг хадгалахад ашиглагддаг. Зарим дэлгэрэнгүй мэдээлэл
Санах ойн төрөл, тэдгээрийн үйл ажиллагааны талаар дэлгэрэнгүй мэдээллийг үзнэ үү 11-р бүлэг.

Тиймээс Атмел микроконтроллер үйлдвэрлэгчдийн тоонд "татагджээ"
ром маш хурдан эхний байруудад оров: үйлдвэрлэл 1993 онд эхэлсэн
Салбарын анхны флаш програмын санах ойтой MCU AT89C51. Энэ нь гэсэн үг
одоо байгаа учраас бүх инженерийн практикт хувьсгал эхэлсэн
Өмнө нь MK-ууд нэг удаагийн программчлагдсан OTP санах ойтой байсан, эсвэл

Оршил

Хэт ягаан туяанд угааж болдог бөгөөд үүнийг үйлдвэрлэх, түүнтэй ажиллахад илүү үнэтэй байдаг
хөгжүүлэгчийн цагийг ихээхэн алдахад хүргэдэг. Хэт ягаан туяаны дахин бичих мөчлөгийн тоо
PROM нь хэдэн араваас хэтрэхгүй бөгөөд өдрийн гэрэл шууд тусдаг
ийм болор нь мэдээллийг устгахад хүргэдэг. Тиймээс, жижиг ч гэсэн
ry төхөөрөмжүүдийг үндсэндээ ашиглан үйлдвэрлэх ёстой байв
OTP ROM-г идээрэй, энэ нь илүү эрсдэлтэй: өчүүхэн ч гэсэн өөрчлөх
бүртгэгдсэн програмын алдаа гаргах боломжгүй болсон. -аас флаш санах ой бий болсон
Энэ талбайн "ландшафт" -ыг бүхэлд нь өөрчилсөн: энэ нь түүнийг нэвтрүүлсний үр дүнд ган юм
Компьютерийн BIOS-ийг шинэчлэх програм хангамж эсвэл "дахин
шийдвэрлэх" хэрэглээний электрон төхөөрөмжүүдийн хяналтын програмууд.
1995 онд Норвегийн Шинжлэх ухаан технологийн их сургуулийн хоёр оюутан Трон-
Хэйме, Альф Боген, Вегард Воллен нар 8 битийн RISC цөмийн санааг гаргасан.
Үүнийг Атмелийн удирдлагад санал болгосон. Хөгжүүлэгчдийн нэрсийг урлагийн нэрэнд оруулсан болно.
AVR архитектур: Alf + Vergard + RISC. Энэ санаа надад маш их таалагдсан тул 1996 онд
Атмел судалгааны төв нь Тронхейм хотод байгуулагдсан бөгөөд аль хэдийн төгсгөлд нь байсан
Шинэ AVR цувралын анхны туршилтын микроконтроллер гэж нэрлэгддэг
AT90S1200. 1997 оны хоёрдугаар хагаст Атмел корпораци цувралаа гаргаж эхэлсэн
AVR гэр бүлийн үйлдвэрлэл.

Яагаад AVR гэж?

"Төрсөн цагаасаа эхлэн" AVR хянагч нь тэднийг ялгах хоёр онцлогтой
MK-ийн бусад хэсгийн гэр бүл. Нэгдүгээрт, AVR цөмийн зааврын багц ба архитектур
хэлийг дэмжигч хөрвүүлэгч боловсруулдаг компанитай хамтран боловсруулсан
өндөр түвшний програмчлалын IAR Systems. Үүний үр дүнд энэ нь боломжтой болсон
Гүйцэтгэлийн хувьд их хэмжээний алдагдалгүйгээр AVR програмуудыг C хэл дээр бичих
ассемблер хэл дээр бичигдсэн программуудтай харьцуулахад. Энэ талаар дэлгэрэнгүй мэдээлэл
бид үүнийг хэлэлцэх болно 5-р бүлэг.
Хоёрдугаарт, AVR-ийн чухал давуу талуудын нэг нь конвейер ашиглах явдал байв
ра. Үүний үр дүнд AVR-д зориулсан машины мөчлөгийн тухай ойлголт байхгүй: ихэнх
командуудыг нэг цагийн мөчлөгөөр гүйцэтгэдэг. Харьцуулахын тулд бид ашиглаж байгааг анхаарна уу
PIC гэр бүлийн MK нь маш их алдартай бөгөөд тэд 4 цагийн циклээр тушаалыг гүйцэтгэдэг бөгөөд анги
sical 8051 - ерөнхийдөө 12 мөчлөгт (хэдийгээр орчин үеийн загварууд бас байдаг. X 51-тэй хамт
нэг мөчлөгт автобусны мөчлөг).
Үүний зэрэгцээ бид тушаалын системийн энгийн байдлыг бага зэрэг золиослох шаардлагатай болсон нь үнэн.
-тай харьцуулахад ялангуяа мэдэгдэхүйц юм x 51, жишээлбэл, аливаа дамжуулалтын үйл ажиллагаа
хянагч доторх өгөгдлийг хаягжуулах аргаас үл хамааран ижил аргаар гүйцэтгэдэг
шигшээ баг

янз бүрийн хувилбаруудад, харин AVR дээр бараг л

Арга бүр өөрийн гэсэн тушаалтай, заримдаа үйл ажиллагааны хязгаарлагдмал хүрээтэй байдаг.
вий. Биттэй ажиллах талбарт зарим хүндрэлүүд байдаг. Гэсэн хэдий ч энэ нь тийм биш юм
AVR ассемблерийг сурахад мэдэгдэхүйц бэрхшээлтэй тулгардаг: эсрэгээрээ текстүүд
хөтөлбөрүүд нь илүү богино бөгөөд өндөр хэл дээрх хөтөлбөрийг санагдуулдаг
түвшин. Нийт багуудын тоо 90-ээс 130 хүртэл байгааг анхаарч үзэх хэрэгтэй
загвараас хамааран зөвхөн 50-60 нь өвөрмөц, үлдсэнийг нь сольж болно.

Микроконтроллер, тэдгээрийн гарал үүсэл, хэрэглээ

Эцэст нь Си хэлийг ашиглах үед энэ сул тал бүрэн арилдаг.
үнэн хэрэгтээ өөр өөр архитектуруудыг про-
програмчлал
AVR архитектурын асар том давуу тал нь 32 үйлдлийн бүртгэлтэй байх явдал юм.
бүхэлдээ тэнцүү биш, гэхдээ зарим тохиолдолд эргэхгүй байхыг зөвшөөрдөг
RAM болон стекийг ашиглахгүй байх (энэ нь үндсэндээ боломжгүй юм
гэр бүл X 51), үүнээс гадна доод AVR загваруудад стек нь ерөнхийдөө боломжгүй байдаг
программист Тиймээс AVR-д зориулсан ассемблер програмуудын бүтэц нь сэжигтэй болсон.
мэдэгдлүүд ажилладаг дээд түвшний хэлний программуудтай маш төстэй
санах ойн эсүүд болон регистрүүдээр биш, харин хийсвэр хувьсагч болон тогтмолуудтай.
Хэлхээний дизайны үүднээс авч үзвэл AVR-ийн өөр нэг онцлог нь бүх зүү нь дотор байгаа явдал юм
тэдгээр нь гурван төлөвт (оролт - идэвхгүй - гаралт) болон цахилгаанаар байж болно
цана нь CMOS бүтэц юм (өөрөөр хэлбэл гаралтын тэгш хэмтэй байдаг
дохио ба оролтын өндөр эсэргүүцэл). Ерөнхийдөө энэ нь чухал ач холбогдолтой юм
портуудаас илүү тохиромжтой X 51 (хоёр тогтвортой ба TTL нийцтэй) бөгөөд илүү сайн санал болгож байна
дуу чимээний дархлаа (наад зах нь газрын автобусанд хөндлөнгөөс оролцох).
Төрөл бүрийн эх сурвалжаас авсан санал бодлоо нэгтгэн, өөрийн туршлага дээр үндэслэн,
Зохиогч хамгийн их хэрэглээний гурван талбарыг ойролцоогоор дараах хуваалтад хүрчээ
хянагч нарын нийтлэг гэр бүл.

Сонгодог архитектурын хянагч X 51 (гэр бүлийн анхны микро схемүүд
8051 нь 1980-аад оны эхээр гарсан) ерөнхий хүмүүст хамгийн тохиромжтой
сэдвийг судалж байна. Атмелээс гадна, X 51 нийцтэй бүтээгдэхүүн танд-
Philips болон зэрэг аварга компаниудыг багтаасан арав орчим компани шинээр байгуулагдаж байна
Siemens, дотоодын аналогууд (1816, 1830 цуврал гэх мэт) байдаг бөгөөд үүнийг хийдэг.
архитектур бол хамгийн түгээмэл юм.

AVR гэр бүлийг электроникийн анхан шатны мэргэжилтнүүдэд зөвлөж байна.
төхөөрөмжийн энгийн, олон талт байдлаас шалтгаалан бүтцийн тасралтгүй байдал
янз бүрийн төрлийн хянагч, хэлхээний дизайн, програмчлалын энгийн байдал
(энэ тохиолдолд "програмчлал" гэдэг нь програм бичих үйл явцыг хэлнэ
чип тутамд грамм).

Microchip PIC нь энгийн төхөөрөмжүүдийг зохион бүтээхэд тохиромжтой.
сүрэг, ялангуяа хуулбарлах зориулалттай.

Энэ ангилал нь ихэвчлэн субъектив шинж чанартай бөгөөд зохиогч бусадтай маргахгүй
үзэл бодол: MK-ийн янз бүрийн гэр бүлүүд параметрийн хувьд аажмаар ойртож байна.
бүрэн солигдох боломжтой болж, орчин үеийн бүх цахилгааны нэгэн адил
Ник, нэг эсвэл өөр гэр бүлийн сонголт нь ихэвчлэн "шашны" шинж чанартай байдаг.
Нэмж дурдахад МК-ийн дурдсан гурван гэр бүл нь зөвхөн хамгийн түгээмэл байдаг
бүх нийтийн хянагчуудын дунд, гэхдээ ерөнхийдөө хамгийн алдартай биш юм. Генерал
одоо байгаа микроконтроллеруудын гэр бүлийн тоо ойролцоогоор ойролцоогоор байна.
Үнэндээ 100 гаруй, жил бүр илүү олон гарч ирдэг. Тус бүр
Эдгээр гэр бүлд олон арван өөр загвар багтаж болно. Үүний зэрэгцээ нэгдүгээр байр
8 битийн MK үйлдвэрлэгчдийн дунд уламжлал ёсоор Motorola-д харьяалагддаг.
голчлон хөдөлгөөнт төхөөрөмжийн хянагчтай холбоотой. Микрочип компани

Оршил

PIC гэр бүлээрээ гуравдугаарт, Атмел дөнгөж зургаад жагсчээ. Үүнд,
8 битийн AVR MCU-аас гадна Atmel хэд хэдэн төрлийн MCU үйлдвэрлэдэг.
Үүнд зөвхөн дурдагдсан 8051-ийн залгамжлагчид төдийгүй ARM-
янз бүрийн хэрэглээнд зориулагдсан процессорууд болон тусгай микроконтроллерууд. Гэсэн хэдий ч
Энэ албан ёсны статистик нь одоохондоо юу ч гэсэн үг биш юм - жишээлбэл, суурилуулсан MK-уудын дунд
Атмелийн флаш санах ой нь дэлхийн зах зээлийн гуравны нэгийг эзэмшдэг.
2002-2003 онд дэлхий дээр жилд 3.2 тэрбум ширхэг бичил сав үйлдвэрлэдэг байжээ.
троллерууд. Компьютерийн процессоруудын үйлдвэрлэлийн хэмжээг тооцоолж болно гэдгийг анхаарна уу
Жилд 200 сая ширхэг, өөрөөр хэлбэл энэ нь зах зээлийн ердөө 6 орчим хувийг эзэлдэг (санхүүгийн хувьд)
Ерөнхийдөө энгийн MK-ийн ердийн үнэ байдаг тул харьцаа нь өөр өөр байдаг
нь 2-5 доллар, болон PC процессор наад зах нь магнитудын дараалал, ба
заримдаа хэдэн зуун долларт хүрдэг). Тиймээс хэлэхэд хэтрүүлсэн болохгүй
микро чиглэлээр мэргэшсэн электроникийн инженерийн мэргэжил
хянагч нь компьютерийн програмистаас дутуугүй чухал бөгөөд ховор зүйл юм.
системийн инженер эсвэл захиалгат програм бүтээгч.

Энэхүү ном нь бүтэц, хэлхээний дизайныг судлах хүсэлтэй уншигчдад зориулагдсан болно
AVR MK-ийн онцлог шинж чанарууд, тэдгээрийн үндсэн функцуудыг хэрхэн зөв ашиглах талаар сурах
боломжууд. Тиймээс зохиолч өөрийгөө ассемблер хэлээр хязгаарладаг (дэлгэрэнгүй асуултыг уншина уу
Бид програмчлалын орчинг сонгох талаар авч үзэх болно 5-р бүлэг). Номонд онцолсон зүйл бол
уншигчдад практик зөвлөгөө өгөх, бэлэн алгоритмуудыг тайлбарлах
тодорхой ажлуудыг хэрэгжүүлэхэд хөгжүүлэгчдэд тохиолддог ердийн ажлууд
MK функцууд. Зохиогч уншигчидтай хамтран хэд хэдэн асуудлыг нарийвчлан судалж үздэг
ry нь ихэвчлэн MK програмчлалын гарын авлагын хамрах хүрээнээс хэтэрдэг: дараахтай ажиллах.
практик интерфейс, арифметик үйлдлүүд, PC-тэй харилцах интерфейс, практик
эрчим хүч хэмнэх горимуудын техникийн хэрэгжилт.
Үүний зэрэгцээ зохиогч боломжтой бүх зүйлийг нарийвчлан шинжлэхийг зорьсонгүй.
STI MK AVR: Хэд хэдэн боть ч үүнд хангалтгүй байх болно. Бид тойрч гарахаас өөр аргагүйд хүрч байна
JTAG интерфэйсийг ашиглан дибаг хийх, програмчлах зэрэг асуудлууд ирээдүйтэй
хянагчдыг өөрөө програмчлахыг нээсэн та зүгээр л санамсаргүй байдлаар
Бид дууны синтез болон PWM горимуудын бусад хэрэглээний хамгийн сонирхолтой асуудлыг тэсэн ядан хүлээж байна
таймер.
Энэ номонд ихэнх жишээнүүд нь бага насны хэрэглээнд чиглэгддэг
(8 МБ санах ойн багтаамжтай) Mega дэд бүлгийн загварууд, учир нь тэдгээр нь хамгийн их байдаг
Илүү уян хатан бөгөөд шаардлагагүй нарийн төвөгтэй байдалгүйгээр өргөн хүрээний ажилд тохиромжтой
схем. Илүү энгийн тохиолдолд зохиолч хамгийн түгээмэл зүйлд анхаарлаа хандуулав
залуу ATtiny2313 загваруудаас (түүний "сонгодог" хувилбартай нийцтэй байдлын талаар
AT90S2313 см. Хэсэг "Тасалдал ашиглах эсрэг програм" бүлэг
чи 5
). Өгөгдсөн жишээнүүдийн ихэнхийг бараг ямар ч өөрчлөлтгүйгээр хийж болно.
тохирох тохиргоотой бусад AVR загварт тохируулсан
tion.

ХЭСЭГ

Төхөөрөмжийн ерөнхий зарчим

болон Atmel AVR-ийн үйл ажиллагаа

1-р бүлэг. Atmel AVR микроконтроллеруудын тойм

2-р бүлэг.Ерөнхий бүтэц, санах ойн зохион байгуулалт,

цаг тохируулах, дахин тохируулах

3-р бүлэг.Захын төхөөрөмжүүдийн танилцуулга

4-р бүлэг.Тасалдал болон эрчим хүч хэмнэх горимууд

C H A P T E R

Микроконтроллерийн тойм
Atmel AVR

Atmel AVR нь олон талт 8 битийн микроконцуудын гэр бүл юм.
янз бүрийн суурилуулсан дагалдах хэрэгсэл бүхий нийтлэг цөм дээр суурилсан троллерууд
сүрэг. AVR MK-ийн боломжууд нь олон ердийн асуудлыг шийдвэрлэх боломжийг олгодог.
радио электрон төхөөрөмж хөгжүүлэгчдийн өмнө үүссэн.
Atmel AVR микроконтроллеруудын онцлог.

Гүйцэтгэл нь ойролцоогоор 1 MIPS/MHz байна. MIPS (Нэг сая зааварчилгаа
Хоёрдугаарт, секундэд сая тушаалууд) нь хамгийн эртний бөгөөд олон талаараа нэг юм
Процессорын гүйцэтгэлийн шинж чанар муу, учир нь зааврын багц
өөр өөр процессоруудын хувьд өөр өөр байдаг бөгөөд үүний дагуу ижил тоо байдаг
өөр өөр системүүдийн заавар нь өөр өөр үр дүнг өгөх болно. Гэсэн хэдий ч
зааварчилгаагүй энгийн 8 битийн тооцооллын системд зориулагдсан
их тоо, хөвөгч цэгийн тоо, массивтай харьцах
өгөгдөл, энэ нь тэдний гүйцэтгэлийг харьцуулах сайн үзүүлэлт юм. Тооцоолох
AVR-ийн гүйцэтгэлийн цөм нь хэд хэдэн даалгавар дээр 16 дахин их байдаг
in-line 80286 процессор.

Нарийвчилсан RISC архитектур. RISC (багасгасан) үзэл баримтлал
Instruction Set Computing, зааварчилгаа багассан тооцоолол) -ийг илүүд үздэг
хамгийн багадаа авсаархан, хурдан командын багц байхыг шаарддаг
зааварчилгааг гүйцэтгэх; Үүний зэрэгцээ, ийм илүү төвөгтэй үйлдлүүд
хөвөгч цэгийн тооцоо эсвэл олон битийн арифметик
бодит тоогоор бол дэд программуудын түвшинд хэрэгжих ёстой. Үзэл баримтлал
RISC нь үндсэн бүтцийг хялбаршуулдаг (ердийн AVR цөм нь зөвхөн 32 мянган нэгжийг агуулдаг).
транзистор, PC процессорын хэдэн арван саяас ялгаатай) болон хурдасгасан
түүний ажиллагааг харуулж байна: ердийн заавар нь нэг цагийн мөчлөгт (командуудаас бусад тохиолдолд) гүйцэтгэгддэг.
програмын салбарлах, санах ойн хандалт болон бусадтай хамтран ажилладаг
урт өгөгдөл). AVR нь энгийн хоёр үе шаттай тохируулгатай.
Weir, командыг нэг цагийн мөчлөгөөр гүйцэтгэх үед дараагийнх нь дуудагдах үед.
Intel-ийн архитектураас ялгаатай нь "сонгодог" AVR нь техник хангамжийн үржүүлэгчгүй
хуваах/хуваах боловч Мега дэд бүлэг нь үржүүлэх үйлдлүүдийг агуулдаг.

Тусдаа тушаалын болон өгөгдлийн санах ойн автобус. AVR (бусад ихэнх шиг
микроконтроллерууд) гэж нэрлэгддэг. Харвардын архитектур, санах ойн хэсгүүд хаана байна