Სარჩევი:

8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: არდუინო): 7 ნაბიჯი (სურათებით)
8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: არდუინო): 7 ნაბიჯი (სურათებით)

ვიდეო: 8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: არდუინო): 7 ნაბიჯი (სურათებით)

ვიდეო: 8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: არდუინო): 7 ნაბიჯი (სურათებით)
ვიდეო: Creating a simple counter circuit using a PIC microcontroller with assembly language programming 2024, ნოემბერი
Anonim
8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: Arduino)
8051 პროგრამირების გაცნობა AT89C2051– ით (სტუმარი: Arduino)

8051 (ასევე ცნობილია როგორც MCS-51) არის 80-იანი წლების MCU დიზაინი, რომელიც დღემდე პოპულარულია. თანამედროვე 8051 თავსებადი მიკროკონტროლერები ხელმისაწვდომია მრავალი გამყიდველისგან, ყველა ფორმისა და ზომის, და პერიფერიული მოწყობილობების ფართო სპექტრით. ამ ინსტრუქციურად ჩვენ შევხედავთ AT89C2051 MCU Atmel– დან.

AT89C2051 არის პატარა (2Kbyte Flash, 128byte RAM), იაფი (ch 1.40 $ თითო ჩიპზე) მიკროკონტროლი. მახასიათებლები:

  • 2.7-6V ოპერაცია
  • 15 I/O ხაზები
  • 2 ტაიმერი (16 ბიტიანი)
  • შიდა და გარე შეფერხებები
  • UART
  • ჩიპების ანალოგური შედარება
  • 2MIPS– მდე 24 MHz საათით

ნაბიჯი 1: მოთხოვნები

მოთხოვნები
მოთხოვნები

