Traffic Light Pic12F629 "არასწორი" პროგრამით. რაოდენობის ნომრები შეკრების შესახებ

როდესაც შრომა შუქის შუქის ქაღალდზე სწავლობდა, აზროვნება მოვიდა: "და რატომ არ შეაგროვოს მისთვის მიკროკონტროლერის მოძრაობის სინათლის მოვალეობის შემსრულებელი". ინტერნეტში არსებობს ბევრი სქემა და პროგრამები მათთვის, ახორციელებს მარტივი შუქნიშნის პრინციპს. მაგრამ ისინი ან ძალიან რთულია სათამაშოები (DC-DC TransDucer, Shift Registers და ა.შ.) ან წარმოდგენილია მხოლოდ როგორც მაგალითად, მაგალითად, Assembler- ზე. მე მინდა განვიხილოთ სქემა და პროგრამა სათამაშო ტრაფიკის სინათლის დასრულებული დიზაინის შეკრების შესახებ რამდენიმე დამატებითი ფუნქციით. უფრო მეტიც, იგი აგროვებს "პენი" მიკროკონტროლერს, მარტივი სქემით, რაც მნიშვნელოვანია დამწყებთათვის. იმედი მაქვს, ეს მარტივი სქემა ეს გახდება მრავალი დამწყებთათვის Pic Microcontrollers- ის პროგრამირების შესასწავლად, პირველი დიზაინი, რომელიც რეალურად შეიკრიბა pic. მარტივი, მაგრამ ამავე დროს, შემცველი ძირითადი ტექნიკა და პროგრამირების ატრიბუტები, პროგრამა გახდის ადვილად გასაგები და ექსპერიმენტი მას.

მაშინაც კი, ვინც ხელს უწყობს პროგრამირების მიკროკონტროლერს, ცნობილია წერილობითი დამხმარეების ძირითადი პრინციპები: როგორც მოკლე დროში აღსრულების და მოკლე კოდის, არ არის ციკლები და ზარები სხვა subroutines და ა.შ. ამ შემთხვევაში, შეფერხებები საშუალებას აძლევს მხოლოდ შეცვალოს დონე (ჩვენ არ შეგვიძლია გამოტოვოთ სხვა შეფერხებები, რადგან ისინი უბრალოდ არ არიან) და მე, პროგრამის გამარტივება და მისი აღქმა, აღმოჩნდა, რომ ეს შესაძლებელია ამ პრინციპებისგან გადაადგილება. აქ interupt handler არსებობს ციკლები, და ზარის სხვა subprogramme, და (შესახებ საშინელებათა!) კი გადასვლის ძილის რეჟიმში. აქედან გამომდინარე, სათაურში პროგრამა "არასწორია". -ში ეს საქმეჩარევის დამლაგებელი გამოიყენება როგორც რეგულარული ქვეპროგრამის სახით, თუმცა, სხვა შემთხვევებში, აღნიშნული პრინციპები, რა თქმა უნდა, ძალაში რჩება.

მოწყობილობის მოკლე მახასიათებლები:

მოწყობილობა არის ქუჩის სატრანსპორტო სინათლის მოდელი მისი ოპერაციის საიმედო სიმულაციით (ყვავილების გადართვის, მწვანე ფრჩხილის) და აქვს დამატებითი ფუნქციები: შეცვალეთ გადართვის სიხშირე ღილაკის დაჭერით, მოციმციმე რეჟიმი ყვითელია, გარდამავალი რეჟიმის რეჟიმი ავტომატური რეჟიმი შემდეგ დააჭირეთ ღილაკს დაჭერით. ეს მოწყობილობა შეიძლება გამოყენებულ იქნას ბავშვთა სათამაშო, ასევე ბავშვთა სკოლამდელი დაწესებულებებში ვიზუალური შემწეობა, როდესაც ბავშვებს ასწავლის გზის ქცევას.

ასე რომ, სქემის აღწერილობასა და განხილვას მივმართავთ.

სქემა აგროვებს იაფი მიკროკონტროლერის Pic12F629- ზე. პირდაპირ LED Controls, დასკვნები GP0-GP2, GP4, GP5 (ფეხები 7, B, 5, 3, 3, 2) გამოიყენება, პროგრამირდება, როგორც შედეგები. თითოეული მიმართულებით LED- ები შერწყმულია სერიულ ჯგუფებში, რომელიც საშუალებას გაძლევთ მინიმუმამდე მოხმარებული მოხმარებული. R3-R8 რეზისტორების ლიმიტი LED Currents. ძლიერი განსხვავებების შემთხვევაში სხვადასხვა ფერის LED- ების დაბრუნებისას, თქვენ უნდა აირჩიოთ შესაბამისი რეზისტენტული. მაგალითად, მე, მაგალითად, ორი ყვითელი ჯგუფი უკავშირდება პარალელურად და უკავშირდება ერთი რეზისტენტს, ხოლო იგივე ნომინალური, როგორც დანარჩენი და ბრწყინავს კი ცოტა ნათელი, ვიდრე სხვები (ბრუნდება მეტი).

