Агуулгын хүснэгт:

AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino): 7 алхам (зурагтай)
AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino): 7 алхам (зурагтай)

Видео: AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino): 7 алхам (зурагтай)

Видео: AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino): 7 алхам (зурагтай)
Видео: Программатор для AT89C2051 2024, Арваннэгдүгээр
Anonim
AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino)
AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino)

8051 (MCS-51 гэгддэг) нь 80-аад оны үеийн MCU загвар бөгөөд өнөөг хүртэл алдартай хэвээр байна. Орчин үеийн 8051-тэй нийцтэй микроконтроллеруудыг янз бүрийн хэлбэр, хэмжээтэй, олон төрлийн дагалдах хэрэгсэлтэй олон үйлдвэрлэгчдээс авах боломжтой. Энэхүү зааварчилгаанд бид Atmel -ийн AT89C2051 MCU -ийг үзэх болно.

AT89C2051 бол жижиг (2Кбайт флаш, 128 байт RAM), хямд (нэг чип тутамд ~ 1.40 доллар) микроконтроллер юм.

  • 2.7-6V ажиллах хүч
  • 15 I/O шугам
  • 2 таймер (16 бит)
  • Дотоод болон гадаад тасалдал
  • UART
  • Чип дээрх аналог харьцуулагч
  • 24MHz цагтай 2MIPS хүртэл

Алхам 1: Шаардлага

Шаардлага
Шаардлага

Шаардлага:

  • Linux PC (шаардлагатай програм хангамж: Arduino IDE, git, make, sdcc)
  • Ардуино НҮБ
  • AT89C2051 чип (DIP20 багц)
  • 20 зүү ZIF залгуур
  • Optocoupler (илүү зохимжтой MOSFET гаралт)
  • Arduino загварчлалын бамбай
  • 12V цахилгаан хангамж
  • 5V цахилгаан хангамж
  • 16 МГц болор осциллятор
  • 2х 30pF конденсатор
  • 100nF конденсатор
  • Диод (жишээ нь: 1N400X)
  • Эсэргүүцэл (1K, 3K3)
  • Protoboard
  • Үсрэгчид
  • Зэс утас

Шаардлагатай програм хангамжийг шалгана уу:

аль питон3

аль нь ямар sdcc аль git

Алхам 2: Программист бүтээх

Программист бүтээх
Программист бүтээх
Программист бүтээх
Программист бүтээх
Программист бүтээх
Программист бүтээх

Би хэсэг хугацааны өмнө програмчлалын бамбайгаа бүтээсэн тул энэ хэсэг товч байх болно. Би угсарсан самбарын схем, зургийг хавсаргав. Схемийн PDF файлыг репозитороос олж болно.

Та програмист самбарыг програмчлах хэрэгтэй болно.

1. Хадгалах санг хуулбарлах.

git clone

2. AT89C2051_programmer/AT89_prog/AT89_prog.ino файлыг Arduino IDE дээр нээнэ үү.

3. Arduino IDE -аас ноорог зурж, байршуулах.

Алхам 3: Программист програмыг суулгах

Программист програмыг суулгаж байна
Программист програмыг суулгаж байна
Программист програмыг суулгах
Программист програмыг суулгах

1. Питон виртуал орчин бий болгох.

python3 -m venv venv

. venv/bin/идэвхжүүлэх

2. at89overlord -ийг суулгаарай. at89overlord бол миний бичсэн AT89C2051 чипийн нээлттэй эхийн програмист бөгөөд эх кодыг эндээс олж болно.

pip at89overlord дээр суулгана уу

3. Суулгалтыг баталгаажуулна уу.

at89overlord -h

Алхам 4: Чипийг програмчлах

Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах
Чипийг програмчлах

1. Энгийн анивчих төслийг клон хийх.

cd ~

git clone https://github.com/piotrb5e3/hello-8051.git cd сайн уу-8051/

2. Аппликешныг бүтээх.

хийх

