Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Out SPL, temp ; завершение инициализации памяти стекаСодержание книги
Поиск на нашем сайте
Ldi TEMP, 0x17; 00010111, setting bits for OC1, PB2 and PB4, PB0 Out DDRB, TEMP; set Port B direction as above Ldi TEMP, 0x28; 00101000, PB5 pullup, PB4 lo, PB3 pullup, PB2 lo, OC1 low, Out PORTB, TEMP Out PORTB, TEMP; set Port B Ldi TEMP, 0xFC; All outputs except bits 0,1 (UART) out DDRD, TEMP; rcall LCD_SETUP;; Initialize LCD and send rcall LCD_HELLO;; a welcome message Ldi TEMP, 12; Set UART 4800 bauds for 1 MHz out UBRR, TEMP; Ldi TEMP, 0xF8; Activate all interrupts and TX/RCV out UCR, TEMP; and go! Sei FOREVER:; Endless loop. RX interrupt Nop; will do the job nop; rjmp FOREVER;; UART_RX:; Read UART chararter and In PARAM, UDR; send it to the LCD rcall LCD_DATA; Reti ; LCD Driving Library example ; Display setup for 4 bits interface LCD_SETUP: Ldi TEMP, 10; Wait about 20msec after powerup SET1:; LCD is a quite slow, rcall WAIT_2M; mind delays! dec TEMP; brne SET1; Ldi TEMP, 0b00101000; Set 4 bit interface (but we are out PORTD, TEMP; still in 8 bits!) Nop nop; Data write cycle must be > 1 ms Cbi PORTD, 3; OE low to clock in data rcall WAIT_2M; ; ***!! From now on, interface is 4 bits!! *** Ldi PARAM, 0b00101000; Send again to catch the bit N rcall LCD_CMD; Display is 2 lines, so N = 1 Ldi PARAM, 0b00001000; Display off, cursor off, and blink off rcall LCD_CMD Ldi PARAM, 0b00000001; Display clear rcall LCD_CMD rcall WAIT_2M; Wait 2 sec after clear Ldi PARAM, 0b00000110; Increment RAM, dont shift display rcall LCD_CMD Ldi PARAM, 0b00001110; Display on, cursor on / blink off rcall LCD_CMD Ret ; 2.3 ms delay with 1 MHz clock. WAIT_2M: Push TEMP Ldi TEMP, 3 Mov DELAY1, TEMP W2_1: Clr DELAY2 Dec DELAY2; Start at 0xFF W2_2: Dec DELAY2 brne W2_2 Dec DELAY1 brne W2_1 Pop TEMP Ret ; Display a welcome message. Mesage comes at the end LCD_HELLO: ldi ZH, HIGH(2*TXT) ldi ZL, LOW(2*TXT) L3A: Lpm; From prog mem into R0 Mov PARAM, R0 Tst PARAM Brne L3B Rjmp L4 L3B: Cpi PARAM, 0x0D; Look for CR in message (new line) Brne L3C Ldi PARAM, 0xC0; Cursor to position 0x40, start of 2nd line rcall LCD_CMD; Sends command Rjmp L3D L3C: rcall LCD_DATA L3D: Adiw ZL, 1; Increment pointer. This neat instruction does Rjmp L3A; w16 bit addition to pointer ZHI:ZLO. L4: Ret; Done TXT: .DB "Type in TTY cell (tx) ",0x0D; Must contain an even .DB ">",0x00; number of bytes per line ; Sends a control function to the display (comes in PARAM) LCD_CMD: Push PARAM Mov TEMP, PARAM Andi PARAM, 0xF0; Mask off lower 4 bits Sbr PARAM, 8; OE bit high (bit 3) Out PORTD, PARAM; Send upper 4 bits to display Nop; Brief delay to give reasonable OE Nop; pulse width Cbi PORTD,3; OE goes low to clock in data Mov PARAM, TEMP; Data back Swap PARAM; Lower 4 bits Andi PARAM, 0xF0 Sbr PARAM, 8; OE high (bit 3, port D) Out PORTD, PARAM; Write lower 4 bits to LCD Nop Nop Cbi PORTD,3; OE clock low Ldi PARAM, 100; 50 usec approx DEL0: Dec PARAM Brne DEL0 Pop PARAM Ret ; Sends an ASCII character to the display (comes in PARAM) LCD_DATA: Push PARAM Push TEMP Mov TEMP, PARAM Andi PARAM, 0xF0; Mask off lower 4 bits Sbr PARAM, OE; OE bit high Sbr PARAM, RS; Data/command bit high Out PORTD, PARAM; Write upper 4 bits to display Nop; Brief delay Nop Cbi PORTD, 3; OE low to clock data Swap TEMP; Lower 4 bits Andi TEMP, 0xF0; Masked off Sbr TEMP, OE; OE high Sbr TEMP, RS Out PORTD, TEMP; Lower 4 bits to LCD Nop Nop Cbi PORTD, 3; OE low to clock data Ldi TEMP, 100 Mov DELAY, TEMP; 50 usec DEL1: Dec DELAY Brne DEL1 Pop TEMP Pop PARAM Ret ; Moves the LCD display cursor to address specified in PARAM LCD_CURSOR: Ori PARAM, 0x80; MSB specifies address command rcall LCD_CMD Ret Порядок выполнения лабораторной работы
Необходимо выполнить все необходимые операции с проектом Lab_2.prj и программой Lab2.asm в среде VMLab как и в лабораторной работе №1.
Содержание отчета
Отчет по проделанной лабораторной работе должен содержать: - структурную схему алгоритма программы на лабораторную работу; - схему электрическую принципиальную разработанного устройства; - текст программы на языке AVR Ассемблере (распечатка файла *asm); - распечатка файла проекта (*.prj); - результаты моделирования (окно VMLab с запущенной программой и результатами вычислений).
Контрольные вопросы
1. Структура микроконтроллера ATmega16. 2. Состав файла m16def.inc. 3. Регистры управления UART микроконтроллера ATmega16. 4. Порты ввода/вывода микроконтроллера ATmega16. 5. Порты ввода/вывода микроконтроллера ATmega16. 6. Подключение LCD модуля к микроконтроллеру AVR ATmega16. 7. Управление процессом вывода информации из AVR микроконтроллера ATmega16 в LCD модуль (дисплей). 8. Назначение и состав файла m16def.inc.
Лабораторная работа № 3 ПРОГРАММа управлениЯ таймер–счетчиком в режиме широтно–импульсной модуляции
Цель работы: Изучение проектирования таймера/счетчика в контроллере AVR на примере программы генерации синусоидального сигнала в режиме широтно–импульсной модуляции. Краткие теоретические сведения Таймер/счетчик 0
Таймер-счетчик 0 – модуль многофункционального одноканального 8–разрядного таймера–счетчика. Функциональная схема таймера–счетчика представлена на рис. 19.
Описание регистров 8–разрядного таймера–счетчика 0
Регистр управления таймером–счетчиком 0 – TCCR0 В таблице 10 представлена структура регистра, режимы управления и начальные значения разрядов регистра TCCR0. Табл. 10. Регистр TCCR0
Разряд 7 – FOC0: Принудительная установка результата сравнения Строб FOC0 не генерирует каких–либо прерываний, а также не вызывает сброс таймера в режиме СТС, где регистр OCR0 задает верхний предел счета. Бит FOC0 всегда считывается как 0.
Разряд 6, 3 – WGM01:0: Режим работы таймера–счетчика 0 Данные биты представлены в таблице 11, определяют: алгоритм счета счетчика, источник, который задает верхний предел счета и тип генерируемых прямоугольных импульсов.
Таблица 11. Описание бит, задающих режим работы таймера–счетчика 0
Разряд 5:4 – COM01, COM00: Режим формирования выходного сигнала
Данные биты представлены в таблице 12, определяют алгоритм изменения сигнала на выводе OC0.
Таблица 12. Режимы формирования выходного сигнала в режимах работы таймера 0 без ШИМ
В таблице 13 приведено назначение бит COM01, COM00 для режима работы таймера–счетчика 0 с быстрой ШИМ (WGM01:0).
Таблица 13. Режимы формирования выходного сигнала в режиме таймера 0 с быстрым ШИМ(1)
В таблице 14 приведено действие бит COM01, COM00 для режима ШИМ с фазовой коррекцией, заданного с помощью бит WGM01, WGM00.
Таблица 14. Режимы выходного сигнала в режиме ШИМ с фазовой коррекцией(1)
Разряд 2:0 – CS02:0: Настройка частоты синхронизации таймера
С помощью трех настроечных бит имеется возможность выбрать различные тактовые частоты, кратные исходной частоте синхронизации (см. табл. 15).
Таблица 15. Выбор частоты синхронизации таймера 0
Регистр таймера–счетчика, разряды которого представлены в таблице 16, характеризуется двунаправленностью доступа к 8–разрядному счетчику таймера 0. Запись в регистр TCNT0 блокирует отработку возникающего совпадения на следующем после записи такте синхронизации таймера. Изменение содержимого счетчика (TCNT0) во время счета связано с риском потери результата сравнения между TCNT0 и регистром OCR0. Таблица 16. Регистр таймера–счетчика – TCNT0
Регистр порога сравнения, разряды которого представлены в таблице 17, содержит 8–разр. значение, которое непрерывно сравнивается цифровым компаратором со значением 8–разр. счетчика (TCNT0). Факт совпадения значений может использоваться для генерации прерывания по выполнению условия сравнения или для генерации прямоугольных импульсов на выводе OC0. Таблица 17. Регистр порога сравнения – OCR0
Таймер/счетчик 1 16–ти разрядный таймер–счетчик 1 предназначен для точного задания временных интервалов, генерации прямоугольных импульсов и измерения временных характеристик импульсных сигналов. На рисунках и в тексте описания индекс “n” заменяет номер таймера–счетчика, а “x” заменяет наименование канала сравнения (A, или B). Однако при программировании необходимо использовать фактические номера и наименования. В таблице 18 представлены разряды регистра А управления таймером–счетчиком 1 – TCCR1A. В таблице 19 приведены режимы управления сигналов OCnA/OCnB. В таблице 20 представлены разряды регистра В управления таймером–счетчиком 1 – TCCR1B.
Функциональная схема 16–разр. таймера–счетчика показана на рисунке 20. Рис. 20. Функциональная схема 16–разр. таймера–счетчика
Таблица 18. Регистр А управления таймером–счетчиком 1 – TCCR1A
Биты 7:6 – COM1A1:0 Режим формирования выходного сигнала канала A Биты 5:4 – COM1B1:0 Режим формирования выходного сигнала канала В
Таблица 19. Управление режимами сигналов OCnA/OCnB
Биты 3:2 – FOC1A:FOC1B: Режим формирования силы выходного сигнала.
Разряд 1:0 – WGMn1:0: Режим работы таймера–счетчика
Таблица 20. Регистр В управления таймером–счетчиком 1 – TCCR1B
Разряд 7 – ICNC1: Подавитель шума на входе захвата (задержка сигнала с входа захвата на 4 такта)
Разряд 6 – ICES1: Выбор детектируемого фронта на входе захвата
Разряд 5 – Зарезервированный бит
Разряд 4:3 – WGM1 3:2: Режим работы таймера–счетчика
Разряд 2:0 – CS12:0: Выбор тактового источника
Данные три бита, представленные в таблице 21, позволяют выбрать тактовый источник для таймера–счетчика.
Таблица 21. Описание бит выбора тактового источника
Если для тактирования таймера выбран внешний вывод T1, то данная функция за ним сохраняется, даже при его настройке на вывод. Данная функция позволяет программно управлять счетом. В таблице 22 представлены разряды таймер–счетчиков 1 – TCNT1H и TCNT1L.
Таблица 22. Таймер–счетчик 1 – TCNT1H и TCNT1L
Две ячейки в области ввода–вывода (TCNT1H и TCNT1L, вместе TCNT1) дают полный доступ, как на чтение, так и на запись к 16–разрядному счетчику. В целях гарантирования одновременности чтения и записи старшего и младшего байтов этих регистров, доступ организован с использованием 8–разрядного временного регистра старшего байта (TEMP). Временный регистр является общим для всех 16–разрядных регистров таймера. Изменение содержимого счетчика TCNT1 во время его работы (счета) связано с риском возникновения совпадения между TCNT1 и одним из регистров OCR1x. Запись в регистр TCNT1 блокирует отработку совпадения, которое возникнет на следующем такте, для всех блоков сравнения. В таблицах 23 и 24 представлены разряды регистров сравнения 1A – OCR1AH, OCR1AL и 1B – OCR1BH и OCR1BL Таблица 23. Регистр сравнения 1 A – OCR1AH и OCR1AL
Таблица 24. Регистр сравнения 1B – OCR1BH и OCR1BL
В регистрах сравнения хранится 16–разр. значение, которое непрерывно сравнивается со значением счетчика (TCNTn). Возникающее совпадение может использоваться для генерации прерывания по результату сравнения и генерации прямоугольных импульсов на выводе OCnx. Регистры сравнения являются 16–разрядными, поэтому, одновременность записи младшего и старшего байтов достигнута за счет использования 8–разр. временного регистра старшего байта (TEMP). Временный регистр является общим для всех 16–разрядных регистров таймера. Регистры захвата, представленные в таблице 25, обновляются содержимым соответствующего счетчика (TCNTn) при каждом определении условия захвата на входе ICPn (или альтернативно на выходе аналогового компаратора для таймера–счетчика 1).
Таблица 25. Регистр захвата 1 – ICR1H и ICR1L
Регистры захвата альтернативно могут использоваться для задания верхнего предела счета. Регистры захвата также являются 16–разрядными, поэтому, одновременность записи младшего и старшего байтов достигнута за счет использования 8–разр. временного регистра старшего байта (TEMP). Временный регистр является общим для всех 16–разрядных регистров таймера. В таблице 26 представлены разряды регистра маски прерываний таймера–счетчика – TIMSK
Таблица 26. Регистр маски прерываний таймера–счетчика – TIMSK
Прим.: Данный регистр биты управления прерываниями для нескольких таймер–счетчиков, но в данном разделе детализированы только биты таймера 1. Описание остальных бит необходимо искать при описании соответствующих таймеров.
Разряд 5 – TICIE1: Разрешение прерывания по захвату состояния таймера–счетчика 1
Если в данный бит записана лог. 1, а также установлен флаг I в регистре статуса (активно общее разрешение прерываний), то разрешается прерывание по захвату состояния таймера–счетчика 1. Если устанавливается флаг в регистре TIFR, программа переходит на соответствующий вектор прерывания.
Разряд 4 – OCIE1A: Разрешение прерывания по результату сравнения канала А таймера–счетчика 1
Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается работа прерывания по результату сравнения канала A. Если устанавливается флаг OCF1A в регистре TIFR, то программа переходит на соответствующий вектор прерываний.
Разряд 3 – OCIE1В: Разрешение прерывания по результату сравнения канала В таймера–счетчика 1
Действие аналогично предыдущему, но в отношении канала сравнения В. Разряд 2 – TOIE1: Разрешение прерывания при переполнении таймера–счетчика 1 Если в данный бит записана лог. 1 и установлен флаг I в регистре статуса, то разрешается прерывание по переполнению таймера–счетчика 1. После этого, установка флага TOV1 в регистре TIFR приведет к переходу на соответствующий вектор прерывания. В таблице 27 представлен регистр флагов прерываний таймеров–счетчиков TIFR.
Таблица 27. Регистр флагов прерываний таймеров–счетчиков – TIFR
Прим.: Биты данного регистра относятся к нескольким таймерам, но в данном параграфе рассматриваются биты только одного таймера. Описание остальных бит необходимо смотреть в соответствующих разделах.
Разряд 5 – ICF1: Флаг захвата состояния таймера–счетчика 1
Флаг устанавливается, если на входе ICP1 определяется условие захвата. Если регистр захвата ICR1 выбран с помощью бит WGMn3:0 в качестве источника верхнего предела счета, флаг ICF1 устанавливается по достижении верхнего предела счета. ICF1 автоматически сбрасывается при переходе на вектор прерывания по захвату состояния таймера–счетчика. Альтернативно флаг ICF1 можно сбрасывать путем записи в него лог. 1.
Разряд 4 – OCF1A: Флаг результата сравнения канала А таймера–счетчика 1
Данный флаг устанавливается следующим тактом после совпадения значения TCNT1 с регистром А порога сравнения (OCR1A). Обратите внимание, что строб принудительной установки результата сравнения (FOC1A) не устанавливает флаг OCF1A. Флаг OCF1A автоматически сбрасывается при переходе на соответствующий вектор прерывания. Альтернативно, флаг OCF1A сбрасывается путем записи в него лог. 1.
Разряд 3 – OCF1B: Флаг результата сравнения канала B таймера–счетчика 1
Данный флаг действует аналогично предыдущему, но в отношении канала сравнения В.
Разряд 2 – TOV1: Флаг переполнения таймера–счетчика 1
Установка данного флага зависит от значений бит WGMn3:0. В нормальном режиме и режиме СТС флаг TOV1 устанавливается при переполнении таймера–счетчика. См. табл. 61 для изучения поведения флага TOV1 при задании других значений WGMn3:0. Флаг TOV1 автоматически сбрасывается при переходе на вектор прерывания по переполнению таймера–счетчика 1. Альтернативно флаг TOV1 сбрасывается путем записи в него лог. 1.
Задание к лабораторной работе
Изучить файл проекта Lab_3.prj и файл программы Lab3.asm на языке Ассемблер. Отмоделировать программу в среле VMLab. Результаты моделирования представлены на рис. 21.
Рис.21. Результаты моделирования программы LAB3.asm Файл Lab_3.prj ; Sinewave generator example, using Timer 1 PWM .MICRO "ATmega16"; The micro being used .PROGRAM "Lab3.asm"; The.ASM program .TRACE; Set trace ON .POWER VDD=5 VSS=0; Power nodes .CLOCK 1.8432meg; Micro clock
R2 PD5 fil_out1 100K; PB3 port = OC1 (output compare) C1 fil_out1 vss 10n; R3 fil_out1 fil_out 100K; PB3 port = OC1 (output compare) C2 fil_out vss 10n; .plot v(PD4) v(PD5) v(fil_out) v(fil_out1); Dispay in SCOPE Файл Lab3.asm ;************************************************************* ;* PWM based sinewave generator, table based ;*************************************************************
.include "m16def.inc"
; Registers definitions ; .def tmp = r16 .def angle = r17; Index to hold the sine phase angle (0 to 127)
;************************************************************* ; Reset and interrupt vectors handlers ; .cseg .org $00 reset_hnd: rjmp start; .org OVF1addr tim1_hnd: rjmp tim1_ovf
;*************************************************************** ; Timer 1 interrupt handler ; tim1_ovf: inc angle andi angle, $7F; truncates to 7 bits (0 – 127) ldi ZL,low(sine_tbl*2); Get the table address and ldi ZH,high(sine_tbl*2); add the angle phase. Result add ZL,angle; will be in R0 after calling 'lpm' clr tmp; lpm uses 16 bits index (Z) adc ZH, tmp; Z index is the pointer to the lpm; sine_tbl value for the angle phase
clr tmp out OCR1AH, tmp; Reload Timer 1 compare value. out OCR1AL,R0; Necessary to reload both registers reti
;************************************************************ ; Reset handler. Initalizes port and Timer 1, and stay in a endless loop ; start: sbi DDRD, PD4; Set pin PD5 as output (is OC1 pin) sbi DDRD, PD5 ldi tmp, high(RAMEND); инициализация памяти стека out SPH, tmp ldi tmp, low(RAMEND) out SPL, tmp; завершение инициализации памяти стека
ldi tmp,(1<<TOIE1) out TIMSK,tmp; Enable Timer1_ovf interrupt
ldi tmp,(1<<PWM10)+(1<<COM1A1); Set Timer 1 in PWM mode out TCCR1A,tmp; 8 bit PWM not reverse (Fck/510) ldi tmp,(1<<CS10) out TCCR1B,tmp; prescaler = 1
clr angle; Start with phase = 0
sei; Enable interrupts
main: nop nop rjmp main; Infinite loop: Timer1 interrupt will handle all
;*************************** SINE TABLE *************************************** ; Samples table: one period sampled on 128 samples and ; quantized on 7 bit ; sine_tbl: .db 0,0 .db 1,1 .db 2,3 .db 4,6 .db 7,9 .db 10,12 .db 14,16 .db 18,21 .db 23,25 .db 28,31 .db 33,36 .db 39,42 .db 45,48 .db 51,54 .db 57,60 .db 64,67 .db 70,73 .db 76,79 .db 82,85 .db 88,91 .db 94,96 .db 99,102 .db 104,106 .db 109,111 .db 113,115 .db 117,118 .db 120,121 .db 123,124 .db 125,126 .db 126,127 .db 127,127 .db 127,127 .db 127,127 .db 126,126 .db 125,124 .db 123,121 .db 120,118 .db 117,115 .db 113,111 .db 109,106 .db 104,102 .db 99,96 .db 94,91 .db 88,85 .db 82,79 .db 76,73 .db 70,67 .db 64,60 .db 57,54 .db 51,48 .db 45,42 .db 39,36 .db 33,31 .db 28,25 .db 23,21 .db 18,16 .db 14,12 .db 10,9 .db 7,6 .db 4,3 .db 2,1 .db 1,0 .db 0,0 .db 0,0
Порядок выполнения работы
Нужно выполнить все необходимые операции с проектом Lab_3.prj и программой Lab3.asm в среде VMLab как и в лабораторных работах №1,2.
Содержание отчета Отчет по проделанной лабораторной работе должен содержать: - структурную схему алгоритма программы на лабораторную работу; - схему электрическую принципиальную разработанного устройства; - текст программы на языке AVR Ассемблере (распечатка файла *asm); - распечатка файла проекта (*.prj); - результаты моделирования (окно VMLab с запущенной программой и результатами вычислений).
Контрольные вопросы
1. Регистр состояния микроконтроллера ATmega16. 2. Стек и его инициализация. 3. Память микроконтроллера ATmega16. 4. Процессорное ядро микроконтроллеров AVR. 5. Непосредственная адресация данных в микроконтроллерах AVR. 6. Прямая адресация данных в микроконтроллерах AVR. 7. Косвенная адресация данных в микроконтроллерах AVR. 8. Относительная адресация данных в микроконтроллерах AVR. Лабораторная работа № 4
ПРОГРАММа ввода с клавиатуры и вывода в LCD модуль
Цель работы: Изучение и освоение управления периферийным устройством ввода с клавиатуры, подключенным к AVR микроконтроллеру фирмы Atmel, а также дальнейшее изучение системы команд и системы прерываний.
Задание к лабораторной работе
Изучить программу Lab4.asm и файл проекта Lab_4.prj. Отладить программу в среде VMLab, подключив необходимую периферию к микроконтроллеру AVR – интерфейс клавиатуры и LCD модуль (дисплей). Кнопки «0» и «1» клавиатуры в «Control Panel» VMLab подключены совместно с резисторами R1 и R2 к микроконтроллеру соответственно к входам PD2 и PD3 таким образом, что при нажатии на них возникают dytiybt прерывания «INT0» и «INT1» соответственно. В файле «Lab5.asm» предусмотрены соответствующие инициализации векторов прерываний и имеются подпрограммы обработки этих прерываний. Кнопка «0» запускает таймер счета, при этом происходит отображение результатов счета на модуле LCD. Кнопка «1» останавливает таймер счета. Результаты моделирования представлены на рис.22.
Рис.22. Результаты моделирования программы Lab5.asm. Файл Lab_4.prj .MICRO "ATmega16"; ATmega16 with 16 of external RAM .PROGRAM "Lab4.asm" .TARGET "Lab4.hex"
.TRACE; Activate micro trace
.POWER VDD=5 VSS=0; Power nodes .CLOCK 1meg; Micro clock .STORE 250m; Trace (micro+signals) storage time ; Xterm TTY(4800 8) PD0 PD1; place terminal ; Type in the TX window while the ; simulation is running, after ; the welcome message ; RS R/W E 4 bits interface arbitrary nodes Xdisp LCD(24 2 250K) PA2 PB0 PA3 PA7 PA6 PA5 PA4 nc3 nc2 nc1 nc0
K0 PD2 VSS; Key0 (activated by button 0) R1 VDD PD2 10K K1 PD3 VSS; Key1 (activated by button 1) R2 VDD PD3 10K
.plot v(pc0) v(pc1)
Файл Lab4.asm .include "m16def.inc" .EQU OE = 0b001000; bit 3 .EQU RS = 0b000100; bit 2 .DEF TEMP = R16; temporary working register .DEF PARAM = R17; Parameter transfer register .DEF CNTR1 = R18; Counter register .DEF CNTR2 = R19 .DEF DEL2 = R23 .DEF DELAY = R10; .DEF DELAY1 = R11; To generate long delays .DEF DELAY2 = R12; .DEF STATUS = R20 ; ************************************* CSEG ORG 0x00 START: Rjmp RESET; Reset vector ORG INT0addr rjmp START_COUNTER ORG INT1addr rjmp STOP_COUNTER START_COUNTER: Ldi STATUS, 0x01 rcall LCD_TXT_STARTED Sei rjmp COUNTER_IN COUNTER: Ldi CNTR1, 0 COUNTER_OUT: Ldi CNTR2, 0 COUNTER_IN: rcall LCD_PRINT_CNTRS Inc CNTR2 Cpi CNTR2, 100 brne COUNTER_IN Inc CNTR1 Cpi CNTR1, 100 brne COUNTER_OUT Rjmp COUNTER STOP_COUNTER: Tst STATUS breq CLEAR_COUNTER Ldi STATUS, 0x00 rcall LCD_TXT_PAUSED Sei Rjmp FOREVER CLEAR_COUNTER: rcall LCD_TXT_STOPPED Ldi CNTR1, 0 Ldi CNTR2, 0 rcall LCD_PRINT_CNTRS Sei Rjmp FOREVER ; **************************************** ; Device initialization ;.ORG 0x10 RESET: Ldi TEMP, HIGH(RAMEND); инициализация памяти стека Out SPH, TEMP Ldi TEMP, LOW(RAMEND)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 190; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.118.237 (0.012 с.) |