Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Тестирование и отладка микропроцессорных системСтр 1 из 3Следующая ⇒
СОДЕРЖАНИЕ РАЗДЕЛ 2 ВЫПОЛНЕНИЕ ИНДИВИДУАЛЬНОГО ЗАДАНИЯ.. 2 ПК 2.1. Создавать программы на языке ассемблера для микропроцессорных систем 2-3 ПК 2.2. Производить тестирование и отладку микропроцессорных систем…………………………………………………………………….……4-6 ПК 2.3.Осуществлять установку и конфигурирование персональных компьютеров и подключение периферийных устройств………………..…...6-7 ПК 2.4. Выявлять причины неисправности периферийного Оборудования………………………………………………………………….7
2 Раздел. Отчёт за индивидуальные задания 2.1. Программирование на языке assembler: микроконтроллера Atmel AVR: «Сформировать заданное значение частоты таймера 1 Кгц» Чтобы получить частоту 1 Кгц, нужно 1 поделить на 62, 5. Нецелое число отсчетов в таймере организовать сложно. Для этого можно начинать с числа 194, что до переполнения (значения 256, т. е. 0 в счетном регистре) даст 62 отсчета. Еще пол-отсчета можно сделать, если сменить частоту на входе таймера на более высокую при этом следует еще учесть количество тактов, необходимое для перестройки таймера.
Для точной подгонки частоты можно выбрать подходящее значение тактовой частоты МК: так, " кварц" с частотой 4096 кГц даст при делении на 64 ровно 64 кГц, и делить придется уже на целое число. Тогда можем выбрать более высокую частоту на входе счетчика. Если установить коэффициент предделителя 1/8, то из 4 МГц получим 500 кГц, которые поделим на 250 описанным ранее методом и отсчитаем два таких цикла переполнения.
Нужно с частотой 1 кГц переключать внешний вывод МК (вывод PD6) рисунок 1. Чтобы частота переключения была 1 кГц, нам необходимо за один период переключить вывод дважды (от высокого к низкому уровню и обратно).
Рисунок 1. Расположение выводов микроконтроллера AT90S2313
.device AT90S2313 .include " 2313def.inc"; частота 4 Мгц .equ K_div = 250 ; коэффициент деления Кдел .def rK_div = r16; рабочая ячейка для Кдел .def count = r17; счетчик до 2 .def temp = r18; рабочая переменная ; ===== прерывания rjmp Reset; вектор сброса .org $006; по адресу $006 прерывание переполнения Timer0 rjmp TIM0 ; ====== начало программы .org $00С TIM0:; прерывание Timer0 inc count sbrs count, 0; если счетчик нечетный, пропустить sbr temp, 0b01000000; иначе установить бит 6 sbrc count, 0; если счетчик четный, пропустить cbr temp, 0b01000000; иначе сбросить бит 6 out PortD, temp; вывести в порт D out TCNT0, rK_div; " заряжаем" таймер reti; конец прерывания таймера Reset: ldi temp, low(RAMEND); загрузка указателя стека out SPL, temp ldi temp, 0b01000000; шестой разряд порта D на выход out DDRD, temp clr count; очищаем clr temp; регистры ldi temp, (1< < TOIE0); разр. прерывания Timer0 out TIMSK, temp ldi rK_div, K_div; значение к. деления (250) neg rK_div; 256-K_div, т. к. счетчик суммирующий out TCNT0, rK_div; " заряжаем" таймер ldi temp, 0b00000010; Timer0 включить 1: 8 out TCCR0, temp sei Cykle: rjmp cykle ldi count, 2
Тестирование и отладка микропроцессорных систем
|