3. Arduino -г компьютерт холбож, 12V тэжээлийг холбож, AT89C2051 чипийг ZIF залгуурт байрлуулна.

4. Arduino -ийн цуваа портыг олоорой.

ls /dev /tty*

5. Баригдсан IntelHex файлыг чип дээр байршуулах. Хэрэв таны Arduino -ийн порт нь /dev /ttyACM0 -ээс өөр байвал та -p тушаалын мөрийн параметрийн тусламжтайгаар зөв утгыг дамжуулах ёстой.

at89overlord -f./hello.ihx

Алхам 5: Чуулган

Чуулган
Чуулган
Чуулган
Чуулган
Чуулган
Чуулган

Схемийн дагуу хэлхээг угсарна. PDF хувилбарыг репозитороос олж болно.

Та ойролцоогоор 0.5 Гц давтамжтай ногоон LED гэрлийг харах ёстой.

Алхам 6: Кодын тайлбар

Кодын тайлбар
Кодын тайлбар

#оруулах

#оруулах

Бид sdcc -ээс AT89X051 толгойг оруулж эхэлнэ. Энэ нь регистрүүдтэй хувьсагч шиг харьцах макро агуулдаг. Бид мөн uint8_t ба uint16_t бүхэл тоон төрлүүдийн тодорхойлолтыг агуулсан stdint.h -ийг агуулдаг.

// Осцилляторыг 16 МГц гэж үзье

5208 -ийн INTERRUPTS_PER_SECOND -ийг тодорхойлох

Timer0 халих үед тасалдал гардаг. Энэ нь нэг 8 битийн таймер байдлаар тохируулагдсан байдаг тул энэ нь 2^8 процессорын цикл тутамд тохиолддог. Нэг процессорын цикл нь 12 цагийн мөчлөг шаарддаг бөгөөд ингэснээр бид 16000000/12/2^8 = 5208.33333 болно.

дэгдэмхий uint8_t led_state = 0;

дэгдэмхий uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Бид удирдсан төрийн хяналтыг зарлаж, тоолуурын хувьсагчдыг тасалдаг.

хүчингүй Timer0_ISR (void) _ тасалдал (1) {

timer_counter-; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Timer0 -ийг халих бүрт тоолуур буурдаг. Хэрэв энэ нь тэгтэй тэнцүү бол түүнийг дахин тохируулж, удирдсан төлөвийг өөрчилдөг. Энэ нь секундэд нэг удаа тохиолддог бөгөөд үүний үр дүнд ~ 0.5 Гц LED анивчих давтамж үүсдэг.

int main () {

TMOD = 0x3; // Таймерын горим - 8 бит, урьдчилсан тооцоолуур хийгээгүй. давтамж = OSCFREQ/12/2^8 TL0 = 0; // Цэвэр тоолуур TH0 = 0; // TR0 = 1 бүртгэлийг цэвэрлэх; // Таймерыг ажиллуулахаар тохируулна уу. ET0 = 1; // Тасалдлыг тохируулах. EA = 1; // Глобал тасалдлыг тохируулах. while (1) {if (led_state) {P1 = 0xFF; } өөр {P1 = 0x00; }}}

Бид таймерын модулийг тохируулж, удирдлагын төлөвийн хувьсагчийн өөрчлөлтийг хүлээж байна. TMOD бол таймер горимын хяналтын бүртгэл юм. TL0 ба TH0 нь Timer0 хяналтын бүртгэл юм. ET0 бол таймерын хяналтын регистрийн (TCON) идэвхжүүлэгч-timer0 бит юм. TR0 ба EA нь тасалдлыг идэвхжүүлэх бүртгэлийн (IE) битүүд юм.

Алхам 7: Нэмэлт нөөц

  • AT89C2051 мэдээллийн хуудас:
  • Жижиг төхөөрөмж C хөрвүүлэгч (sdcc):
  • 8051 эх сурвалж:
  • AT89C2051 програмистын репозитор:
  • Сайн байна уу-8051 репозитор:

Зөвлөмж болгож буй: