Для цього, по-перше, необхідно сконфігурувати регістри портів вводу-виводу на виконання операцій, що були зазначені для них, під час розробки принципової схеми. Конфігурування відбувається шляхом встановлення та скидання необхідних бітів у регістрах 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).
Лістинг програми
| № | Мітка | Команда | Операнди | Примітка |
| 1 | .nolist | |||
| 2 | .include | "С:\Kursovoy\PMS_Kursovoy \"m1281def.inc" | ||
| 3 | .list | |||
| ;--Содержимое регистров | ||||
| 4 | .equ | ADCRS = 0b10000101 | ;ADEN=1 - АЦП включ., ADSC=0, ;ADATE=0 (одиночный режим), ADIF=0, ;ADEN=0, ADFPS[2..0]=101 (делитель ;частоты на 32) --> рабочая частота ;АЦП=2МГц : 32 = 62,5кГц | |
| 5 | .equ | ADMX0 = 0b00000000 | ;несимметричный вход ADC0, внешнее ;опорное напряжение | |
| № | Мітка | Команда | Операнди | Примітка |
| 6 | .equ | ADMX6 = 0b00000110 | ;несимметричный вход ADC6, внешнее ;опорное напряжение | |
| 7 | .equ | ADMX3_1 = 0b00010011 | ;симметричный входы ADC3-1, внешнее ;опорное напряжение | |
| 8 | .equ | XMCR_A = 0b10000001 | ;SRE=1 (разрешена работа с вн. ОЗУ), ;SRL[2..0]=0 (один сектор), ;SRW[11..00]=0001 (один такт ожидания) | |
| 9 | .equ | XMCR_B = 0b00000100 | ;XMBK=0, биты 6-3 зарезервир ;XMM[2..0]=100 (выводы РС[7..4] могут ;свободно использоваться как порты ВВ) | |
| 10 | .equ | UCSRA = 0b00100000 | ; регистр А управления USART | |
| 11 | .equ | UCSRB = 0b00000010 | ; регистр B управления USART | |
| 12 | .equ | UCSRC = 0b00100110 | ;UMSEL[01..00]=00 (асинхр. режим ;работы), UPM[01..00]=10 (проверка на ;четность), UCSZ[01..00 (8-ми битный ;формат посылок)] | |
| 13 | .equ | TCCRA = 0b00110010 | ;COM1A[1..0]=00 отключен вывод ;OCR1A, COM1B[1..0]=11 OCR1B при ;прямом счете на выходе равен 1, при ;инверстном счете - 0, COM1C[1..0]=00 ;отключен вывод OCR1C, ;WGM[11..10]=10 определяет 10 режим ;работы | |
| 14 | .equ | TCCRB = 0b00010010 | ;WGM[13..12]=10 определяет 10 режим ;работы, CS[12..10]=010 источник ;тактового сигнала (clk_IO/8) | |
| 15 | .equ | TCCRC = 0b00000000 | ; регистр управления Т1 | |
| ;--Рабочие регистры | ||||
| 16 | .def | t0 =r16 | ; регистру r16 присвоить имя t0 | |
| 17 | .def | t1 =r17 | ; регистру r176 присвоить имя t10 | |
| ;--Начало | ||||
| 18 | .cseg | ; начало сегмента кода | ||
| 19 | .org 0 | |||
| 20 | rjmp | Initial | ; переход к подпрограмме Initial | |
| № | Мітка | Команда | Операнди | Примітка |
| ;--Инициализация МК | ||||
| 21 | Initial: | ldi | t1, low(RAMEND) | ;инициализация |
| 22 | out | SPL, t1 | ;младшего и старшего байтов | |
| 23 | ldi | t1, high(RAMEND) | ;указателя | |
| 24 | out | SPH, t1 | ;стека | |
| ;--Конфигурация портов ввода-вывода ;--Включаем подтягивающие резисторы и задаем начальное значение выводов | ||||
| 25 | ldi | t0, 0x00 | ; для порта А не требуются | |
| 26 | out | PORTA, t0 | ; подтягивающие резисторы | |
| 27 | ldi | t0, 0b00111111 | ; для выводов PB5-0 включить | |
| 28 | out | PORTB,t0 | ; подтягивающие резисторы | |
| 29 | ldi | t0, 0b11110000 | ; для выводов PС7-4 включить | |
| 30 | out | PORTC,t0 | ; подтягивающие резисторы | |
| 31 | ldi | t0, 0b11000000 | ; для выводов PD7, PD6 включить | |
| 32 | out | PORTD,t0 | ; подтягивающие резисторы | |
| 33 | ldi | t0, 0b11111101 | ; для всех выводов портаЕ, кроме РF1, | |
| № | Мітка | Команда | Операнди | Примітка |
| 34 | out | PORTЕ,t0 | ;включить подтягивющие резисторы | |
| 35 | ldi | t0, 0xFF | ; для всех выводов порта F | |
| 36 | out | PORTF,t0 | ;включить подтягивющие резисторы | |
| 37 | ldi | t0, 0b11100000 | ; для выводов порта PG7-5 | |
| 38 | out | PORTG,t0 | ;включить подтягивющие резисторы | |
| ;--Конфигцрируем выводы портов (режим работы) | ||||
| 39 | ldi | t1, 0xFF | ;выводы РА | |
| 40 | out | DDRA, t1 | ;определить как выходы | |
| 41 | ldi | t1, (1<<DDB7)|(1<<DDB6) | ;выводы РВ7, РВ6 определить как | |
| 42 | out | DDRB,t1 | ;выходы, остальные - как входы | |
| 43 | ldi | t1, (1<<DDC3)|(1<<DDC2)| (1<<DDC1)|(1<<DDC0) | ; выводы РС3-0 определить как выходы | |
| 44 | out | DDRC,t1 | ; остальные – как входы | |
| 45 | ldi | t1, (1<<DDD5)|(1<<DDD4)| (1<<DDD3)|(1<<DDD2)| (1<<DDD1)|(1<<DDD0) | ; выводы PD6, PD7 определить как ; входы | |
| 46 | out | DDRD,t1 | ;остальные выводы – как выходы | |
| 47 | ldi | t1, (1<<DDE1) | ; вывод РЕ1 установить как выход, | |
| 48 | out | DDRE,t1 | ;остальные как вход | |
| 49 | ldi | t1, (1<<DDG4)|(1<<DDG3)| (1<<DDG2)|(1<<DDG1)| (1<<DDG0) | ;выводы PG7-5 установить как входы | |
| 50 | out | DDRG,t1 | ;остальные как выходы | |
| 51 | nop | |||
| ;--Инициализация АЦП | ||||
| 52 | ldi | t1, ADMX0 | ;записать в регистр ADMUX значение | |
| 53 | ldi | XL, ADMUX | ;соответствующее необходимому режиму | |
| 54 | st | X, t1 | ;работы мультиплексора АЦП | |
| 55 | ldi | t1, ADCRS | ;записать в регистр ADCSRA значение | |
| 56 | ldi | XL, ADCSRA | ;соответствующее необходимому режиму | |
| 57 | st | X,t1 | ;работы АЦП | |
| № | Мітка | Команда | Операнди | Примітка |
| ;--Инициализация работы с внешним ОЗУ | ||||
| 58 | ldi | t1, XMCR_A | ;сконфигурировать регистр А | |
| 59 | ldi | XL, XMCRA | ;управления | |
| 60 | st | X, t1 | ; внешним ОЗУ | |
| 61 | ldi | t1, XMCR_B | ;сконфигурировать регистр В | |
| 62 | ldi | XL, XMCRB | ;управления | |
| 63 | st | X, t1 | ; внешним ОЗУ | |
| ;--Порт USART | ||||
| 64 | ldi | t1, UCSRA | ;сконфигурировать регистр А | |
| 65 | ldi | XL, UCSR0A | ;управления | |
| 66 | st | X, t1 | ; модулем USART | |
| 67 | ldi | t1, UCSRB | ;сконфигурировать регистр B | |
| 68 | ldi | XL, UCSR0B | ;управления | |
| 69 | st | X, t1 | ; модулем USART | |
| 70 | ldi | t1, UCSRC | ;сконфигурировать регистр C | |
| 71 | ldi | XL, UCSR0C | ;управления | |
| 72 | st | X, t1 | ; модулем USART | |
| № | Мітка | Команда | Операнди | Примітка |
| ;--Инициализация ШИМ | ||||
| 73 | ldi | t1, TCCRA | ;сконфигурировать регистр А | |
| 74 | ldi | XL, TCCR1A | ;управления | |
| 75 | st | X, t1 | ;таймером-счетчиком Т1 | |
| 76 | ldi | t1, TCCRB | ;сконфигурировать регистр В | |
| 77 | ldi | XL, TCCR1B | ;управления | |
| 78 | st | X, t1 | ;таймером-счетчиком Т1 | |
| 79 | ldi | t1, TCCRC | ;сконфигурировать регистр С | |
| 80 | ldi | XL, TCCR1C | ;управления | |
| 81 | st | X, t1 | ;таймером-счетчиком Т1 | |
| 82 | ldi | t0, 0x07 | ; установка коеффициента | |
| 83 | ldi | XL, ICR1H | ; пересчета ТОР | |
| 84 | st | X, t0 | ; равного | |
| 85 | ldi | t0, 0xFF | ; ТОР=2^(N-1), где | |
| 86 | ldi | XL, ICR1L | ; N=11, т.е. | |
| 87 | st | X, t0 | ; ТОР=2047 | |
| ;--Инициализация ЖКИ | ||||
| 88 | initLCD_1: | ldi | t0,$20 | ;4-битный интерфейс, 1-строка, шрифт-5х7 точек |
| 89 | initLCD_2: | ldi | t0,$0C | ;включить дисплей, выключить курсор |
| 90 | initLCD_3: | ldi | t0,$01 | ;очистить дисплей и установить курсор в начальную позицию |
| 91 | nop | |||
| 92 | ret | |||
Висновок
В данній курсовій работі була розроблена система управління та керування об’єктом на базі одно кристального RISK AVR-мікроконтролера ATMega1281V-8AU , що складається з:
- Системи аналогового вводу інформації;
- Системи аналогового виводу інформації;
- Системи дискретного вводу інформації;
- Системи дискретного виводу інформації;
- Клавіатура;
- Індикація;
- Зовнішній ОЗП;
- Інтерфейс зв’язку з ПЕОМ.
Список використаних джерел
1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. – М.: Издательский дом «Додэка-ХХІ», 2007. – 592с.: ил.
2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному. Изд.2-е, испр. и доп. – М.: СОЛОН-Пресс, 2004. – 304с.
3. Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров.: Пер. с нем. – К.: «МК-Пресс», 2006. – 208с.
4. Микропроцессоры: В 3 кн. Кн. 2. Средства сопряжения. Контролирующие и информационно-управляющие системы: Учеб. для втузов/В.Д. Вернер, Н.В. Воробьев, А.В. Горячев и др.; Под. ред. Л.Н. Преснухина. – М.: Высш. шк., 1986. -383 с.: ил.
5. http://atmel.ru/Articles/Atmel17.htm
6. http://tehdoka.ru/BP/mst.php
7. http://www.gaw.ru/html.cgi/txt/interface/rs232/