![AVR Assembler хичээл 7: 12 алхам AVR Assembler хичээл 7: 12 алхам](https://i.howwhatproduce.com/images/001/image-562-j.webp)
Агуулгын хүснэгт:
- Алхам 1: Товчлуурыг цэвэрлэх 1
- Алхам 2: Товчлуурыг цэвэрлэ 2
- Алхам 3: Товчлуурыг цэвэрлэх 3
- Алхам 4: Товчлуурын утсыг холбоно уу
- Алхам 5: Товчлуурыг анализатор руу холбоно уу
- Алхам 6: Аль шилжүүлэгчийг бид тохируулах ёстой вэ?
- Алхам 7: Тасалдлын зохицуулагчийг бичнэ үү
- Алхам 8: Түлхүүр дарах утгыг газрын зураг дээр харуул
- Алхам 9: Хувилбар 1 -ийн код ба видео
- Алхам 10: Хувилбар 2 -ийн код
- Алхам 11: Бид товчлуураас хэрхэн ангижрах вэ? Хувилбар 3
- Алхам 12: Ажлын хувилбарын код ба видео
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00
![AVR Assembler хичээл 7 AVR Assembler хичээл 7](https://i.howwhatproduce.com/images/001/image-562-1-j.webp)
7 -р хичээлд тавтай морилно уу!
Өнөөдөр бид эхлээд товчлуурыг хэрхэн яаж цэвэрлэхээ, дараа нь аналог оролтын портуудыг ашиглан товчлууртай хэрхэн харилцахаа харуулах болно. Бид товчлуурыг утсаар холбох бөгөөд ингэснээр товчлуур дарах бүр нь өвөрмөц хүчдэлийг аналог оролт руу илгээдэг бөгөөд энэ нь дарагдсан хүчдэлээр ялгах боломжийг олгодог. Дараа нь бид бүртгэлийн анализатор дээр дарагдсан дугаарыг гаргаад бүх зүйл болж байгаа шиг болж байгааг харуулна. Аливаа зүйлийг хэд хэдэн үе шаттайгаар хийж, түүнээс хэрхэн зайлсхийх талаар олж мэдээрэй. Аналог тоон хөрвүүлэгч ашиглах нь таны микроконтроллер дээр цөөн портуудыг ашигладаг боловч товчлуурыг удирдах хамгийн сайн арга биш гэдгийг бид бас ойлгох болно.
- товчлуур. Та нэгийг худалдаж авах эсвэл миний хийсэн зүйлийг хийж, нэгийг нь цэвэрлэх боломжтой.
- Товчлуурын 2 эмэгтэй толгой
- холбох утас
- талхны самбар
- 4 1 Kohm резистор
- 1 15 Кох эсэргүүцэл
- 1 3.3 Кох эсэргүүцэл
- 1 180 ом эсэргүүцэл
- 1680 ом эсэргүүцэл
- дижитал мултиметр
- Таны анализатор 5 -р хичээлээс
Хэрэв та аль хэдийн товчлууртай бол түүнийгээ цэвэрлэх шаардлагагүй бол эхний хэдэн алхамыг алгасаж болно.
Энд миний AVR ассемблер хичээлүүдийн бүрэн цуглуулгын линк байна:
Алхам 1: Товчлуурыг цэвэрлэх 1
![Товчлуурыг цэвэрлэх 1 Товчлуурыг цэвэрлэх 1](https://i.howwhatproduce.com/images/001/image-562-2-j.webp)
![Товчлуурыг цэвэрлэх 1 Товчлуурыг цэвэрлэх 1](https://i.howwhatproduce.com/images/001/image-562-3-j.webp)
![Товчлуурыг цэвэрлэх 1 Товчлуурыг цэвэрлэх 1](https://i.howwhatproduce.com/images/001/image-562-4-j.webp)
![Товчлуурыг цэвэрлэх 1 Товчлуурыг цэвэрлэх 1](https://i.howwhatproduce.com/images/001/image-562-5-j.webp)
Эрт дээр үед эмээ өвөө нар чинь жаахан хүүхэд байхад хүмүүс хоорондоо харилцахдаа урт кабелийг хананд залгасан эдгээр хачин харагддаг төхөөрөмжийг ашигладаг байжээ. Тэднийг "утас" гэж нэрлэдэг байсан бөгөөд ихэвчлэн хэн нэгэн тан руу залгахад залхаах чимээ гаргадаг хямдхан хуванцар эд байсан (өнөөгийн "Жастин Бибер" -ийн дуудлагын ая нь тийм ч ядаргаатай биш юм). Ямар ч тохиолдолд эдгээр төхөөрөмжүүд дээр товчлуурын товчлуурууд байдаг бөгөөд тэдгээр нь маш энгийн утастай байсан тул цэвэрлэхэд хялбар байдаг бөгөөд та товчлууруудаас өөр 2 товчлууртай ("дахин залгах" ба "флаш") худалдаж авах боломжтой. "сумтай товчлуурууд", "цэсийн товчлуурууд" эсвэл өөр зүйлүүд. Тиймээс бид хуучин утаснаас товчлуурыг цэвэрлэхээс эхлэх болно. Эхлээд утсаа аваад (зураг дээр үзүүлсэн шиг би GE утсыг ашигладаг) утсыг нь салга. Дараа нь цүүц аваад товчлуурыг дарж байгаа хуванцар товчлуурыг нь салгаад товчлуурыг салга.
Алхам 2: Товчлуурыг цэвэрлэ 2
![Товчлуурыг цэвэрлэх 2 Товчлуурыг цэвэрлэх 2](https://i.howwhatproduce.com/images/001/image-562-6-j.webp)
![Товчлуурыг цэвэрлэх 2 Товчлуурыг цэвэрлэх 2](https://i.howwhatproduce.com/images/001/image-562-7-j.webp)
![Товчлуурыг цэвэрлэх 2 Товчлуурыг цэвэрлэх 2](https://i.howwhatproduce.com/images/001/image-562-8-j.webp)
Одоо PVC хөрөө авч, хуванцарыг түлхүүрийн нүхний эргэн тойрноос хайчилж, дараа нь ирмэгийг нь хайчилж, нимгэн товчлуур үлдээж гүнийг нь зөв болго.
Дараа нь товчлуурыг сүүлчийнх нь оройг хайчилж авсны дараа үлдсэн жижиг шонгуудыг ашиглаж, гагнуурын төмрийг ашиглан халуун төмрийг бэхэлгээний нүх тус бүрт цоолж, хуванцар хайлж, дээр нь тараана. товчлуурын доод хэсэгт шинэ "товчлуурууд" үүсч, товчлуурыг өмнөх шигээ байрлуулах болно.
Би гурван чанга яригч, самбар дээр байгаа унтраалга гэх мэт бусад зүйлийг цэвэрлэх дуртай. Гэсэн хэдий ч энэ удаад би өөр бусад зорилготой байгаа тул унтраалга, эд зүйлсийг цэвэрлэхгүй байна. Түүнчлэн TA31002 шугаман IC байдаг бөгөөд энэ нь утасны дуудлага юм. Мэдээллийн хүснэгтийг онлайнаар хялбархан олж, татаж авч болно. Тиймээс би үүнийг самбар дээр гагнаж орхиж, дараа нь тоглох болно. Би үүнийг осциллографт холбож, үүнээс ямар гайхалтай дохио гаргаж болохыг харахыг хүсч байна. Үүнээс үүдэн хаалганы хонх ч хийж магадгүй. Хэн мэдэх вэ.
Ямар ч байсан та утсаа устгаж, эд ангиудыг нь цэвэрлэж дуусаад бид товчлуураа хийж дуусгах болно.
Алхам 3: Товчлуурыг цэвэрлэх 3
![Товчлуурыг цэвэрлэх 3 Товчлуурыг цэвэрлэх 3](https://i.howwhatproduce.com/images/001/image-562-9-j.webp)
![Товчлуурыг цэвэрлэх 3 Товчлуурыг цэвэрлэх 3](https://i.howwhatproduce.com/images/001/image-562-10-j.webp)
![Товчлуурыг цэвэрлэх 3 Товчлуурыг цэвэрлэх 3](https://i.howwhatproduce.com/images/001/image-562-11-j.webp)
Цэвэрлэх зориулалтын зулын гол ашиглаж, товчлуурын ёроолоос тууз кабелийг салгаад хэлхээний самбар дахь нүх тодорхой байгаа эсэхийг шалгаад дараа нь нүх байгаа газарт хоёр эмэгтэй толгойг хавсаргана уу. Та 4 толгойтой толгой байхын тулд толгойгоо буулгах хэрэгтэй болно.
Толгойг хавсаргасны дараа та үүнийг талхны талбар дээр холбож, мултиметр авч, мултиметрийг санамсаргүй тээглүүрээр холбож, эсэргүүцлийг хэмжих замаар түлхүүрүүдийг туршиж үзэх боломжтой. Энэ нь түлхүүрүүдийг газрын зураг дээр байрлуулах боломжийг танд олгоно. Цахилгаан хэлхээг хараад түлхүүрүүд гарц руу хэрхэн холбогдож байгааг харахад хэцүү байдаг, гэхдээ хэрэв та мултиметр ашиглавал хоёр зүү рүү залгаж, дараа нь дэлгэц дээр нээлттэй хэлхээний оронд дугаар гарч ирэх хүртэл товчлууруудыг дарж болно.. Энэ нь тухайн түлхүүрийн гол цэг байх болно.
Гаралтын тээглүүрийн бүх түлхүүрүүдийг ийм байдлаар зураглаарай.
Алхам 4: Товчлуурын утсыг холбоно уу
![Товчлуурыг утсаар холбоно уу Товчлуурыг утсаар холбоно уу](https://i.howwhatproduce.com/images/001/image-562-12-j.webp)
![Товчлуурыг утсаар холбоно уу Товчлуурыг утсаар холбоно уу](https://i.howwhatproduce.com/images/001/image-562-13-j.webp)
Одоо утаснуудын схемийг дагаж, товчлуурыг талхныхаа талбарт холбоно уу.
Энэ нь яаж ажиллах вэ гэхээр бид 5V -ийг зүүн гар талд байрлуулж, баруун тал нь GND руу орно. Диаграммын баруун талд байгаа анхны зүү нь Atmega328p микроконтроллер дээрх бидний аналог зүүг оруулна. Хэрэв ямар ч товчлуур байхгүй бол дохио нь 0V байх бөгөөд өөр өөр товчлуурууд тус бүр дээр дарахад аналог портын оролт 0V -аас 5V хооронд хэлбэлзэж, аль товчлуур дарагдсан байдлаас хамаарна. Зам бүрийн хувьд бусадтай харьцуулахад өөр эсэргүүцэлтэй байхын тулд бид эсэргүүцлийн утгыг сонгосон. Микроконтроллер дээрх аналог порт нь аналог дохиог хүлээн авч 0V ба 5V хооронд 1024 өөр суваг болгон хуваадаг. Энэ нь суваг бүр 5V/1024 = 0.005 В/суваг = 5 мВ/суваг өргөнтэй гэсэн үг юм. Тиймээс аналог порт нь оролтын хүчдэлийг 5 мВ -оос дээш зөрүүтэй тохиолдолд ялгаж чаддаг. Манай тохиолдолд бид эсэргүүцлийн утгыг сонгосон бөгөөд ингэснээр хоёр товчлуур дарахад үүнээс их ялгаатай хүчдэлийн дохио илгээгдэх тул микроконтроллер аль товчлуур дарагдсан болохыг хялбархан шийдэх боломжтой болно. Хамгийн том асуудал бол бүхэл бүтэн систем маш их чимээ шуугиантай байдаг тул товчлуурыг дарах бүрт хэд хэдэн хүчдэл сонгох шаардлагатай болно, гэхдээ бид үүнийг дараа нь оруулах болно.
Бид хянагч руу ганцхан оролтын шугам ашиглан 14 товчлууртай товчлуурыг удирдах боломжтой болохыг анхаарна уу. Энэ бол аналог оролтын ашигтай талуудын нэг юм.
Одоо бидний товчлуурыг удирдах анхны оролдлого бол товчлуур дарахад тасалдал үүсгэх явдал юм, тасалдлын дэд програм нь аналог оролтын портыг уншиж, ямар товчлуур дарагдсан болохыг шийдэх бөгөөд дараа нь энэ дугаарыг манай регистр анализаторын дэд програмд гаргана. 5 -р хичээл дээр бидний тохируулсан 8 LED дээрх хоёртын үндсэн утга.
Алхам 5: Товчлуурыг анализатор руу холбоно уу
![Товчлуурыг анализатор руу холбоно уу Товчлуурыг анализатор руу холбоно уу](https://i.howwhatproduce.com/images/001/image-562-14-j.webp)
![Товчлуурыг анализатор руу холбоно уу Товчлуурыг анализатор руу холбоно уу](https://i.howwhatproduce.com/images/001/image-562-15-j.webp)
Зураг дээр бид товчлуурыг микроконтроллерт хэрхэн холбохыг хүсч байгаа бөгөөд ингэснээр бид анализаторын дэлгэц дээрх гаралтыг харах боломжтой болно. Үндсэндээ бид гар утасны гаралтыг ATmega328P дээр ADC0 гэж нэрлэдэг PortC pin 0 руу холбодог.
Гэсэн хэдий ч хэд хэдэн нэмэлт зүйл бий. Бид мөн PD2 руу товчлуур оруулах гэж байна. Өөрөөр хэлбэл 5V төмөр замаас утсыг товчлуур руу, товчлуурын нөгөө талаас PD2 руу аваачаад эцэст нь бид 5V төмөр замаас AREF зүүг салгаж, салгахыг хүсч байна. Хэрэв бид хүсвэл 0.1 microfarad задлах конденсатор оруулах боломжтой. Энэ бол керамик конденсатор бөгөөд 104 дээр бичигдсэн байдаг. Эхний хоёр цифр нь тоо бөгөөд сүүлийн цифр нь 10-ийн хүч бөгөөд бид үүнийг пикофарад (pico 10^-12 гэсэн утгатай) хариулт авахын тулд үржүүлснээр 104 нь 10 x 10^4 пикофарад гэсэн утгатай ижил утгатай болно. 100 нанофарад (нано нь 10^-9 гэсэн утгатай) бөгөөд энэ нь 0.1 микрофарадтай тэнцэнэ (микро гэдэг нь 10^-6). Ямар ч байсан, энэ бүхэн нь AREF зүүг бид жишиг зүү болгон ашиглах боломжтой болтол нь бэхжүүлдэг.
Мөн бид PD2 болон газрын хооронд 1 Mohm эсэргүүцэл авахыг хүсч байна. Бид PD2 -ийг 0V -ийн гаралтын зүү болгон тохируулах гэж байгаа бөгөөд энэ зүү дээр эерэг ирмэгийг асаах болно. Бид товчлуурыг суллахад ирмэг нь нэн даруй алга болохыг хүсч байна, ингэснээр бид "доош татах" эсэргүүцлийг оруулах болно.
Бид товчлуурыг хүсч байгаа шалтгаан нь бид аналог-дижитал хөрвүүлэгчийг чип дээрх INT0 зүүг унтраахыг хүсч байгаа бөгөөд энэ нь бас PD2 юм. Эцэст нь бид товчлуурыг ADC -ийг идэвхжүүлж, оролтыг тусад нь товчлуургүйгээр хөрвүүлэхийг хүсч байна, гэхдээ цаг хугацааны байдлаас шалтгаалан бид ADC -ийг идэвхжүүлэхийн тулд тусдаа товчлууртай болж, бүгдийг нь индүүдэх болно. алдаа гарч, бүх зүйл зөв ажиллаж байгаа гэдэгт итгэлтэй байвал бид уншихыг хүссэн товчлуурыг дарахад гарч буй дуу чимээ, цаг хугацааны асуудлыг шийдвэрлэх болно.
Одоогийн байдлаар бидний ажиллах арга бол түлхүүрийг дарж, дараа нь ADC -ийг идэвхжүүлэхийн тулд товчлуурыг дарж, дараа нь тавиад товчлуурын хоёртын утга анализатор дээр гарч ирнэ гэж найдаж байна.
Тиймээс үүнийг хийх хэдэн кодыг бичье.
Алхам 6: Аль шилжүүлэгчийг бид тохируулах ёстой вэ?
![Аль шилжүүлэгчийг бид тохируулах ёстой вэ? Аль шилжүүлэгчийг бид тохируулах ёстой вэ?](https://i.howwhatproduce.com/images/001/image-562-16-j.webp)
Эхлээд бид үүнийг хэрхэн кодлох талаар бодож үзье, ингэснээр хянагч нь товчлуурын оролтыг уншиж, дарагдсан товчлуурын харгалзах тоон утга болгон хувиргаж чадна. Энэ нь Atmega328p дээр суурилагдсан болно. Бид AREF -ийг жишиг хүчдэл болгон ашиглах бөгөөд товчлуурын гаралтыг PortC0 эсвэл PC0 -тэй холбох болно. Энэ зүүг аналог-тоон хөрвүүлэгч 0-ийн ADC0 гэж нэрлэдэг болохыг анхаарна уу. ATmega328P-ийн тасалдал, 12.4-р хэсгийг уншихаас өмнө аналоги-тоон хөрвүүлэгчийн 24-р бүлгийг унших нь зүйтэй болов уу. Микроконтроллерийг аналог оролтын дохиогоор юу хийх, манай програмтай хэрхэн харьцах талаар мэдэхийн тулд бид эхлээд хэд хэдэн ADC -ийг тохируулах ёстой. холбогдох бүртгэлийн битүүд. Эдгээр нь үндсэндээ анхны компьютер дээрх хуучин унтраалгатай адилхан юм. Та унтраалгыг асаах эсвэл унтраах, эсвэл бүр арагш нь залгуураас нөгөө гаралтын хооронд кабелийг залгах бөгөөд ингэснээр салаа замд хүрч буй электронууд нэг хаалгыг хааж, нөгөө хаалгыг онгойлгоход хүргэдэг. хэлхээ, тэгээд өөр логик даалгавар гүйцэтгэдэг. Ассемблер хэлээр кодлохдоо бид микроконтроллерын эдгээр функцэд ойрхон ханддаг бөгөөд энэ нь үүнийг хийх хамгийн сонирхолтой зүйлүүдийн нэг юм. Энэ нь илүү "гар дээр" байгаа бөгөөд "хөшигний ард" байгаа шиг хамаагүй бага зүйл болж байна. Тиймээс эдгээр бүртгэлийг тохируулах ажлыг уйтгартай ажил гэж бүү бодоорой. Энэ бол угсрах хэлийг сонирхолтой болгодог зүйл юм! Бид чипийн дотоод үйл ажиллагаа, логиктой маш хувийн харилцаа холбоог олж авч, үүнийг хүссэнээрээ хийх болно. Дэмий цагны мөчлөг байхгүй тул энд тохируулах шаардлагатай унтраалгуудын жагсаалтыг энд оруулав.
- PRR регистрийн 0 бит болох PRADC Power Reduction ADC битийг унтраа, учир нь хэрэв энэ бит байгаа бол ADC -ийг унтраадаг. Цахилгаан эрчим хүчний бууралтын бүртгэл нь үндсэндээ шаардлагагүй үед цахилгаан хэрэглэдэг янз бүрийн зүйлийг хаах арга юм. Бид ADC -ийг ашиглаж байгаа тул үүнийг ийм байдлаар идэвхгүй болгохгүй байхыг хүсч байна. (PRADC -ийг 46 -р хуудаснаас үзнэ үү)
- ADC Multiplexer Selection (ADMUX) бүртгэлээс MUX3… 0-ийг унтрааж ADC0 байх аналог оролтын сувгийг сонгоно уу (Хүснэгт 24-4 хуудас 249-ийг үзнэ үү) эдгээр нь аль хэдийн анхдагчаар унтраалттай байдаг тул үүнийг хийх шаардлагагүй болно. Гэсэн хэдий ч, хэрэв та ADC0 -ээс өөр порт ашиглаж байгаа бол эдгээр унтраалгыг зохих ёсоор солих шаардлагатай болно. MUX3, MUX2, MUX1, MUX0 -ийн янз бүрийн хослолууд нь аналог портуудын аль нэгийг оролт болгон ашиглах боломжийг олгодог бөгөөд хэрэв та өөр өөр аналог дохиог нэг дор харахыг хүсвэл тэдгээрийг шууд өөрчилж болно.
- ADMUX регистрийн REFS0 ба REFS1 битүүдийг унтрааж, ингэснээр бид дотоод лавлагаа биш харин AREF -ийг жишиг хүчдэл болгон ашиглах болно (248 -р хуудсыг үзнэ үү).
- ADMUX дээр ADLAR битийг асаана уу, ингэснээр үр дүнг "зүүн тийш нь тохируулна", бид энэ сонголтыг дараагийн алхамд хэлэлцэх болно.
- PC0 руу дижитал оролтыг унтраахын тулд ADC0D битийг Digital Input Disable Register (DIDR0) хэсэгт тохируулна уу. Бид энэ портыг аналог оролтонд ашиглаж байгаа тул дижитал оролтыг идэвхгүй болгох боломжтой.
- ISC0 ба ISC1 -ийг Гадаад тасалдлын хяналтын бүртгэл A (EICRA) -д тохируулаад бид хүчдэлийн дохионы өсөн нэмэгдэж буй ирмэгийг INT0 зүү рүү (PD2) оруулахыг хүсэж байгааг харуул. 71 -р хуудсыг үзнэ үү.
- Гадаад тасалдлын маск бүртгэлийн (EIMSK) INT0 ба INT1 битүүдийг цэвэрлэснээр бид энэ зүү дээр тасалдал ашигладаггүй болохыг харуулж байна. Хэрэв бид энэ зүү дээрх тасалдлыг идэвхжүүлэх байсан бол бидэнд 0x0002 хаягт тасалдлын зохицуулагч хэрэгтэй болно, гэхдээ үүний оронд бид энэ зүү дээрх дохио нь ADC хөрвүүлэлтийг өдөөдөг бөгөөд үүнийг дуусгах ажлыг ADC хувиргах бүрэн тасалдал гүйцэтгэдэг. хаяг 0x002A. 72 -р хуудсыг үзнэ үү.
- ADC -ийг идэвхжүүлэхийн тулд ADC -ийн хяналт ба статус регистр A (ADCSRA) -д ADC Enable (ADEN) бит (бит 7) -ийг тохируулна уу. 249 -р хуудсыг үзнэ үү.
- Аналог дохиог уншихыг хүссэн болгондоо бид ADC эхлэх хөрвүүлэх битийг (ADSC) тохируулснаар нэг хөрвүүлэлтийг эхлүүлж болох боловч одоогоор хэн нэгэн товчлуур дарах бүрт үүнийг автоматаар уншихыг бид хүсч байна, үүний оронд бид ADC -ийг идэвхжүүлэх болно. Autotrigger ADCSRA бүртгэлд идэвхжүүлэх (ADATE) битийг идэвхжүүлснээр автоматаар хийгддэг.
- Бид ADPS2..0 битийг (AD Prescalar бит) 111 болгож тохируулсан бөгөөд ингэснээр ADC цаг нь CPU -ийн цагийг 128 -ийн хүчин зүйлээр хуваана.
- Бид ADC -ийг өдөөх эх үүсвэрийг PD2 гэж нэрлэдэг бөгөөд үүнийг INT0 (Гадаад тасалдлын хүсэлт 0) гэж нэрлэдэг. Бид үүнийг ADCSRB регистрийн төрөл бүрийн битүүдийг сэлгэх замаар хийдэг (251-р хуудасны 24-6-р хүснэгтийг үзнэ үү). Хүснэгтээс бид ADTS0 -ийг унтраах, ADTS1 -ийг асаах, ADTS2 -ийг унтраахыг хүсч байгаа бөгөөд ингэснээр ADC нь энэ зүүг асаах болно. Хэрэв бид аналог портыг тасралтгүй туршиж үзэхийг хүсч байвал аналог дохиог уншиж байгаа шиг (дууны дээж авах гэх мэт) үүнийг чөлөөт гүйлтийн горимд тохируулахыг анхаарна уу. PD2 дээр идэвхжүүлэгчийг тохируулах бидний ашигладаг арга нь PC0 аналог портын ADC уншилтыг идэвхжүүлдэг бөгөөд хөрвүүлэлт дууссаны дараа тасалдал гарч ирнэ.
- ADCSRA бүртгэлд ADC Interrupt Enable (ADIE) битийг идэвхжүүлснээр аналог тоон хөрвүүлэлт дуусахад тасалдал үүсч, бид тасалдлын зохицуулагчийг бичиж,.org 0x002A дээр байрлуулж болно.
- Тасалдлыг идэвхжүүлэхийн тулд I битийг SREG дээр тохируулна уу.
Дасгал 1: Дээрх тохиргоо бүрийн өгөгдлийн хүснэгтийн холбогдох хэсгүүдийг уншсан эсэхээ шалгаарай, ингэснээр бид юу болж байгааг, хэрэв бид өөр тохиргоонд шилжүүлбэл юу болохыг ойлгох болно.
Алхам 7: Тасалдлын зохицуулагчийг бичнэ үү
Сүүлчийн алхамд бид үүнийг PD2 дээр илрүүлж буй өсөн нэмэгдэж буй ирмэг нь PC0 дээрх тоон хөрвүүлэлтийн аналогийг өдөөх бөгөөд үүнийг хөрвүүлсний дараа ADC хөрвүүлэлтийн бүрэн тасалдал гарахаар тохируулсан болохыг олж харсан. Одоо бид энэ тасалдалаар ямар нэгэн зүйл хийхийг хүсч байна. Хэрэв та 65-р хуудасны 12-6-р хүснэгтийг үзвэл болзошгүй тасалдлын жагсаалтыг харах болно. Өмнөх зааварчилгаанд RESET 0x0000 хаягаар, Таймер/Тоологч0 Overflow 0x0020 хаягаар тасалдсан болохыг бид аль хэдийн харсан. Одоо бид 0x002A хаягаар байгаа хүснэгтээс харж байгаа ADC тасалдлыг харахыг хүсч байна. Тиймээс угсрах хэлний кодын эхэнд бидэнд дараах мөрийг оруулах шаардлагатай болно.
.org 0x002Arjmp ADC_int
ADC нь хөрвүүлэлтийг хийж дуусах бүрт ADC_int гэсэн шошго таслагчтай ажиллах болно. ADC -ийн ажиллах арга бол дараах тооцооллыг хийх явдал юм.
ADC = Vin x 1024 / Vref
Тиймээс, хэрэв би товчлуурын "дахин залгах" товчийг дарвал юу болохыг харцгаая. Энэ тохиолдолд PC0 дээрх хүчдэл нь тодорхой утга болж өөрчлөгдөх болно, 1.52V гэж хэлэх ба Vref 5V -д байгаа тул бидэнд дараахь зүйлс байх болно.
ADC = (1.52V) x 1024 / 5V = 311.296
гэх мэт энэ нь 311 болж харагдана. Хэрэв бид үүнийг буцааж хүчдэл болгон хөрвүүлэхийг хүсч байвал тооцооллыг буцаах болно. Бид бодит хүчдэлийг хооронд нь ялгах сонирхолгүй байгаа тул үүнийг хийх шаардлагагүй болно. Хөрвүүлэлт дууссаны дараа үр дүнг ADCH болон ADCL бүртгэлд байрлуулсан 10 битийн тоонд хадгалдаг бөгөөд үүнийг "зүүн тийш нь тохируулах" шаардлагатай болгосон бөгөөд энэ нь 10 бит нь ADCH-ийн 7 битээс эхэлж доошоо бууна гэсэн үг юм. ADCL -ийн 6 бит (эдгээр хоёр бүртгэлд нийт 16 бит байдаг бөгөөд бид зөвхөн 10 -ийг нь ашигладаг, өөрөөр хэлбэл 1024 суваг). Хэрэв бид хүсвэл ADMUX регистрийн ADLAR битийг цэвэрлэх замаар үр дүнг "баруун тийш нь" тохируулж болно. Бидний зүүн тийш тохируулсан сонголтыг сонгосон шалтгаан нь бидний дохионууд хоорондоо хол зайтай, сувгийн дугаарын сүүлийн хоёр орон нь хамааралгүй, Энэ бол зүгээр л чимээ шуугиан байж магадгүй тул бид товчлууруудыг зөвхөн дээд 8 оронтой тоогоор ялгах болно, өөрөөр хэлбэл бид аль товчлуур дарагдсан болохыг олж мэдэхийн тулд ADCH -ийг харах хэрэгтэй болно. бүртгүүлж, энэ дугаарыг товчлуурын утга болгон хөрвүүлээд дараа нь энэ утгыг манай регистр анализаторын LED руу илгээнэ үү, ингэснээр "9" гэж дарахад LED нь "00001001" харгалзах LED -ийг асаах болно гэдгийг баталгаажуулна. Гэсэн хэдий ч бид янз бүрийн товчлууруудыг дарахад ADCH дээр юу гарч байгааг харах хэрэгтэй. ADCH -ийн агуулгыг анализаторын дэлгэц рүү илгээдэг энгийн тасалдлын зохицуулагчийг бичье.
ADC_int: lds анализатор, ADCH; ADCH -ийн утгыг манай анализатор руу ачаална уу EIFR, 0; гадаад тасалдлын тугийг дахин цэвэрлэхэд бэлэн болно
Одоогийн байдлаар та 5 -р хичээл дээрх манай анализатороос кодыг хуулж, энэ тасалдал, сэлгэх тохиргоог нэмж ажиллуулах боломжтой байх ёстой. Дасгал 2: Кодыг бичээд ажиллуулна уу. Та анализаторын дэлгэц дээр ADCH -ийг харуулах болно. Нэг товчлуурыг олон удаа дарж үзээрэй. ADCH дээр та үргэлж ижил утгыг авдаг уу?
Алхам 8: Түлхүүр дарах утгыг газрын зураг дээр харуул
![Түлхүүр товчлуурын утгыг газрын зураг дээр харуул Түлхүүр товчлуурын утгыг газрын зураг дээр харуул](https://i.howwhatproduce.com/images/001/image-562-17-j.webp)
Одоо бидний хийх ёстой зүйл бол ADCH дахь утгыг дарагдсан товчлууртай харгалзах тоонууд болгон хувиргах явдал юм. Бид үүнийг хийхдээ товчлуур дарах бүрт ADCH -ийн агуулгыг бичээд зурган дээрх шиг аравтын бутархай болгон хувиргадаг. Тасалдлыг зохицуулах горимд бид товчлуур дарах тус бүрт харгалзах утгын бүхэл бүтэн хүрээг авч үзэх бөгөөд ингэснээр ADC нь тухайн мужид байгаа бүх зүйлийг тухайн товчлуур дээр дарах болно.
Дасгал 3: Үүнийг хийж, дараа нь ADC тасалдлын горимоо дахин бичнэ үү.
Энд миний авсан зүйл байна (таных арай өөр байх болно). Би үүнийг товчлуур дарах бүрт хэд хэдэн утгатай тохируулсан болохыг анхаарна уу.
ADC_int:; Гадаад тасалдал зохицуулагч анализатор; new numberlds button -д бэлдэхH, ADCH; ADCH -ийг clccpi buttonH, 240brlo PC+3 уншихад ADC шинэчлэгддэг; хэрэв ADCH нь том бол энэ нь 1ldi анализатор, 1; 1rjmp өгөөжтэй анализаторыг ачаалах; болон clccpi товчлуурыг буцаана H, 230; Хэрэв ADCH нь том бол 2brlo PC+3ldi анализатор, 2rjmp буцах clccpi товчH, 217brlo PC+3ldi анализатор, 3rjmp буцах clccpi товчH, 203brlo PC+3ldi анализатор, 4rjmp буцах clccpi товчH, 187brlo PC+3ldi анализатор, 5rjmp буцах clccpi товч 155brlo PC+3ldi анализатор, 6rjmp буцах clccpi товчH, 127brlo PC+3ldi анализатор, 255; Бид флэшийг бүх onrjmp буцах clccpi товч H, 115brlo PC+3ldi анализатор, 7rjmp буцах clccpi товчH, 94brlo PC+3ldi анализатор, 8rjmp буцах clccpi товч H, 62brlo PC+3ldi анализатор, 9rjmp буцах clccpi товч H, 37brlo PC+3ldi анализатор, 0b11110000; од нь дээд хагас onrjmp буцах clccpi товчH, 28brlo PC+3ldi анализатор, 0rjmp буцах clccpi товчH, 17brlo PC+3ldi анализатор, 0b00001111; хэш тэмдэг нь доод хагас onrjmp буцах clccpi товчH, 5brlo PC+3ldi анализатор, 0b11000011; дахин залгах нь дээд 2 доод 2rjmp буцах ldi анализатор, 0b11011011; өөрөөр алдаа гарсан бол буцах: reti
Алхам 9: Хувилбар 1 -ийн код ба видео
Би товчлуурын драйверын энэ анхны хувилбарт кодоо хавсаргав. Энэ тохиолдолд та товчлуурыг дарж, дараа нь товчлуурыг дарж ADC -ийг товчлуураас унших боломжтой болно. Бидний хүсч буй зүйл бол товчлуур биш харин хөрвүүлэх дохио нь товчлуур дарахаас ирдэг. Дасгал 3: Энэ кодыг угсарч байршуулаад туршиж үзээрэй. Та хөрвүүлэлтийн янз бүрийн босгыг түлхүүр даралтын хүчдэлтэй тохируулахын тулд өөрчилж магадгүй юм. Хэрэв та товчлуурын оронд ADC0 болон гадаад тасалдлын зүү хоёрын аль алиных нь оролтыг ашиглахыг оролдвол юу болох вэ? Би ч бас манай товчлуурын драйверын энэ анхны хувилбарын үйл ажиллагааны видеог хавсаргах болно. миний кодонд стек заагчийг эхлүүлэх хэсэг байдаг. Хувьсагчдыг удирдах явцад стекээс түлхэж, гаргахыг хүсдэг янз бүрийн бүртгэлүүд байдаг бөгөөд бид юу хийж болохгүй, дараа нь хадгалж, сэргээхийг хүсч болох бүртгэлүүд байдаг. Жишээлбэл, SREG бол тасалдал бүрт хадгалагдаагүй бүртгэл тул аливаа зүйлийн дунд тасалдал гарсан тохиолдолд үйлдлүүдийн үр дүнд тохируулагдсан, цэвэрлэгддэг тугуудыг өөрчилж болно. Тиймээс, хэрэв та SREG -ийг тасалдлын зохицуулагчийн эхэнд стек рүү түлхэж, дараа нь тасалдлын зохицуулагчийн төгсгөлд дахин асаах нь дээр. Би үүнийг кодонд оруулсан бөгөөд үүнийг хэрхэн эхлүүлж байгааг харуулах, дараа нь бидэнд хэрхэн хэрэгтэй болохыг урьдчилан харах болно, гэхдээ манай код тасалдах үед SREG -т юу тохиолдох нь бидэнд хамаагүй тул би энэ стекийг ашиглаагүй болно. Би эхлүүлэх үед бүртгэлд янз бүрийн битүүдийг тохируулахын тулд ээлжийн үйлдлийг ашигласан болно. Жишээлбэл мөрөнд:
ldi температур, (1 <
Дээрх кодын эхний мөрөнд байгаа "<<" тушаал нь ээлжийн үйлдэл юм. Энэ нь үндсэндээ 0b00000001 гэсэн хоёртын дугаарыг аваад ISC01 тооны хэмжээгээр зүүн тийш шилжүүлдэг. Энэ бол EICRA бүртгэлийн ISC01 нэртэй битийн байрлал юм. ISC01 нь бит 1 тул 1 дугаарыг зүүн 1 байрлал руу шилжүүлж 0b00000010 болгоно. Үүнтэй адил хоёр дахь ISC00 нь EICRA -ийн 0 бит бөгөөд 1 дугаарын шилжилт нь зүүн тийш тэг байрлалтай байна. Хэрэв та анхны зааварчилгаанд татаж аваад evrr -ийг ашиглаж байсан m328Pdef.inc файлыг дахин нэг харвал энэ нь ".equ" гэсэн өгүүлбэрүүдийн урт жагсаалт болохыг олж харах болно. Та ISC01 нь 1 -тэй тэнцүү болохыг олж мэдэх болно. Ассемблер нь ямар ч зүйлийг угсарч эхлэхээсээ өмнө түүний бүх тохиолдол бүрийг 1 -ээр солино. Эдгээр нь хүмүүст код уншиж, бичихэд бидэнд туслах бүртгэлийн битүүдийн нэр юм. Одоо дээрх хоёр ээлжийн үйлдлүүдийн хоорондох босоо шугам нь логик "эсвэл" үйлдэл юм. Энд тэгшитгэл байна:
0b00000010 | 0b00000001 = 0b00000011
Энэ бол бидний температурт ачаалж буй зүйл ("ldi" ашиглан). Хүмүүс энэ аргыг ашиглан бүртгэлд утгыг ачаалах болсон шалтгаан нь битийг зөвхөн тооны оронд битийн нэрийг ашиглах боломжийг олгодог бөгөөд энэ нь кодыг уншихад хялбар болгодог бөгөөд бидний ашиглаж байсан өөр хоёр арга байдаг. Бид "ori" ба "andi" зааврыг ашигладаг. Эдгээр нь бүртгэлийн бусад битүүдийг өөрчлөхгүйгээр битүүдийг SET болон CLEAR хийх боломжийг бидэнд олгодог. Жишээлбэл, би ашиглаж байхдаа
температур, (1
0b00000001 -тэй "эсвэл" -ийн температур нь тэг битийг 1 болгож, үлдсэнийг нь хэвээр үлдээх болно. Бас биднийг бичиж байх үед
andi temp, 0b11111110
Энэ нь хамгийн бага температурыг 0 болгож, үлдсэнийг нь хэвээр үлдээх болно.
Дасгал 4: Та кодыг шалгаж, мөр бүрийг ойлгож байгаа эсэхийг шалгаарай. Аливаа зүйлийг хийх илүү сайн аргыг хайж олох, илүү сайн програм бичих нь танд сонирхолтой санагдаж магадгүй юм. Аливаа зүйлийг кодчлох олон зуун арга байдаг бөгөөд та минийхээс хамаагүй илүү сайн аргыг олж чадна гэдэгт итгэлтэй байна. Та бас (тэнгэрээс хориглодог!) Алдаа, дутагдалыг олж мэднэ. Энэ тохиолдолд тэдгээрийг засахын тулд би тэдний талаар сонсохыг хүсч байна.
За, одоо тэр товчлуураас салж чадах эсэхийг харцгаая …
Алхам 10: Хувилбар 2 -ийн код
Товчлуураас салах хамгийн энгийн арга бол үүнийг бүхэлд нь устгах, PB2 оролтыг мартаж, ADC -ийг "Чөлөөт гүйлтийн горим" руу шилжүүлэх явдал юм.
Өөрөөр хэлбэл ADCSRB бүртгэлийг өөрчилснөөр ADTS2, ADTS1, ADTS0 бүгд тэг болно.
Дараа нь ADCSRA дахь ADSC бит -ийг 1 болгож тохируулаарай, энэ нь анхны хөрвүүлэлтийг эхлүүлнэ.
Одоо үүнийг микроконтроллер дээрээ байршуулаарай, та товчлуурыг дарж байх хооронд дэлгэц дээр зөв дугаар гарч ирэх болно. Учир нь ADC нь ADC0 портоос тасралтгүй дээж авч, утгыг харуулдаг. Та хуруугаа товчлуураас нь салгахад "товчлуур дээр үсрэх" нь хэд хэдэн санамсаргүй утгыг хурдан үүсгэж, дараа нь 0V оролт руу буцах болно. Манай кодонд энэ 0V нь 0b11011011 хэлбэрээр гарч ирдэг (учир нь "0" товчлуур дарахдаа 0b00000000 дэлгэцийн утгыг ашиглаж байна)
Энэ нь бидний хүсч буй шийдэл биш боловч хоёр шалтгааны улмаас. Эхлээд бид товчлуурыг дарахыг хүсэхгүй байна. Бид үүнийг нэг удаа дараад дугаараа харуулахыг хүсч байна (эсвэл дараагийн хичээл дээр шинэ кодонд ашиглана уу). Хоёрдугаарт, бид ADC0 -ийг байнга туршиж үзэхийг хүсэхгүй байна. Бид үүнийг нэг удаа уншиж, хөрвүүлээд, дараа нь шинэ товчлуур дарахад шинэ хөрвүүлэлт эхлэх хүртэл унтахыг хүсч байна. Хэрэв та микроконтроллероос цорын ганц хийх зүйл бол аналог оролтыг байнга унших юм бол үнэгүй ажиллах горим нь хамгийн сайн арга юм.
Тиймээс өөр шийдлийг хайж үзье …
Алхам 11: Бид товчлуураас хэрхэн ангижрах вэ? Хувилбар 3
![Бид товчлуураас хэрхэн ангижрах вэ? Хувилбар 3 Бид товчлуураас хэрхэн ангижрах вэ? Хувилбар 3](https://i.howwhatproduce.com/images/001/image-562-18-j.webp)
Бидний үргэлжлүүлэх олон арга бий. Эхлээд бид товчлуурыг арилгахын тулд тоног төхөөрөмж нэмж болно. Жишээлбэл, бид транзисторыг товчлуурын гаралтын шугамын хэлхээнд оруулахыг оролдож болох бөгөөд ингэснээр гаралтаас бага хэмжээний гүйдэл орж, PD2 таслалтын зүү рүү 5V импульс илгээнэ.
Гэсэн хэдий ч энэ нь хамгийн их чимээ шуугиантай байх болно, хамгийн муу нь товчлуурыг зөв дарахад хангалттай хугацаа өгөхгүй байж магадгүй, учир нь товчлуурын хүчдэлийн гаралт нь ADC уншихаас өмнө тогтворжих цаг байхгүй болно.
Тиймээс бид програм хангамжийн шийдлийг санал болгохыг илүүд үздэг. Бидний хийхийг хүсч байгаа зүйл бол PD2 зүү дээр тасалдал нэмж, товчлуурын зүүг нэг унших гэж нэрлэдэг тасалдлын зохицуулагчийг бичих явдал юм. Өөрөөр хэлбэл, бид ADC -ээс autotrigger тасалдалаас салж, түүний дотор ADC гэж нэрлэдэг гадны тасалдлыг нэмж оруулна. Ийнхүү ADC -ийг унших дохио нь PD2 дохио аль хэдийн гарсны дараа ирдэг бөгөөд энэ нь PC0 зүүг уншиж хөрвүүлэхээс өмнө үнэн зөв хүчдэлд бэхлэх хангалттай хугацааг өгч магадгүй юм. Үр дүнг төгсгөлд нь анализаторын дэлгэц дээр гаргадаг ADC дуусгах тасалдал бидэнд байсаар байх болно.
Утга учиртай? За хийцгээе…
Хавсаргасан шинэ кодыг үзээрэй.
Та дараах өөрчлөлтүүдийг харж байна.
- INT0 гадаад тасалдлыг зохицуулахын тулд.org 0x0002 хаягаар rjmp нэмсэн
- Бид INT0 зүү дээр таслахыг хүсч байгаагаа илэрхийлэхийн тулд EIMSK бүртгэлийг өөрчилсөн
- Автотригеринг идэвхгүй болгохын тулд бид ADCSRA бүртгэлийн ADATE зүүг өөрчилсөн
- ADATE -ийг унтраасан үед тэдгээр нь хамааралгүй тул бид ADCSRB тохиргооноос ангижрав
- INT0 тасалдал нь үүнийг дуусмагц үүнийг автоматаар хийдэг тул бид гадаад гох тугийг дахин тохируулах шаардлагагүй болно. Учир нь бид тасалдлын горимгүй байсан, бид ADC -ийг тэр зүү дээр дохиог унтраасан. энэ тугийг гараар цэвэрлэ.
Одоо тасалдлын зохицуулагч дээр бид ADC -ээс ганцхан хөрвүүлэлт гэж нэрлэдэг.
Дасгал 5: Энэ хувилбарыг ажиллуулаад юу болохыг хараарай.
Алхам 12: Ажлын хувилбарын код ба видео
Бидний сүүлчийн хувилбараас харахад товчлол таслах нь тийм ч сайн ажилладаггүй, учир нь тасалдал нь PD2 -ийг зүүгээр дээшлэх ирмэг дээр асдаг бөгөөд дараа нь тасалдаг зохицуулагч нь ADC хөрвүүлэлтийг дууддаг. Гэсэн хэдий ч ADC нь тогтворжихоосоо өмнө хүчдэлийн уншилтыг авдаг тул утгагүй юм уншдаг.
Бидэнд хэрэгтэй зүйл бол PD2 дээрх тасалдал ба PC0 дээрх ADC унших хооронд хоцролт оруулах явдал юм. Бид үүнийг таймер/тоолуур, тоолуурын халих тасалдал, хойшлуулах горимыг нэмж хийх болно. Аз болоход бид үүнийг 3 -р хичээлээс хэрхэн яаж хийхийг мэддэг болсон! Тиймээс бид холбогдох кодыг тэндээс хуулж буулгах болно.
Би үр дүнгийн код болон үйл ажиллагааг нь харуулсан видеог өгсөн.
Унших нь бидний бодож байсан шиг үнэн зөв биш болохыг та анзаарах болно. Энэ нь хэд хэдэн эх сурвалжтай холбоотой байж магадгүй юм.
- Бид товчлуурын хүчдэлийн гаралтаас PD2 -ийг асаахын тулд PC0 -ийн уншилтанд нөлөөлдөг.
- Хамгийн сайн уншихын тулд гохыг хойшлуулахдаа хэр удаан хойшлуулахыг бид үнэхээр мэдэхгүй байна.
- ADC хөрвүүлэх ажлыг дуусгахын тулд хэд хэдэн мөчлөг шаардагдах бөгөөд энэ нь бид товчлуур дээр хурдан гал асаах боломжгүй гэсэн үг юм.
- товчлуур дээр дуу чимээ гарч магадгүй юм.
- гэх мэт …
Гэсэн хэдий ч бид товчлуурыг ажиллуулж чадсан бөгөөд одоо үүнийг анализаторын дэлгэц дээр гаргахын оронд товчлуурын даралтын утгыг өөр хэлбэрээр ашиглах боломжтой болсон боловч энэ нь тийм ч нарийвчлалтай биш бөгөөд маш их ядаргаатай юм. Тийм ч учраас товчлуурыг утсаар холбох хамгийн сайн арга бол гарны гаралт бүрийг өөр порт руу холбож, аль порт дээр хүчдэл байгааг аль товчлуур дарж байгааг шийдэх явдал юм гэж би бодож байна. Энэ бол хялбар, маш хурдан бөгөөд маш нарийвчлалтай юм.
Үнэн хэрэгтээ, бидний хийсэн шиг товчлуурыг жолоодохыг хүссэн хоёр л шалтгаан бий.
- Энэ нь манай микроконтроллер дээрх 8 -ийн оронд зөвхөн 2 зүү ашигладаг.
- Микроконтроллер дээрх ADC-ийн өөр өөр талыг харуулах гайхалтай төсөл бол температурын уншилт, потенциометрийг эргүүлэх гэх мэт стандарт зүйлүүдээс өөр юм. Зүгээр л үнэгүй ажиллаж байгаа CPU-gobbling горимоос илүү.
Юутай ч танд зориулан хийх сүүлчийн хэдэн дасгалыг энд оруулав.
Дасгал 6: Хайх хүснэгтийг ашиглахын тулд ADC хөрвүүлэлтийн бүрэн тасалдлын зохицуулагчийг дахин бичнэ үү. Өөрөөр хэлбэл Энэ нь хүснэгтийн эхний зүйлээр аналог утгыг туршиж үзэх бөгөөд хэрэв том бол тасалдалаас буцаана, хэрэв тийм биш бол хүснэгтийн дараагийн зүйл рүү Z -ийг нэмэгдүүлж дахин тест рүү буцааж өгнө. Энэ нь кодыг богиносгож, тасалдлын горимыг цэвэрлэж, илүү сайхан харагдуулна. (Би дараагийн алхам болох боломжтой шийдлийг өгөх болно) Дасгал 7: Гарны товчлуураа микроконтроллер дээрх 8 зүүгээр холбож, энгийн драйвераа бичээд хичнээн гоё болохыг нь мэдэр. Манай аргыг илүү үр дүнтэй болгох хэд хэдэн арга замыг та бодож чадах уу?
Энэ бол энэ гарын авлагад зориулагдсан бүх зүйл юм. Би эцсийн хувилбарыг заагчаар хавсаргав. Бид эцсийн зорилгодоо ойртох тусам гарын авлагыг 9 -р хичээл дээр дахин нэг удаа ашиглан долоон сегментийн дэлгэцийг хэрхэн удирдахыг харуулах болно (мөн утасны товчлуурын нэмэлт товчлуурыг ашигладаг сонирхолтой зүйлийг бүтээх). Товчлуур дээр дарж аливаа зүйлийг удирдах горимд шилжих (энэ арга нь бидний хийж буй эцсийн бүтээгдэхүүнтэй илүү сайн нийцдэг тул) бид товчлуурыг тавиулах болно.
Дараа уулзая!
Зөвлөмж болгож буй:
AVR Assembler заавар 2: 4 алхам
![AVR Assembler заавар 2: 4 алхам AVR Assembler заавар 2: 4 алхам](https://i.howwhatproduce.com/images/001/image-557-j.webp)
AVR Assembler Tutorial 2: Энэхүү заавар нь " AVR Assembler Tutorial 1 " Хэрэв та 1 -р хичээлийг үзээгүй бол та одоо үүнийг зогсоож, эхлээд үүнийг хийх хэрэгтэй. Энэ хичээлээр бид atmega328p -ийн ассемблер хэлний програмчлалын судалгааг үргэлжлүүлэх болно
AVR Assembler заавар 1: 5 алхам
![AVR Assembler заавар 1: 5 алхам AVR Assembler заавар 1: 5 алхам](https://i.howwhatproduce.com/images/001/image-559-j.webp)
AVR Assembler Tutorial 1: Би Arduino -д ашиглагддаг микроконтроллер болох Atmega328p -ийн ассемблер хэлний програмуудыг хэрхэн бичих талаар цуврал хичээл бичихээр шийдлээ. Хэрэв хүмүүс сонирхож байвал би дуусах хүртлээ долоо хоногт нэг удаа үргэлжлүүлсээр байх болно
AVR Assembler заавар 6: 3 алхам
![AVR Assembler заавар 6: 3 алхам AVR Assembler заавар 6: 3 алхам](https://i.howwhatproduce.com/images/001/image-560-j.webp)
AVR Assembler Tutorial 6: Tutorial 6 -д тавтай морилно уу! Өнөөдрийн заавар нь богино байх бөгөөд нэг atmega328p ба нөгөө хоёрын хооронд өгөгдлийг хооронд нь холбох хоёр аргыг ашиглан энгийн аргуудыг боловсруулах болно. Дараа нь бид 4 -р заавар, Бүртгэлээс шоо роллерийг авах болно
AVR Assembler заавар 8: 4 алхам
![AVR Assembler заавар 8: 4 алхам AVR Assembler заавар 8: 4 алхам](https://i.howwhatproduce.com/images/001/image-561-j.webp)
AVR Assembler Tutorial 8: Tutorial 8 -д тавтай морилно уу! Энэхүү богино хэмжээний хичээлээр бид прототип хийх бүрэлдэхүүн хэсгүүдийг тусдаа " хэвлэсэн " хэлхээний самбар
AVR Assembler заавар 9: 7 алхам
![AVR Assembler заавар 9: 7 алхам AVR Assembler заавар 9: 7 алхам](https://i.howwhatproduce.com/images/001/image-563-j.webp)
AVR Assembler Tutorial 9: 9-р хичээлд тавтай морилно уу. Өнөөдөр бид ATmega328P болон AVR угсрах хэлний кодыг ашиглан 7 сегмент болон 4 оронтой дэлгэцийг хэрхэн удирдахыг үзүүлэх болно. Үүнийг хийх явцад бид стекийг хэрхэн ашиглах талаар өөр чиглэлд хандах хэрэгтэй болно