მოთხოვნები:

  • Linux კომპიუტერი (საჭირო პროგრამული უზრუნველყოფა: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 ჩიპი (DIP20 პაკეტი)
  • 20-პინიანი ZIF სოკეტი
  • ოპტოწყვილერი (სასურველია MOSFET- გამომავალი)
  • არდუინოს პროტოტიპის ფარი
  • 12V კვების ბლოკი
  • 5V კვების ბლოკი
  • 16 MHz ბროლის ოსცილატორი
  • 2x 30pF კონდენსატორი
  • 100nF კონდენსატორი
  • დიოდი (მაგ.: 1N400X)
  • რეზისტორები (1K, 3K3)
  • პროტობორდი
  • მხტუნავები
  • Სპილენძის მავთულის

შეამოწმეთ საჭირო პროგრამული უზრუნველყოფა:

რომელი პითონი 3

რომლებიც რომელი sdcc რომელი git

ნაბიჯი 2: პროგრამისტის შექმნა

პროგრამისტის შექმნა
პროგრამისტის შექმნა
პროგრამისტის შექმნა
პროგრამისტის შექმნა
პროგრამისტის შექმნა
პროგრამისტის შექმნა

ეს განყოფილება იქნება მოკლე, რადგან მე ავაშენე ჩემი პროგრამირების ფარი რამდენიმე ხნის წინ. მე დავამატე აწყობილი დაფის სქემატური და სურათები. სქემატური PDF შეგიძლიათ იხილოთ საცავში.

თქვენ მოგიწევთ პროგრამისტის დაფის დაპროგრამება:

1. კლონირება საცავი.

git კლონი

2. გახსენით AT89C2051_programmer/AT89_prog/AT89_prog.ino ფაილი Arduino IDE– ში.

3. შექმენით და ატვირთეთ ესკიზი Arduino IDE– დან.

ნაბიჯი 3: პროგრამისტის პროგრამული უზრუნველყოფის დაყენება

პროგრამისტის პროგრამული უზრუნველყოფის დაყენება
პროგრამისტის პროგრამული უზრუნველყოფის დაყენება
პროგრამისტის პროგრამული უზრუნველყოფის დაყენება
პროგრამისტის პროგრამული უზრუნველყოფის დაყენება

1. შექმენით პითონის ვირტუალური გარემო.

python3 -m venv venv

რა venv/bin/activ

2. დააინსტალირეთ at89overlord. at89overlord არის ჩემს მიერ დაწერილი AT89C2051 ჩიპის ღია პროგრამისტი. მისი კოდის ნახვა აქ შეგიძლიათ.

დააინსტალირეთ პიპი 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. იპოვეთ არდუინოს სერიული პორტი.

ls /dev /tty*

5. ატვირთეთ ჩამონტაჟებული IntelHex ფაილი. თუ თქვენი Arduino პორტი განსხვავდება /dev /ttyACM0– სგან, თქვენ უნდა გაიაროთ სწორი მნიშვნელობა –p ბრძანების ხაზის პარამეტრით.

at89overlord -f./ გამარჯობა.ihx

ნაბიჯი 5: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება

შეიკრიბეთ სქემა სქემატური მიხედვით. PDF ვერსია შეგიძლიათ იხილოთ საცავში.

თქვენ უნდა ნახოთ მწვანე LED განათება სიხშირით დაახლოებით 0.5 ჰც.

ნაბიჯი 6: კოდის ახსნა

კოდის ახსნა
კოდის ახსნა

#ჩართეთ

#ჩართეთ

ჩვენ ვიწყებთ sdcc– დან AT89X051 სათაურის ჩათვლით. ის შეიცავს მაკროებს რეგისტრატორებთან ურთიერთობისათვის, თითქოს ისინი ცვლადები იყვნენ. ჩვენ ასევე მოიცავს stdint.h რომელიც შეიცავს განმარტებებს uint8_t და uint16_t მთელი ტიპის.

// ვარაუდობენ, რომ ოსცილატორი არის 16 მჰც

#განსაზღვრეთ INTERRUPTS_PER_SECOND 5208

შეფერხება ხდება, როდესაც ტაიმერი 0 გადმოდის. ის კონფიგურებულია როგორც ერთი 8 ბიტიანი ტაიმერი, ასე რომ ეს ხდება ყოველ 2^8 პროცესორის ციკლში. ერთი პროცესორის ციკლი იღებს 12 საათის ციკლს და ამრიგად ჩვენ მივაღწევთ 16000000/12/2^8 = 5208.33333.

არასტაბილური uint8_t led_state = 0;

არასტაბილური uint16_t timer_counter = INTERRUPTS_PER_SECOND;

ჩვენ ვაცხადებთ ხელმძღვანელ სახელმწიფო კონტროლს და ვწყვეტთ მრიცხველის ცვლადებს.

void Timer0_ISR (void) _ შეწყვეტა (1) {

ქრონომეტრები-; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

ყოველ ჯერზე, როდესაც ტაიმერი 0 გადავსდება მრიცხველი მცირდება. თუ ის ნულის ტოლია, ის გადატვირთულია და led მდგომარეობა იცვლება. ეს ხდება წამში ერთხელ, რის შედეგადაც ~ 0.5Hz LED მოციმციმე სიხშირე.

int main () {

TMOD = 0x3; // ტაიმერის რეჟიმი - 8 ბიტიანი, წინასწარი გამყიდველის გარეშე. freq = OSCFREQ/12/2^8 TL0 = 0; // წმინდა მრიცხველი TH0 = 0; // რეგისტრატორის გასუფთავება TR0 = 1; // დააყენეთ ტაიმერი გასაშვებად. ET0 = 1; // შეწყვეტის დაყენება. EA = 1; // გლობალური შეფერხების დაყენება. ხოლო (1) {თუ (led_state) {P1 = 0xFF; } სხვა {P1 = 0x00; }}}

ჩვენ ვაყენებთ ტაიმერის მოდულს და ველოდებით ცვლილებებს led მდგომარეობის კონტროლის ცვლადში. TMOD არის ტაიმერის რეჟიმის კონტროლის რეგისტრი. TL0 და TH0 არის Timer0 საკონტროლო რეგისტრები. ET0 არის ტაიმერის კონტროლის რეგისტრში (TCON) ჩართვის დრო-0 ბიტი. TR0 და EA არის ბიტები შეწყვეტის ჩართვის რეგისტრში (IE).

ნაბიჯი 7: დამატებითი რესურსები

  • AT89C2051 მონაცემთა ფურცელი:
  • მცირე მოწყობილობის C შემდგენელი (sdcc):
  • 8051 რესურსი:
  • პროგრამისტების საცავი AT89C2051:
  • გამარჯობა-8051 საცავი:

გირჩევთ: