KIRISH
DDRx.y = 1 pin ishlaydi Chiqish
PIN chiqish sifatida sozlanganda, biz uni mantiqiy 1 (+5 volt) va mantiqiy 0 (0 volt) ga o'rnatishimiz mumkin. Bu PORTx.y registriga yozish orqali amalga oshiriladi. Keyinchalik kirish-chiqish portlari haqida batafsil muhokama qilinadi. Va endi biz hamma narsani skrinshotda ko'rsatilganidek o'rnatamiz va Fayl->Yaratish, Saqlash va Chiqish-ni bosing. Keyinchalik, CodeWizard bizga loyihani saqlashni taklif qiladi, biz uni saqlaymiz va kodga qaraymiz:
#o'z ichiga oladi //vaqt kechikishlarini yaratish kutubxonasi void main(void) ( PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x01; // PC0 oyoq chiqishini PORTD=0x00; DDRD=0x00; // Taymer/Counter 0 ishga tushirish TCCR0=0x00; TCNT0=0x00; // Taymer/Hisoblagich 1 ishga tushirildi TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1=0x0; OCR1=0H0; OCR1x0=OCR100; OCR1x0; ; OCR1BL=0x00; // Taymer/2 hisoblagichni ishga tushirish ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Tashqi uzilish(lar)ni ishga tushirish MCUCR=0x00; // Taymer(lar)/hisoblagich(lar) ) Uzilish(lar)ni ishga tushirish TIMSK=0x00; // Analog solishtirgichni ishga tushirish ACSR=0x80; SFIOR=0x00; while (1) ( ); )
Bu erda hamma narsa siz uchun qo'rqinchli va notanish bo'lib tuyulishi mumkin, lekin aslida hamma narsa unday emas. Biz foydalanmayotgan MK tashqi qurilmalarini ishga tushirishni bekor qilish orqali kodni soddalashtirish mumkin. Soddalashtirilgandan so'ng u quyidagicha ko'rinadi:
#o'z ichiga oladi //mega8 #include mikrokontrolleri bilan ishlash kutubxonasi //vaqt kechikishlarini yaratish kutubxonasi void main(void) ( DDRC=0x01; /* PC0 oyog'ini 0x01 chiqish yozuvi siz uchun notanish bo'lib ko'rinishi mumkin va bu o'n oltilik tizimdagi 1 raqami, bu qator 0b00000001 ga ekvivalent bo'ladi. binarda, keyin men aynan shunday yozaman. */ while (1) ( ); )
Hammasi yaxshi. Ammo LED miltillashi uchun biz PC0 oyog'idagi mantiqiy darajani o'zgartirishimiz kerak. Buning uchun asosiy halqaga bir necha qator qo'shing:
#o'z ichiga oladi //mega8 #include mikrokontrolleri bilan ishlash kutubxonasi //vaqt kechikishlarini yaratish kutubxonasi void main(void) ( DDRC=0x01; /* PC0 oyog'ini 0x01 chiqish yozuvi siz uchun notanish bo'lib ko'rinishi mumkin va bu o'n oltilik tizimdagi 1 raqami, bu qator 0b00000001 ga ekvivalent bo'ladi. binarda, keyin men aynan shunday yozaman.*/ while (1)//asosiy dastur sikli (// asosiy dastur siklining operator qavsi PORTC.0=1 ni ochadi; //Port C 1 ni pinga o'rnating. 0 delay_ms(500); //500 millisekundda kechikish PORTC.0=0; // C 0 portini pin 0 delay_ms(500); // 500 millisekundga kechiktirish );// operator qavsni yoping asosiy dastur tsikli)
Hammasi, endi kod tayyor. Dasturimizni kompilyatsiya qilish (MK protsessor ko'rsatmalariga tarjima qilish) uchun barcha loyiha fayllarini yaratish belgisini bosing. Loyihamizda joylashgan Exe papkasida olti burchakli kengaytmali fayl paydo bo'lishi kerak, bu bizning MK uchun dasturiy ta'minot faylimiz. Mikrodasturimizni Proteus-dagi virtual mikrokontrollerga o'tkazish uchun siz Proteus-dagi mikrokontroller tasvirini ikki marta bosishingiz kerak. Bunday oyna paydo bo'ladi
Dastur fayli maydonidagi papka belgisini bosing, o'n oltilik - proshivkamiz faylini tanlang va OK tugmasini bosing. Endi biz sxemamizning simulyatsiyasini ishga tushirishimiz mumkin. Buning uchun Proteus oynasining pastki chap burchagidagi "Play" tugmasini bosing.
Men bir yoki ikki marta MKni o'rganishni assemblerdan boshlash kerakligini aytdim. Saytdagi butun kurs bunga bag'ishlandi (garchi bu juda izchil bo'lmasa-da, lekin asta-sekin men uni adekvat ko'rinishga aylantiraman). Ha, bu qiyin, natija birinchi kunida bo'lmaydi, lekin siz boshqaruvchida nima sodir bo'layotganini tushunishni o'rganasiz. Siz uning qanday ishlashini bilib olasiz va boshqa odamlarning manbalarini maymun kabi ko'chirmang va nima uchun u to'satdan ishlamay qolganini tushunishga harakat qiling. Bunga qo'shimcha ravishda, C uchun eng noaniq vaqtda pitchfork bilan chiqadigan redneck kodini aralashtirib yuborish ancha oson.
Afsuski, hamma darhol natijalarni xohlaydi. Shuning uchun men boshqa yo'l bilan borishga qaror qildim - C bo'yicha darslik qilish, lekin uning ichki kiyimini namoyish qilish bilan. Yaxshi o'rnatuvchi dasturchi har doim temir bo'lagini g'ishtdan mahkam ushlab, uning ruxsatsiz bir qadam tashlashiga yo'l qo'ymaydi. Xo'sh, avval C kodi nima bo'ladi, keyin kompilyator nimani tug'dirdi va bularning barchasi haqiqatda qanday ishlaydi :)
Boshqa tomondan, C ning kuchli tomoni bu kodni ko'chirishdir. Agar, albatta, hamma narsani to'g'ri yozish uchun. Loyihaning turli qismlariga ish algoritmlari va ularning temir tatbiqlarini ajratish. Keyin, algoritmni boshqa MK ga o'tkazish uchun faqat apparatga barcha kirishlar yozilgan interfeys qatlamini qayta yozish va barcha ishchi kodni avvalgidek qoldirish kifoya qiladi. Va, albatta, o'qish qobiliyati. Sish manba kodini bir qarashda tushunish osonroq (garchi .. masalan, men nimani siltashimga ahamiyat bermayman - hech bo'lmaganda si, hech bo'lmaganda asm :)), lekin yana, agar hamma narsa to'g'ri yozilgan bo'lsa. Men ham ushbu fikrlarga e'tibor qarataman.
Barcha misollarning sher ulushi qo'yiladigan eksperimental temir bo'lagi sifatida mening disk raskadrovka taxtam bo'ladi.
Do'stlaringiz bilan baham: |