Мазмуну:

AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino): 7 кадам (Сүрөттөр менен)
AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino): 7 кадам (Сүрөттөр менен)

Video: AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino): 7 кадам (Сүрөттөр менен)

Video: AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino): 7 кадам (Сүрөттөр менен)
Video: Таймер с использованием Arduino Uno, программирование Arduino 2024, Ноябрь
Anonim
AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino)
AT89C2051 менен 8051 программалоого киришүү (Конок ойногон: Arduino)

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 репозиторийи:

Сунушталууда: