Розробка мікропроцесорної системи управління та керування об'єктом на базі RISK AVR-мікроконтролера ATMega1281V-8AU

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

 

Найближче значення із ряду Е192:

Значення резистору R3 розраховуємо по формулі (4.8):

 

 

Найближче значення із ряду Е192:

Значення резистору R1 розраховуємо по формулі (4.7):

 

 

Найближче значення із ряду Е192:

 

3.8 Система дискретного вводу-виводу

 

Системи дискретного вводу та виводу інформації являють собою системи прийому та видачі сигналів дискретної форми сигналу, тобто цифрові сигнали. Для підвищення точності сигналів та уникнення неоднозначності у інтерпретації даних необхідно ввести у склад обох систем гальванічні розвязки сигналів.

У якості гальванічного елемента використано оптрон АОД130, що являє собою пару: фотодіод та світло діод, що розташовані в одному чотирьох контактному корпусі.

4. Розробка програмного забезпечення

 

Згідно завдання на курсову роботу необхідно розробити програму ініціалізації МК для роботи із усіма пристроями, що входять до складу системи.

Для цього, по-перше, необхідно сконфігурувати регістри портів вводу-виводу на виконання операцій, що були зазначені для них, під час розробки принципової схеми. Конфігурування відбувається шляхом встановлення та скидання необхідних бітів у регістрах PORTх (рядки 25-38) та DDRх (рядки 39-50), а також читанням стану виводів портів через регістр PINx.

По-друге, сконфігорувати регістри вводу-виводу, що відображають внутрішнє налаштування периферійних пристроїв МК, а саме АЦП, таймера-лічильника Т1, зовнішнього ОЗП, модуля USART.

Для конфігурування АЦП необхідно встановити регістри ADCSRA та ADMUX (рядки 4-7, 52-57).

Для конфігурування таймера-лічильника Т1, щоб він працював як ШІМ, необхідно сконфігурувати регістри TCCR1A, TCCR1B, TCCR1C (рядки 13-15, 73-87).

Для конфігурації роботи із зовнішнім ОЗП використовуються регістри XMCRA, XMCRB (рядки 8, 9, 58-63).

Для конфігурування модуля USART використовуються UCSR0A, UCSR0B, UCSR0C (рядки 10-12, 64-72).

 

Лістинг програми

;=2:32=62,55.equADMX0=0b00000000;ADC0,;6.equADMX6=0b00000110;ADC6,;7.equADMX3_1=0b00010011;ADC3-1,;8.equXMCR_A=0b10000001;SRE=1(.),;SRL[2..0]=0(),;SRW[11..00]=0001()9.equXMCR_B=0b00000100;XMBK=0,6-3;XMM[2..0]=100([7..4];)10.equUCSRA=0b00100000">№МіткаКомандаОперандиПримітка1.nolist2.include"С:\Kursovoy\PMS_Kursovoy \"m1281def.inc"3.list;--Содержимое регистров4.equADCRS = 0b10000101;ADEN=1 - АЦП включ., ADSC=0, ;ADATE=0 (одиночный режим), ADIF=0, ;ADEN=0, ADFPS[2..0]=101 (делитель ;частоты на 32) --> рабочая частота ;АЦП=2МГц : 32 = 62,5кГц5.equADMX0 = 0b00000000;несимметричный вход ADC0, внешнее ;опорное напряжение №МіткаКомандаОперандиПримітка6.equADMX6 = 0b00000110;несимметричный вход ADC6, внешнее ;опорное напряжение7.equADMX3_1 = 0b00010011;симметричный входы ADC3-1, внешнее ;опорное напряжение8.equXMCR_A = 0b10000001;SRE=1 (разрешена работа с вн. ОЗУ), ;SRL[2..0]=0 (один сектор), ;SRW[11..00]=0001 (один такт ожидания)9.equXMCR_B = 0b00000100;XMBK=0, биты 6-3 зарезервир ;XMM[2..0]=100 (выводы РС[7..4] могут ;свободно использоваться как порты ВВ)10.equUCSRA = 0b00100000

; регистр А управления USART11.equUCSRB = 0b00000010; регистр B управления USART12.equUCSRC = 0b00100110;UMSEL[01..00]=00 (асинхр. режим ;работы), UPM[01..00]=10 (проверка на ;четность), UCSZ[01..00 (8-ми битный ;формат посылок)]13.equTCCRA = 0b00110010;COM1A[1..0]=00 отключен вывод ;OCR1A, COM1B[1..0]=11 OCR1B при ;прямом счете на выходе равен 1, при ;инверстном счете - 0, COM1C[1..0]=00 ;отключен вывод OCR1C, ;WGM[11..10]=10 определяет 10 режим ;работы14.equTCCRB = 0b00010010;WGM[13..12]=10 определяет 10 режим ;работы, CS[12..10]=010 источник ;тактового сигнала (clk_IO/8)15.equTCCRC = 0b00000000; регистр управления Т1;--Рабочие регистры16.deft0 = r16; регистру r16 присвоить имя t017.deft1 = r17; регистру r176 присвоить имя t10;--Начало18.cseg; начало сегмента кода19.org 020rjmp Initial; переход к подпрограмме Initial№МіткаКомандаОперандиПримітка;--Инициализация МК21Initial:ldit1, low(RAMEND);инициализация 22outSPL, t1;младшего и старшего байтов23ldit1, high(RAMEND);указателя24outSPH, t1;стека;--Конфигурация портов ввода-вывода

;--Включаем подтягивающие резисторы и задаем начальное значение выводов25ldit0, 0x00; для порта А не требуются 26outPORTA, t0; подтягивающие резисторы27ldit0, 0b00111111; для выводов PB5-0 включить 28outPORTB,t0; подтягивающие резисторы29ldit0, 0b11110000; для выводов PС7-4 включить 30outPORTC,t0; подтягивающие резисторы31ldit0, 0b11000000; для выводов PD7, PD6 включить 32outPORTD,t0; подтягивающие резисторы33ldit0, 0b11111101; для всех выводов портаЕ, кроме РF1,№МіткаКомандаОперандиПримітка34outPORTЕ,t0;включить подтягивющие резисторы35ldit0, 0xFF ; для всех выводов порта F36outPORTF,t0;включить подтягивющие резисторы37ldit0, 0b11100000; для выводов порта PG7-538outPORTG,t0;включить подтягивющие резисторы;--Конфигцрируем выводы портов (режим работы)39ldit1, 0xFF;выводы РА 40outDDRA, t1;определить как выходы41ldit1, (1<<DDB7)|(1<<DDB6);выводы РВ7, РВ6 определить как42outDDRB,t1;выходы, остальные - как входы43ldit1, (1<<DDC3)|(1<<DDC2)|

(1<<DDC1)|(1<<DDC0); выв?/p>