Мазмуну:
- 1 -кадам: талаптар
- 2 -кадам: Программистти куруу
- 3 -кадам: Программист программасын орнотуу
- 4 -кадам: Чипти программалоо
- 5 -кадам: Ассамблея
- 6 -кадам: Коддун түшүндүрмөсү
- 7 -кадам: Кошумча ресурстар
Video: AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino): 7 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
8051 (ошондой эле MCS-51 деп да аталат) 80-жылдардагы MCU дизайны, бүгүнкү күндө популярдуу бойдон калууда. Заманбап 8051ге шайкеш келген микроконтроллерлер ар кандай формада жана өлчөмдөрдө жана перифериялык түзүлүштөрдүн кеңири спектри менен бир нече сатуучулардан жеткиликтүү. Бул көрсөтмөдө биз Atmel'ден AT89C2051 MCUну карайбыз.
AT89C2051 - кичинекей (2Кбайт Flash, 128байт RAM), арзан (чипке ~ $ 1.40) микроконтроллер.
- 2.7-6V иштөө
- 15 I/O линиялары
- 2 таймер (16 бит)
- Ички жана тышкы үзгүлтүктөр
- UART
- Чиптеги аналогдук салыштыргыч
- 24MHz сааты менен 2MIPSке чейин
1 -кадам: талаптар
Талаптар:
- Linux PC (керектүү программалык камсыздоо: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 чипи (DIP20 пакети)
- 20-пин ZIF розеткасы
- Optocoupler (жакшыраак MOSFET-чыгаруу)
- Arduino прототипдөөчү калкан
- 12V электр менен камсыздоо
- 5V электр менен камсыздоо
- 16 МГц кристалл осциллятору
- 2x 30pF конденсатор
- 100nF конденсатор
- Диод (мис: 1N400X)
- Резисторлор (1K, 3K3)
- Protoboard
- Секирүүчүлөр
- Жез зым
Керектүү программалык камсыздоону текшериңиз:
кайсы python3
кайсы sdcc кайсы гитти түзөт
2 -кадам: Программистти куруу
Бул бөлүм кыска болот, анткени мен бир аз мурун программалоо калкамды кургам. Мен чогултулган тактанын схемасын жана сүрөттөрүн тиркеп койдум. Схеманын PDF файлын репозиторийден тапса болот.
Сиз программист тактасын программалашыңыз керек:
1. Репозиторийди клондоштуруу.
git clone
2. Arduino IDEде AT89C2051_programmer/AT89_prog/AT89_prog.ino файлын ачыңыз.
3. Эскизди Arduino IDEден куруу жана жүктөө.
3 -кадам: Программист программасын орнотуу
1. Python виртуалдык чөйрөсүн түзүңүз.
python3 -m venv venv
. venv/bin/activate
2. at89overlord орнотуу. at89overlord - бул AT89C2051 чипи үчүн Open Source программисти, мен жазган булактын кодун бул жерден тапса болот.
pip орнотуу at89overlord
3. Орнотууну текшериңиз.
at89overlord -h
4 -кадам: Чипти программалоо
1. Жөнөкөй ирмөө долбоорун клондоштуруу.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Колдонмону түзүү.
жасоо
3. Ардуинону ЖКга туташтырыңыз, 12В камсыздоону туташтырыңыз, AT89C2051 чипин ZIF розеткасына салыңыз.
4. Ардуинонун сериялык портун табыңыз.
ls /dev /tty*
5. Чипке курулган IntelHex файлын жүктөө. Эгерде сиздин Arduino портуңуз /dev /ttyACM0дон айырмаланып турган болсо, анда сиз -p буйрук сабынын параметри менен туура маанини өткөрүшүңүз керек.
at89overlord -f./hello.ihx
5 -кадам: Ассамблея
Схеманы схемага ылайык чогултуу. PDF версиясын репозиторийден тапса болот.
Сиз жашыл LED жарыгын 0,5 Гц тегерегинде көрүшүңүз керек.
6 -кадам: Коддун түшүндүрмөсү
#кошуу
#кошуу
Биз sdccтен AT89X051 аталышын кошуу менен баштайбыз. Бул регистрлер менен өз ара аракеттенүү үчүн макроолорду камтыйт, алар өзгөрмөлүү болгондой. Биз ошондой эле uint8_t жана uint16_t бүтүн сандардын түрлөрүнүн аныктамаларын камтыган stdint.h камтыйт.
// Осциллятор 16 МГц деп болжолдонууда
5208
Timer0 ашканда үзгүлтүк пайда болот. Бул бир 8bit таймер катары конфигурацияланган, ошондуктан бул ар бир 2^8 процессор циклинде болот. Бир процессор цикли 12 сааттык циклди талап кылат, ошентип биз 16000000/12/2^8 = 5208.33333ке жетебиз.
туруксуз uint8_t led_state = 0;
учуучу uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Биз жетектеген мамлекеттик көзөмөлдү жарыялайбыз жана каршы өзгөрмөлөрдү үзгүлтүккө учуратабыз.
жараксыз Timer0_ISR (жараксыз) _ үзгүлтүккө (1) {
timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Timer0 ашкан сайын эсептегич азаят. Эгерде ал нөлгө барабар болсо, анда ал баштапкы абалга келтирилет жана жетектелген абал өзгөрөт. Бул секундасына бир жолу болот, натыйжада ~ 0.5Hz LED жыпылыктап турат.
int main () {
TMOD = 0x3; // Таймер режими - 8 бит, алдын ала эсептөөчү жок. freq = OSCFREQ/12/2^8 TL0 = 0; // Таза эсептегич TH0 = 0; // Таза регистр TR0 = 1; // Таймерди иштетүү үчүн коюңуз. ET0 = 1; // Үзгүлтүктү коюу. EA = 1; // Глобалдык үзгүлтүктү коюу. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Биз таймер модулун конфигурациялайбыз жана жетектөөчү мамлекеттик башкаруунун өзгөрмөлөрүн күтөбүз. TMOD - таймер режимин башкаруу реестри. TL0 жана TH0 Timer0 башкаруу реестрлери. ET0-таймерди башкаруу реестриндеги (TCON) активдештирүүчү-timer0 бит. TR0 жана EA - үзгүлтүккө учуратуу реестриндеги биттер (IE).
7 -кадам: Кошумча ресурстар
- AT89C2051 маалымат жадыбалы:
- Small Device C Compiler (sdcc):
- 8051 булактары:
- AT89C2051 программисттердин кампасы:
- салам-8051 репозиторийи:
Сунушталууда:
Alexa жана Raspberry Pi менен конок бөлмөсүн башкаруу: 12 кадам
Alexa жана Raspberry Pi менен конок бөлмөсүн башкарыңыз: Alexa (Amazon Echo or Dot) жана Raspberry Pi GPIO менен конок бөлмөңүздүн сыналгысын, жарыктарын жана күйөрманыңызды башкарыңыз
Shelly менен кино үчүн конок бөлмөсү: 4 кадам
Shelly менен тасма үчүн жашоо бөлмөсү: Долбоордун аткаруучу кыскача мазмуну Google бөлмөсүн колдонуп, бөлмөмдүн конок бөлмөсүн кино көрүү үчүн ыңгайлуу кылуу үчүн кантип абдан жөнөкөй автоматташтыруу керек
Өзүн ойногон Arduino Pinball Machine!: 13 кадам (Сүрөттөр менен)
Өзүн ойногон Arduino пинбол машинасы !: " Өзүн ойногон пинбол машинасы, анын баардык көңүл ачуусун алып салбайбы? &Quot; Сураганыңды угуп жатам. Балким, эгер сиз автономдуу роботторго кирбесеңиз. Мен, бирок, эң сонун нерселерди жасай ала турган роботторду жасоону абдан каалайм жана бул
Кол менен коддоосуз Raspberry Pi программалоого киришүү: 3 кадам
Кол менен коддоосуз Raspberry Pi программалоого киришүү: Саламатсызбы, бул көрсөтмө сизге Raspberry Pi'ни Function Block Diagram (IEC 61131-3 стандартынын бир бөлүгү) деп аталган PLCлер үчүн графикалык багытталган программалоо тили менен шайкеш келген толугу менен программалоочу автоматташтыруу түзүлүшүнө кантип айландырууну көрсөтөт. Бул болушу мүмкүн
LED жана AT Tinyди колдонуп, "Жылтылдап, жымыңдап, кичинекей жылдызды" ойногон Пьезо менен жаркылдаган жылдызды жаратыңыз: 6 кадам
LED жана AT Tinyдин жардамы менен "Жаркыроо, Жаркыроо, Кичинекей Жылдыз" ойноо менен Пиезонун жаркылдаган жылдызын түзүү: Бул схема "Tinky, Twinkle, Little Star " Сураныч, кийинки кадамды жана схеманы карап көрүңүз