ამ სქემაში, LED- ები იკვებება 1.5-ზე მეტი მიკროკონტროლისგან დამატებითი ელემენტისგან (ამ შემთხვევაში, როდესაც მიმდინარე გამომავალი გამორთულია, ეს არ გაივლის მიკროკრედიტაციას, რადგან ეს ბევრად უფრო ძაბვაა ორი LED- ს, ვიდრე 1.5 V (მინიმუმ 2.5 გ). და ორივე LED- ების დაშლისასაც კი (რაც ნაკლებად სავარაუდოა), მიმდინარეობს შიდა დამცავი დიოდის მეშვეობით პლუს ელექტროენერგიაზე დაახლოებით 7.5 მაგისტრი, რაც გაცილებით ნაკლებია დასაშვებია. LED- ების ამჟამინდელი მოხმარება ბევრად უფრო მაღალია, ვიდრე MK- ის მოხმარება, შესაბამისად, ელემენტების გამონადენი განსხვავებაა (MK- ის ამჟამინდელი მოხმარების გზით არ არის), უგულებელყოფა. ექსპერიმენტულად დადგინდა, რომ, მიუხედავად იმისა, მიმდინარე მეშვეობით LED- ები, როდესაც ბატარეის გათიშვა, სიკაშკაშე მათი Glow მთელი ბატარეის ძაბვის დიაპაზონში. დიაგრამა ძალიან გამარტივებულია და არ არსებობს ძაბვის სტაბილიზატორი დამატებით მიმდინარე, რამაც შესაძლებელი გახადა დენის შეცვლა (მიმდინარე მოხმარება ძილის რეჟიმში - 1-3 მ ka).

მოწყობილობის ოპერაციების საკონტროლო ღილაკი უკავშირდება GP3- ის (ფეხი 4) გამომავალს, რომელიც კონფიგურაციის ბიტშია გამოცხადებული ციფრული შეყვანის სახით. ღილაკზე დაჭერით, ჩარევა ხდება გადამუშავების პროცესში, რომელიც ხდება შემდეგნაირად. ხანგრძლივი პრესის საშუალებით (4 წელზე მეტი), მოწყობილობა ძილის რეჟიმში შედის. მოკლე ზეწოლის მქონე, არსებობს შრომის სინათლის სიჩქარის გადართვა წრეში მიმდინარე სიჩქარის მითითებით ნახაზის მიხედვით.

ბოლო რეჟიმში (წითელი LED- ები განათებულია), ყვითელი flashing სიგნალის რეჟიმი ჩართულია. ღილაკის ხანგრძლივი დაჭერით (ყველა LED- ის მოსახლეობის მიერ დადასტურებული), ნორმალურ ოპერაციაში გადადით რეჟიმში, ახალი რეჟიმის შეცვლით, თუ ღილაკი არ არის 6 წამზე მეტი., ოპერაციის რეჟიმი იგივე რჩება ღილაკი დაჭერილია.

დააკისროს ელემენტები AA ძილის რეჟიმში საკმარისია წელიწადზე ნაკლები, რის გამოც ძალაუფლების შეცვლა არ არის გათვალისწინებული მოწყობილობაში. მოწყობილობა გადადის ძილის რეჟიმში ასევე 0.5 - 1 საათის შემდეგ (დამოკიდებულია გადართვის ფერების სიჩქარით) ღილაკზე ზემოქმედების გარეშე. ძილის რეჟიმში, გამომავალი ხდება ნებისმიერი პრესის ღილაკზე. Microcontroller იკვებება შედეგები 1 და 8. შეინახოთ დასკვნები და გამარტივება დიზაინი, იგი ჩართული შიდა გენერატორი რეჟიმი გარე ელემენტების გარეშე.

მცირე განმარტებები იმ პროგრამისთვის, რომელიც ნაჩვენებია ინვესტიციაში.

დამუშავების ღილაკზე დაჭერით დამზადებულია სუბტროუტებში: Wait_butt __- ელოდება 6-იანი წლების დაჭერას და რეგისტრაციას. გარეშე დაჭერით, Push_butt __- დაწკაპვით ხანგრძლივობა, wait_nobutt __- ელოდება არ დაპრესილი ღილაკს. მოძრაობის სინათლის სტატუსის შეცვლის მომენტებში (ყვითელი და მოციმციმე მწვანე), გამომავალი პორტი წაიკითხავს მაგიდასთან ტაქტიკაში _ Subroutine (ახალგაზრდა ან უფროსი ნახევრად ტორტი). ანალოგიურად, სტატუსის მითითება, როდესაც ღილაკი დაჭერილია - IND__ subroutine. ოპერაციის დროის შემდეგ ძილის რეჟიმში გადართვა, იძულებითი გარდამავალი ხდება ჩარევის დამუშავების სუბტროუზე პროგრამული უზრუნველყოფა ინსტალაცია შეწყვეტის დროშა. Const_Min Constant- ის შეცვლა, CONST_REG, CONSPER_SL შეიძლება შეიცვალოს შესაბამისად, მწვანე მოციმციმეობის პერიოდი, საწყის რეჟიმი ბატარეის, ოპერაციის დროს, გადაადგილების გარეშე გადაადგილების გარეშე.

ბეჭდური მიკროსქემის ფორუმში დამზადებულია ცალმხრივი fiberglass და აქვს 22x87 მმ ზომები. უკიდურესი LED- ები სხვადასხვა მიმართულებით პარალელურად არიან. საშუალოდ კომპლექტი ნაწილების ნაწილში ნაწილების, და მეორე - მხარეს ტრეკების გამომავალი დასკვნების ფორუმში და აფიქსირებს მათ ნაწილების springs of solder, და on ბილიკების გვერდით, რომელიც შეესაბამება შესაბამის ტრასებს.

ყველა რეზისტორატი 0.125 ვატსთან ერთად. LED- ები შეიძლება მიიღონ ნებისმიერი შიდა ან იმპორტირებული სასურველი ერთი ტიპის პირდაპირი ძაბვის ვარდნა მიმდინარე 10 ma შესახებ 2 ვოლტი. ღილაკი - ნებისმიერი ფიქსაცია. ბლოკზე მიკროკონტროლერი დამონტაჟებულია.

კონფიგურაციის სიტყვა ავტომატურად შევიდა მეხსიერებაში, როდესაც firmware დატვირთულია ("ფრინველის" დამონტაჟებულია მხოლოდ PWRT- ში, დარჩენილი ნივთები "გადატვირთულია", სვეტში "ოსცილატორმა" "INTOSC GP4"). პირველ რიგში აუცილებელია ფირმის წაკითხვისას სუფთა ჩიპი და 03FF- ის პროგრამის მეხსიერების დასასრულს სიტყვის მნიშვნელობა, რომელიც საჭიროა ჩიპის კონკრეტული ინსტანციის შიდა გენერატორის სიხშირის კონფიგურაცია. ჩამოტვირთვის შემდეგ Hex ფაილი პროგრამა, თქვენ უნდა ხელით განსაზღვროს ეს მნიშვნელობა 03ff. -ში ეს მოწყობილობა სიხშირის გადახრა არ არის კრიტიკული, მაგრამ მაინც უნდა იცოდეთ, რომ ეს პროცედურა მოითხოვს ასეთ პროცედურას. უკიდურეს შემთხვევაში, თუ ქარხნის ღირებულება დაკარგულია, შეგიძლიათ გააკეთოთ არაფერი - პროგრამამ გადადგა ნაბიჯები სწორი სამუშაოსთვის და ამ შემთხვევაში.

მოწყობილობა მოთავსებულია შესაფერისი პლასტმასის ყუთში. შესაბამისი ხვრელები კეთდება ყუთში და სახურავზე. ჩემი განსახიერება, სატრანსპორტო სინათლე და ღილაკი და ბატარეის ბაზა უკავშირდება პლასტმასის წყლის მილის სეგმენტს, 20 მმ დიამეტრით.

აპლიკაცია: მოდელი, ნაბეჭდი მიკროსქემის დაფა In Lay ფორმატში, პროგრამა Mpasm Assembler, Hex Firmware ფაილი.

რადიო ელემენტების სია

Დანიშნულება Ტიპი ნომინალური რიცხვი შენიშვნაანგარიშიჩემი ნოუთბუქი
Ic1 Mk pic 8-bit

Pic12f629.

1 დიპლომატი. ნოუთბუქში
R1 მდორიორი

3 com

1 0.125 W. ნოუთბუქში
R2. მდორიორი

100 ო.

1 0.125 W. ნოუთბუქში
R3-R8. მდორიორი

200 ო.

6 0.125 W. ნოუთბუქში
HL1, HL2, HL9, HL10 სინათლის გამოშვება დიოდი

Al307a.

4 წითელი ნოუთბუქში
HL3, HL4, HL11, HL12 სინათლის გამოშვება დიოდი

როდესაც შრომა შუქის შუქის ქაღალდზე სწავლობდა, აზროვნება მოვიდა: "და რატომ არ შეაგროვოს მისთვის მიკროკონტროლერის მოძრაობის სინათლის მოვალეობის შემსრულებელი". ინტერნეტში არსებობს ბევრი სქემა და პროგრამები მათთვის, ახორციელებს მარტივი შუქნიშნის პრინციპს. მაგრამ ისინი ან ძალიან რთულია სათამაშოები (DC-DC TransDucer, Shift Registers და ა.შ.) ან წარმოდგენილია მხოლოდ როგორც მაგალითად, მაგალითად, Assembler- ზე. მე მინდა განვიხილოთ სქემა და პროგრამა სათამაშო ტრაფიკის სინათლის დასრულებული დიზაინის შეკრების შესახებ რამდენიმე დამატებითი ფუნქციით. უფრო მეტიც, იგი აგროვებს "პენი" მიკროკონტროლერს, მარტივი სქემით, რაც მნიშვნელოვანია დამწყებთათვის. ვიმედოვნებ, რომ ეს მარტივი სქემა ბევრ დამწყებთათვის გახდება PIC Microcontrollers- ის პროგრამირების შესასწავლად, პირველი რეალური შეგროვებული დიზაინით. მარტივი, მაგრამ ამავე დროს, შემცველი ძირითადი ტექნიკა და პროგრამირების ატრიბუტები, პროგრამა გახდის ადვილად გასაგები და ექსპერიმენტი მას.

მაშინაც კი, ვინც ხელს უწყობს პროგრამირების მიკროკონტროლერს, ცნობილია წერილობითი დამხმარეების ძირითადი პრინციპები: როგორც მოკლე დროში აღსრულების და მოკლე კოდის, არ არის ციკლები და ზარები სხვა subroutines და ა.შ. ამ შემთხვევაში, შეფერხებები საშუალებას აძლევს მხოლოდ შეცვალოს დონე (ჩვენ არ შეგვიძლია გამოტოვოთ სხვა შეფერხებები, რადგან ისინი უბრალოდ არ არიან) და მე, პროგრამის გამარტივება და მისი აღქმა, აღმოჩნდა, რომ ეს შესაძლებელია ამ პრინციპებისგან გადაადგილება. აქ interupt handler არსებობს ციკლები, და ზარის სხვა subprogramme, და (შესახებ საშინელებათა!) კი გადასვლის ძილის რეჟიმში. აქედან გამომდინარე, სათაურში პროგრამა "არასწორია". ამ შემთხვევაში, ჩარევის დამმუშავებელი გამოიყენება როგორც რეგულარული ქვეპროგრამით, თუმცა სხვა შემთხვევებში, ამ პრინციპების, რა თქმა უნდა, ძალაში რჩება.

მოწყობილობის მოკლე მახასიათებლები:

მოწყობილობა არის ქუჩის სატრანსპორტო სინათლის მოდელი თავისი ოპერაციის საიმედო სიმულაციით (ყვავილების გადართვის, მწვანე) და აქვს დამატებითი ფუნქციები: შეცვალეთ გადართვის სიხშირე ღილაკზე დაჭერით, მოციმციმე რეჟიმი ყვითელია, გადადის ძილის რეჟიმი სახელმძღვანელო და ავტომატური რეჟიმი, რომელსაც მოჰყვება ღილაკზე დაჭერით ღილაკზე დაჭერით. ეს მოწყობილობა შეიძლება გამოყენებულ იქნას ბავშვთა სათამაშო, ასევე ბავშვთა სკოლამდელი დაწესებულებებში ვიზუალური შემწეობა, როდესაც ბავშვებს ასწავლის გზის ქცევას.

ასე რომ, ჩვენ მივმართავთ სქემის აღწერს და განხილვას:

სქემა შეგროვდება იაფი მიკროკონტროლერის შესახებ. პირდაპირ LED Controls, დასკვნები GP0-GP2, GP4, GP5 (ფეხები 7, B, 5, 3, 3, 2) გამოიყენება, პროგრამირდება, როგორც შედეგები. თითოეული მიმართულებით LED- ები შერწყმულია სერიულ ჯგუფებში, რომელიც საშუალებას გაძლევთ მინიმუმამდე მოხმარებული მოხმარებული. R3-R8 რეზისტორების ლიმიტი LED Currents. ძლიერი განსხვავებების შემთხვევაში სხვადასხვა ფერის LED- ების დაბრუნებისას, თქვენ უნდა აირჩიოთ შესაბამისი რეზისტენტული. მაგალითად, მე, მაგალითად, ორი ყვითელი ჯგუფი უკავშირდება პარალელურად და უკავშირდება ერთი რეზისტენტს, ხოლო იგივე ნომინალური, როგორც დანარჩენი და ბრწყინავს კი ცოტა ნათელი, ვიდრე სხვები (ბრუნდება მეტი).

ამ სქემაში, LED- ები იკვებება 1.5-ზე მეტი მიკროკონტროლისგან დამატებითი ელემენტისგან (ამ შემთხვევაში, როდესაც მიმდინარე გამომავალი გამორთულია, ეს არ გაივლის მიკროკრედიტაციას, რადგან ეს ბევრად უფრო ძაბვაა ორი LED- ს, ვიდრე 1.5 V (მინიმუმ 2.5 გ). და ორივე LED- ების დაშლისასაც კი (რაც ნაკლებად სავარაუდოა), მიმდინარეობს შიდა დამცავი დიოდის მეშვეობით პლუს ელექტროენერგიაზე დაახლოებით 7.5 მაგისტრი, რაც გაცილებით ნაკლებია დასაშვებია. LED- ების ამჟამინდელი მოხმარება ბევრად უფრო მაღალია, ვიდრე MK- ის მოხმარება, შესაბამისად, ელემენტების გამონადენი განსხვავებაა (MK- ის ამჟამინდელი მოხმარების გზით არ არის), უგულებელყოფა. ექსპერიმენტულად დადგინდა, რომ, მიუხედავად იმისა, მიმდინარე მეშვეობით LED- ები, როდესაც ბატარეის გათიშვა, სიკაშკაშე მათი Glow მთელი ბატარეის ძაბვის დიაპაზონში. დიაგრამა ძალიან გამარტივებულია და არ არსებობს ძაბვის სტაბილიზატორი დამატებით მიმდინარე, რამაც შესაძლებელი გახადა დენის შეცვლა (მიმდინარე მოხმარება ძილის რეჟიმში - 1-3 მ ka).

მოწყობილობის ოპერაციების საკონტროლო ღილაკი უკავშირდება GP3- ის (ფეხი 4) გამომავალს, რომელიც კონფიგურაციის ბიტშია გამოცხადებული ციფრული შეყვანის სახით. ღილაკზე დაჭერით, ჩარევა ხდება გადამუშავების პროცესში, რომელიც ხდება შემდეგნაირად. ხანგრძლივი პრესის საშუალებით (4 წელზე მეტი), მოწყობილობა ძილის რეჟიმში შედის. მოკლე ზეწოლის მქონე, არსებობს შრომა შუქის სიჩქარის გადართვა წრეში მიმდინარე სიჩქარის მითითებით:

ბოლო რეჟიმში (წითელი LED- ები განათებულია), ყვითელი flashing სიგნალის რეჟიმი ჩართულია. ღილაკის ხანგრძლივი დაჭერით (ყველა LED- ის მოსახლეობის მიერ დადასტურებული), ნორმალურ ოპერაციაში გადადით რეჟიმში, ახალი რეჟიმის შეცვლით, თუ ღილაკი არ არის 6 წამზე მეტი., ოპერაციის რეჟიმი იგივე რჩება ღილაკი დაჭერილია.

დააკისროს ელემენტები AA ძილის რეჟიმში საკმარისია წელიწადზე ნაკლები, რის გამოც ძალაუფლების შეცვლა არ არის გათვალისწინებული მოწყობილობაში. მოწყობილობა გადადის ძილის რეჟიმში ასევე 0.5 - 1 საათის შემდეგ (დამოკიდებულია გადართვის ფერების სიჩქარით) ღილაკზე ზემოქმედების გარეშე. ძილის რეჟიმში, გამომავალი ხდება ნებისმიერი პრესის ღილაკზე. Microcontroller იკვებება შედეგები 1 და 8. შეინახოთ დასკვნები და გამარტივება დიზაინი, იგი ჩართული შიდა გენერატორი რეჟიმი გარე ელემენტების გარეშე.

მცირე განმარტებები პროგრამისთვის, რომელიც ინვესტიციით არის მოწოდებული:

დამუშავების ღილაკზე დაჭერით დამზადებულია სუბტროუტებში: Wait_butt __- ელოდება 6-იანი წლების დაჭერას და რეგისტრაციას. გარეშე დაჭერით, Push_butt __- დაწკაპვით ხანგრძლივობა, wait_nobutt __- ელოდება არ დაპრესილი ღილაკს. მოძრაობის სინათლის სტატუსის შეცვლის მომენტებში (ყვითელი და მოციმციმე მწვანე), გამომავალი პორტი წაიკითხავს მაგიდასთან ტაქტიკაში _ Subroutine (ახალგაზრდა ან უფროსი ნახევრად ტორტი). ანალოგიურად, სტატუსის მითითება, როდესაც ღილაკი დაჭერილია - IND__ subroutine. წასვლა ძილის რეჟიმში შემდეგ გაშვებული დრო, სავალდებულო გადასვლის interrupt გატარება subroutine მიერ პროგრამული უზრუნველყოფა ინსტალაცია interrupt დროშა პროგრამული უზრუნველყოფა ხდება. Const_Min Constant- ის შეცვლა, CONST_REG, CONSPER_SL შეიძლება შეიცვალოს შესაბამისად, მწვანე მოციმციმეობის პერიოდი, საწყის რეჟიმი ბატარეის, ოპერაციის დროს, გადაადგილების გარეშე გადაადგილების გარეშე.

ბეჭდური მიკროსქემის ფორუმში დამზადებულია ცალმხრივი fiberglass და აქვს 22x87 მმ ზომები. უკიდურესი LED- ები სხვადასხვა მიმართულებით პარალელურად არიან. საშუალოდ კომპლექტი ნაწილების ნაწილში ნაწილების, და მეორე - მხარეს ტრეკების გამომავალი დასკვნების ფორუმში და აფიქსირებს მათ ნაწილების springs of solder, და on ბილიკების გვერდით, რომელიც შეესაბამება შესაბამის ტრასებს.

ყველა რეზისტორატი 0.125 ვატსთან ერთად. LED- ები შეიძლება მიიღონ ნებისმიერი შიდა ან იმპორტირებული სასურველი ერთი ტიპის პირდაპირი ძაბვის ვარდნა მიმდინარე 10 ma შესახებ 2 ვოლტი. ღილაკი - ნებისმიერი ფიქსაცია. ბლოკზე მიკროკონტროლერი დამონტაჟებულია.

კონფიგურაციის სიტყვა ავტომატურად შევიდა მეხსიერებაში, როდესაც firmware დატვირთულია (IC-Prog- ში, "ფრინველის" დამონტაჟებულია მხოლოდ PWRT- ის პუნქტში, დარჩენილი ელემენტი "გადატვირთვა", "Oscillator" სვეტში "INTOSC GP4" ). პირველ რიგში აუცილებელია ფირმის წაკითხვისას სუფთა ჩიპი და 03FF- ის პროგრამის მეხსიერების დასასრულს სიტყვის მნიშვნელობა, რომელიც საჭიროა ჩიპის კონკრეტული ინსტანციის შიდა გენერატორის სიხშირის კონფიგურაცია. ჩამოტვირთვის შემდეგ Hex ფაილი პროგრამა, თქვენ უნდა ხელით განსაზღვროს ეს მნიშვნელობა 03ff. ამ მოწყობილობაში სიხშირის გადახრა არ არის კრიტიკული, მაგრამ მაინც უნდა იცოდეთ, რომ ეს მიკროკრედიტი მოითხოვს ასეთ პროცედურას. უკიდურეს შემთხვევაში, თუ ქარხნის ღირებულება დაკარგულია, შეგიძლიათ გააკეთოთ არაფერი - პროგრამამ გადადგა ნაბიჯები სწორი სამუშაოსთვის და ამ შემთხვევაში.

მოწყობილობა მოთავსებულია შესაფერისი პლასტმასის ყუთში. შესაბამისი ხვრელები კეთდება ყუთში და სახურავზე. ჩემი განსახიერება, სატრანსპორტო სინათლე და ღილაკი და ბატარეის ბაზა უკავშირდება პლასტმასის წყლის მილის სეგმენტს, 20 მმ დიამეტრით.

გამარჯობა!
მინდა გითხრათ, თუ როგორ არის პროგრამა PLC- ზე ტექნოლოგიური აღჭურვილობის კონტროლისთვის.
ყველაზე ხშირად მე შევხედე Schneider Electric- ის PLC- ს წარმოებას. ამ ამოცანის შერჩეული კვანტური კვანტური არის ამ მწარმოებლის ყველაზე ძლიერი და ძვირადღირებული PLC. მას შეუძლია გააკონტროლოს აღჭურვილობა ათასობით სიგნალებით შუქნიშნის განათებისთვის ნამდვილი ცხოვრება არავის ბუნებრივად გამოიყენებს.

მე არასდროს ყოფილა ჩართული საგზაო განათების ავტომატიზირებაში, ამიტომ ალგორითმი თავად გამოვიდა. Აქ არის:
1. სატრანსპორტო სინათლე რეგულირებადი საცალფეხო გადაკვეთისთვის. ისინი. სატრანსპორტო შუქი მანქანები, საცალფეხო შუქნიშნები და ფეხით მოსიარულეთა ღილაკზე დაჭერით, საცალფეხო აცნობებს გზის გადაადგილების სურვილს.
2. პროგრამის დაწყების შემდეგ, მწვანე მანქანები და წითელი ფეხით მოსიარულეთათვის.
3. ღილაკზე დაჭერით, საცალფეხო იწყება მოციმციმე მწვანე მანქანებისთვის, შემდეგ კი ყვითელი, მაშინ წითელი. ამის შემდეგ, მწვანე ფეხით მოსიარულეთა განათება up, მეშვეობით Დროის დაყენება იგი იწყება მოციმციმე, წითელი ფეხით მოსიარულეთა განათების, მაშინ ყვითელი და წითელი lights up მანქანები, მაშინ მწვანე.
4. წინასწარ განსაზღვრული პერიოდის შემდეგ მწვანე საცალფეხო შუქზე, დაჭერით საცალფეხო ღილაკს არ დაიწყება გარდამავალი ალგორითმი. გარდამავალი ალგორითმი ამ შემთხვევაში დაიწყება მხოლოდ მაშინ, როდესაც მითითებული დრო იწურება.
PLC პროგრამირების ტარდება ერთიანობა პროგრამირების გარემოში IEC 61131-3 სტანდარტული ენაზე. -ში ეს სტანდარტი 5 ენა შედის. მაგალითად, მე აირჩია ენის ფუნქციის ბლოკები - FBD.
აქ არის პროექტის ბრაუზერი ერთობაში:

კონფიგურაცია PLC:


PLC შედგება სამონტაჟო პანელისგან, ელექტროენერგიის მიწოდება (1), კონტროლერი (2), 24V DC სიგნალის 32-ე სიგნალის (4), დისკრეტული შეყვანის მოდული 32 DC სიგნალის 24V (5). სამონტაჟო პანელების რეალურ პროექტში, რომელიც დაკავშირებულია ერთ კონტროლერსთან სხვადასხვა ქსელებიშეიძლება ათეულობით იყოს და I / O მოდულები ასობითა.
შექმენით ცვლადების საჭირო ტიპები ცვლადების რედაქტორში:


I / O მოდულების მიერ დაზარალებულ ცვლადებს აქვთ მითითება, თუ რომელი კალათაში, მოდული და არხი მიბმული სიგნალი.
პროგრამა შედგება თითოეული კონტროლერის სკანირების ციკლის მიერ შესრულებული სექციების მიხედვით.
გამარტივებული კონტროლერი სკანირების ციკლი ასე გამოიყურება:
1. შეყვანის შეყვანის სიგნალები შეყვანის მოდულისგან მისამართებით ცვლადებისგან.
2. შესრულების სექციები.
3. ცვლადების ღირებულებების ჩაწერას მისამართები გამომავალი მოდულებისგან.
4. პრეტენზია 1.
შექმნა საათის სექცია იმპულსი გენერატორი ერთად პერიოდში 0.5 წამში. TP ერთეული, როდესაც შეყვანის სიგნალის ცვლილება 0-დან 1-მდე გამომავალი, ის იძლევა მოცემული ხანგრძლივობის პულსი.


აქ და ქვემოთ სექციების ეკრანის ქვემოთ მოცემულია ანიმაციური რეჟიმი, და არა რედაქტირების რეჟიმი. ისინი გამოვლინდებიან ცვლადი ღირებულებების ღირებულებებზე მიმდინარე დროს, როდესაც დატვირთული პროგრამით (რიცხვითი ცვლადების ნომრები, ფერადი მწვანე (1) -ით (0) სტოკონისთვის).
ძირითადი სექცია ძირითად ლოგიკას აწარმოებს.
SR ერთეული ადგენს გამომავალი 1-ში S1 \u003d 1 და რესეტი 0-დან 0-ზე.
R_trig ერთეული ადგენს გამომავალი 1 სკანირების ციკლს 1-ში, როდესაც შეყვანის 0-დან 1-მდე (წინა დეტექტორი).
ბლოკი F_TRIG- ს გამოაქვეყნებს 1 სკანირების ციკლს 1-დან 1-დან 0-მდე (უკანა დეტექტორი).
Inbutton ცვლადი, მიბმული ღილაკს ღილაკს, შეიცვალა სექცია inbuttonfortest, რათა შეცვალოს მისი ღირებულება კონტროლერი სიმულატორი გარეშე რეალური აღჭურვილობა.


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


ჩვენ გადმოვწეროთ პროექტი კონტროლერის სიმულატორს:


ნებისმიერი ცვლადი ღირებულება შეიძლება იხილოთ ანიმაციის მაგიდაზე:


მაგრამ გამართვის გამართვისთვის, შეგიძლიათ გააკეთოთ ოპერატორის ეკრანზე მარტივი გრაფიკა, რომლის ანიმაცია მიბმული ცვლადს:

ჩვენ ვცდილობთ გზის მოძრავი:

მე არ მოველით, რომ ასეთი მარტივი ობიექტის გაკონტროლება, როგორც შუქნიშანი, ის 30 ბლოკს მიიღებს.
მომდევნო სტატიაში მე გაჩვენებთ, თუ როგორ დავწეროთ ეს პროგრამაყველა IEC 61131-3 სტანდარტული ენების გამოყენებით.

Გააწერეთ. შეცვალა შეცდომა სტანდარტის სახელით.

(ციფრები), (პანელი).

განაცხადის შექმნის დაწყებამდე უნდა იყოს შესწავლილი ახალი კომპონენტების აღწერა.

Ამოცანა. შუქნიშნის მუშაობის მოდელი. პროექტის დაწყებისას, საგზაო პანელი უნდა იყოს ცარიელი. დაწყების ღილაკის დაჭერით, სინათლის ნათურა იწყება გადართვა. Stop ღილაკს დაჭერით - სინათლის პანელი კვლავ ცარიელია. გამოყენებით ტაიმერი, შეცვალოს საგზაო სიგნალი თანაბარი ინტერვალით. სიჩქარის სფეროში, ტაიმერის ინტერვალი შევიდა.

პროექტის პროგრესი

1. შექმნა ახალი პროექტი. შეინახეთ ცალკე საქაღალდეში, დაასახელეთ "შუქნიშნები".

2. ფორმის პანელზე (TSHAPE), ორი ღილაკი (Tbutton), ტექსტური ველი (TEDIT), წარწერა (Tlabel), ტაიმერი (ttimer) ნიმუშის შესაბამისად:

ეს ასე უნდა გამოიყურებოდეს:

2. ჩვენ რეგისტრაციას ვაკეთებთ:

დააყენეთ ეს თვისებები ღირებულებების ობიექტის ინსპექტორში:

Კომპონენტი საკუთრება შეფასება
ფორმა 1 წარწერა Შუქნიშანი
Panel1 წარწერა * ცარიელი *
ფორმა 1 ფორმა stcircle
ფორმის 2 ფორმა stcircle
ფორმა 3 ფორმა stcircle
Label1 წარწერა სისწრაფე
რედაქტირება 1 ტექსტი. * ცარიელი *
ღილაკი 1 წარწერა დაწყება
ღილაკი 2. წარწერა გაჩერება

3. შექმენით ღონისძიება FORM1- ში ONCREATE სექციაში - დააჭირეთ Troytheater

შექმენით ღონისძიება Timer1 in ontimer სექციაში - დააჭირეთ TROETCH

4. ფერები ფერები მოღვაწეები:

საბოლოო ტიპი:

5. ფორმის დატვირთვისას, ტაიმერი გამორთულია, პანელის ფორმები უხილავი გახდება.

შექმენით FormCreate ღონისძიების დამლაგებელი (ორჯერ დააჭირეთ FORM1 კომპონენტს) და ჩაწერეთ ეს კოდი:

var K: რიცხვი; პროცედურა tform1.formcreate (გამგზავნი: togject); დასაწყისი Timer1.Enabled: \u003d FALSE; Shape1.Visible: \u003d FALSE; Shape2.Visible: \u003d FALSE; Shape3.Visible: \u003d FALSE; დასასრული;

6. სინათლის ნათურების შეცვლა, დაწერეთ პროგრამის კოდი Timer1Timer Event Handler- ში. ეს კოდი შესრულდება ინტერვალით, რომ მომხმარებელი შემოდის სიჩქარით. ტაიმერის ჩვენების მიხედვით, ნათურა ნომერი განისაზღვრება, რომელიც უნდა იყოს ჩართული ამ მომენტში.

ორჯერ დააჭირეთ Timer1 კომპონენტს და ამ კოდის ჩასმა:

6. დაწერეთ პროგრამის კოდი დაწყების ღილაკზე. დარგში ღილაკზე დაჭერით, ტაიმერის ინტერვალი წაკითხულია, ტაიმერის კითხვები შეყვანილია, ტაიმერი გამოდის.

ორჯერ დააჭირეთ ღილაკს 1 კომპონენტი და ჩადეთ კოდი:

პროცედურა tform1.button1click (გამგზავნი: togject); დასაწყისი Timer1.interval: \u003d strtoint (edit1.text); k: \u003d 0; Timer1.Enabled: \u003d True; დასასრული;

7. დაწერეთ პროგრამის კოდი STOP ღილაკზე. ღილაკზე დაჭერის შემდეგ, ტაიმერი უნდა გამორთოთ, სინათლის ბოლქვები კვლავ უხილავია.

ორჯერ დააჭირეთ ღილაკს 2 კომპონენტი და ჩადეთ კოდი:

პროცედურა tform1.button2click (გამგზავნი: togject); დასაწყისი Timer1.Enabled: \u003d FALSE; Shape1.Visible: \u003d FALSE; Shape2.Visible: \u003d FALSE; Shape3.Visible: \u003d FALSE; დასასრული;

8. აწარმოეთ პროექტი. სიჩქარის სფეროში, შეიყვანეთ ნომერი 1000 (1000 ms \u003d 1c). შუქნიშნის სინათლის ნათურები ერთ წამში ინტერვალში დაიწყება.

არტემი Poznyak, სტუდენტი 10 "A" კლასი №33, EKIBASBUZ

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

IDE for Assembler.

პირველი შეკითხვა: რომელშიც განვითარების გარემო არის შეკრების პროგრამა? პასუხი არის ცალსახა - Masm32.. ის სტანდარტული პროგრამაგამოიყენება ამ jap. თქვენ შეგიძლიათ ჩამოტვირთოთ ოფიციალურ ვებგვერდზე Masm32.com სახით არქივში, რომელიც საჭიროებს ინსტალატორს. ალტერნატივად, შეგიძლიათ გამოიყენოთ ფაზმის გამოყენება, მაგრამ კოდი მნიშვნელოვნად განსხვავდება.

სამუშაოს დაწყებამდე მთავარია არ უნდა დაგვავიწყდეს, რომ დაამატოთ გზა სისტემის ცვლადში:

C: \\ masm32 \\ bin

გამარჯობა მსოფლიო პროგრამა Assembler- ზე

ითვლება, რომ ეს ძირითადი პროგრამა პროგრამირებაში, რომელიც დამწყებთათვის პირველ ადგილზეა. ალბათ ეს მიდგომა არ არის საკმაოდ ერთგული, მაგრამ ერთი გზა ან სხვა საშუალებას გაძლევთ დაუყოვნებლივ იხილოთ ვიზუალური შედეგი:

386. Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / მთავრმა მმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc შემადგენლობაში შედიოდნენ / Lib / Kernel32.Lib .Data msg_title db "title", 0 msg_message db "hello world", 0 .code დაწყება: ინკლუზიური გაგზავნა, 0, addr msg_message, addr msg_title, mb_ok incove exithprocess, 0 დასასრულს დაწყება

დაიწყოს, დაიწყოს Qeditor.exe რედაქტორი საქაღალდეში Masm32 დაყენებული, და მასში ჩვენ წერენ პროგრამის კოდი. მას შემდეგ, რაც ჩვენ გადავარჩინოთ იგი, როგორც ფაილი "." გაფართოება და Bildim პროგრამა პროექტის მენიუს გამოყენებით → "აშენება ყველა". თუ კოდექსში არ არის შეცდომები, პროგრამა წარმატებით შედგენილია და გამომავალი ჩვენ მიიღებთ მზა EXE ფაილს, რომელიც აჩვენებს windows ფანჯარა წარწერით "Hello World".

ორი ნომრის დამატება Assembler- ზე

ამ შემთხვევაში, ჩვენ ვხედავთ, არის თუ არა რიცხვების რაოდენობა ნულოვანი, თუ არა. თუ ასეა, მაშინ შესაბამისი შეტყობინება გამოჩნდება ეკრანზე, და თუ არა, არსებობს განსხვავებული შეტყობინება.

486 .Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / კომპანიისმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc ჩართვა /masm32/lib/user32.Lib შემადგენლობაში Lib / Kernel32.Lib მოიცავს / emasm32 / Macros.asm uselib masm32, comctl32, ws2_32 .data .მოგვიანებით დაწყება: MOV EAX, 123 MOV EBX, -90 ADD EAX, EBX Test EAX, EAX JZ Zero Invoke Message, 0, Chr $ ("EAX NOT 0!"), Chr $ ("ინფო"), 0 JMP Lexit Zero: Incomoke გაგზავნა, 0, Chr $ ("EAX 0!"), Chr $ ("ინფორმაცია"), 0 Lexit: მოიწვიოს გამორთვა, 0 დასასრულს დაწყება

აქ ჩვენ ვიყენებთ ე.წ. tags და სპეციალური გუნდები მათი გამოყენება (JZ, JMP, ტესტი). ჩვენ უფრო მეტად ვნახავთ:

  • ტესტი - გამოყენებული ლოგიკური შედარება ცვლადების (operands) სახით ბაიტი, სიტყვები, ან ორმაგი სიტყვები. შედარებისთვის, ბრძანება იყენებს ლოგიკურ გამრავლებას და უყურებს ბიტი: თუ ისინი 1-ის ტოლია, მაშინ შედეგი იქნება 1, წინააღმდეგ შემთხვევაში - 0. თუ ჩვენ მივიღებთ 0-ს, დროშები zf (ნულოვანი დროშა ), რომელიც იქნება 1-ის ტოლი. ZF- ზე დაფუძნებულია შემდეგი შედეგები.
  • jNZ - იმ შემთხვევაში, თუ ZF დროშა არსად არ მიუღია, გადასვლა ხდება ამ ეტიკეტზე. ხშირად ეს ბრძანება გამოიყენება იმ შემთხვევაში, თუ პროგრამას გააჩნია შედარებით ოპერაციები, რაც გარკვეულწილად გავლენას ახდენს ZF- ის შედეგებზე. ეს მოიცავს ტესტი და CMP.
  • jz - თუ ZF დროშა ჯერ კიდევ დამონტაჟდა, ეტიკეტების გარდამავალი.
  • jMP - მიუხედავად იმისა, არის თუ არა ZF, თუ არა, გარდამავალი ეტიკეტების მიერ.

რაოდენობის ნომრები შეკრების შესახებ

პრიმიტიული პროგრამა, რომელიც აჩვენებს ორ ცვლადს შეჯამების პროცესს:

486 .Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / კომპანიისმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc ჩართვა /masm32/lib/user32.Lib შემადგენლობაში Lib / Kernel32.Lib მოიცავს / emasm32 / Macros / Macros.asm uselib masm32, comctl32, ws2_32, wsg_title db "სათაური", 0 db 1h b db 2h buffer db 128 dup (?) ფორმატი DB "% D", 0 . კომპიუტერი დაწყება: MOV AL, AD AL, B INTSWORE WSPRINTF, ADDR ბუფერული, Addr Buffer, EAX- ის ფორმატი, EAX- ის გაგზავნა, 0, Addr Buffer, Addr MSG_TITLE, MB_OK INTROKET EXITPROCESS, 0

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

მიღების ღირებულება ბრძანების ხაზი Assembler

პროგრამირების ერთ-ერთი მნიშვნელოვანი ძირითადი ქმედება, მათი შემდგომი დამუშავებისათვის კონსოლის მონაცემების მიღება. ამ შემთხვევაში, ჩვენ მათგან მივიღებთ ბრძანების ხაზი და ფანჯრის ფანჯარაში ჩვენება:

486 .Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / კომპანიისმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc ჩართვა /masm32/lib/user32.Lib შემადგენლობაში Lib / Kernel32.Lib მოიცავს / Emasm32 / Macros / Macros.asm uslib Masm32, Comctl32, WS2_32 .DA .საქართველოს დაწყება: ზარის GetCommandline; შედეგი განთავსდება EAX Push 0 Push Chr $ ("Command Line") Push EAX; ტექსტის გამომავალი ჩვენ ვიღებთ EAX Push 0 Call MessageBox Push 0 Call ExitProcess End დაწყება

თქვენ ასევე შეგიძლიათ გამოიყენოთ ალტერნატიული მეთოდი:

486 .Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / კომპანიისმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc შემადგენლობაში შედიოდნენ / მმ Lib / Kernel32.Lib მოიცავს / Emasm32 / Macros / Macros.asm uslib Masm32, Comctl32, WS2_32 .DA .საქართველოს დაწყება: ზარის GetCommandline; შედეგი განთავსდება EAX- ში მოთავსებული GetCommandline- ში, 0, EAX, CHR $ ("Command Line"), 0-ის გამოშვება, 0 Push 0 Call ExitProcess End Start

აქ არის გამოყენებული insoke - სპეციალური მაკრო, რომელთანაც პროგრამის კოდი გამარტივებულია. შედგენისას, მაკრო ბრძანებები ტრანსფორმირებულ ბრძანებებში გარდაიქმნება. ყოველ შემთხვევაში, ჩვენ ვიყენებთ დასტის - პრიმიტიული გზა შენახვის მონაცემები, მაგრამ ამავე დროს ძალიან მოსახერხებელია. STDCall შეთანხმებით, ყველა winapi ფუნქციებში, ცვლადები გადაცემული მეშვეობით დასტის, მხოლოდ შემოსული საპირისპირო ბრძანებადა მოათავსეთ შესაბამისი EAX რეგისტრაცია.

Cycles in Assembler

გამოიყენეთ ვარიანტი:

მონაცემები msg_title db "title", 0 db 1h buffer db 128 dup (?) ფორმატში db "% d", 0.Code დაწყება: MOV AL, A.REPEAT INC ალ WSPRINTF, ADDR BUFFER, Addr ფორმატში, ალ MOV EAX, 1 MOV EDX, 1 .While EDX \u003d\u003d 1 Inc EAX .თუ EAX \u003d\u003d 7 .საქართველოს .საქართველოს მოხმარება .ჩამოყენებული WSPRINTF, Addr ბუფერული, ADDR ფორმატში, EAX- ის გაგზავნა, 0, Addr Buffer, Addr MSG_TITLE, MB_OK გააქტიურეთ გამორთვა, 0

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

ოდენობის ელემენტების ოდენობა შეკრების შესახებ

აქ ჩვენ შევაფასებთ ცვლადების ღირებულებებს მასივში "ამისთვის" ციკლის გამოყენებით:

486 .Model ბინა, STDCall ვარიანტი Casemap: არცერთი მოიცავს / კომპანიისმ32/include/windows.inc ჩართვა /masm32/include/user32.inc ჩართვა /masm32/include/kernel32.inc შემადგენლობაში შედიოდნენ / მმ Lib / Kernel32.Lib მოიცავს /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "title", 0 db 1h x dd 0,1,2,3,4,5,6,7, 8,9,10,11 N DD 12 ბუფერული DB 128 DUP (?) ფორმატი DB "% D", 0 .code starth, 0 MOV ECX, N MOV EBX, 0 L: ADD EAX, X ADD EBX, ტიპი X Dec ECX CMP ECX, 0 jne l იწვევს wsprintf, addr ბუფერული, addr buffer, addr ფორმატში, eax incomoke გაგზავნა, 0, addr buffer, addr msg_title, mb_ok insigoke exitprocess, 0 ბოლო დაწყება

საოლქო საარჩევნო კომისიის ბრძანება, ასევე INC, ცვლის ერთეულს ერთეულის ღირებულებას, მხოლოდ საპირისპირო მიმართულებით, -1-ში. მაგრამ CMP ადარებს ცვლადებს subtraction: იღებს ერთი ღირებულება მეორე, და, რის შედეგადაც, შესაბამისი დროშები აყენებს.

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

Assembler საინტერესოა მისი პრეზენტაცია ცვლადები, რომელიც საშუალებას გაძლევთ მათთან არაფერი. სპეციალისტი, რომელიც ყველა subtleties- ში გამოვიდა ამ ენაზე პროგრამირების, ფლობს ნამდვილად ღირებული ცოდნა, რომელსაც ბევრი გზა გამოიყენოს. ერთი ამოცანა შეიძლება მოგვარდეს ყველაზე მეტად სხვადასხვა გზებიაქედან გამომდინარე, გზა იქნება thorny, მაგრამ არანაკლებ საინტერესო.

პოსტი ნახვა: 767