Московский государственный институт электроники и математики
(технический университет)
Кафедра
«Информационно-коммуникационные технологии»
Курсовая работа
на тему:
«Калькулятор на основе микропроцессора»
по дисциплине:
«Микропроцессорные системы»
-
Выполнили:
Группа:
Проверил:
|
Куликов В.А.
Сарумов К.М.
С – 84
Гудков Ю.И.
|
Москва 2008 г.
Аннотация
В курсовой работе разрабатывается программа принимающая номер ноты с клавиатуры персонального компьютера и выводящая сигнал с соответствующей частотой на порт P1.0. В работе использовались прерывания от последовательного порта. Работа выполняется на системе “прототип” на основе микроконтроллера 51 семейства.
1. Техническое задание
Написать программу для микропроцессора семейства 51, имеющую следующие функции:
-
Ввод с клавиатуры числа от 1 до 7 (номера ноты)
-
Вывод результата (сигнала)на порт P1.0 и номер ноты на монитор.
2. Анализ технического задания
В соответствии с техническим заданием устройство должно выполнять:
- прием символа от компьютерной клавиатуры
- вывод принятого символа
- выполнение генерации сигнала, соответствующей символу (ноте), принятому от клавиатуры
Ввод символов от компьютерной клавиатуры реализуется с помощью прерываний от com порта (бит RI)
Генерация сиганала (ноты) осуществляется путем подачи_напряжения/обнуления порта P1.0
3. Алгоритм основной программы
Установка обработчика прерываний от com порта
Основная функция main:
Подача сигнала на порт P1.0 в зависимости от значения регистра R2
Установка разрешения прерываний:
-
разрешение всех прерываний
-
com порта
начало
4.Алгоритм обработчика com порта
-
вывод номера ноты, полученной из com порта;
-
установка значения регистра R2, определяющего ноту для вывода на P1.0
Прерывание от
компьютерной клавиатуры
да
нет
начало
конец
5. Исходный код
org 8000h ;Начальная программа
ljmp Main
org 8023h ;Обработка прерываний по com порту
ljmp int_com
Main:
clr TI
clr RI
;разрешение прерываний
setb EA ;глобальное разрешение прерываний
setb ES ;разрешение прерываний по com порту
setb PS ;приоритет прерываний по com порту
mov R2,#49d ;указатель ноты
NOOOP:
mark_261: ;--------------------------261Gz, До
clr P1.0
cjne R2,#49d,mark_293
mov R1, #250d
Zero_261:
nop
nop
nop
nop
nop
djnz R1, Zero_261
setb P1.0
mov R1, #250d
Bit_261:
nop
nop
nop
nop
nop
djnz R1, Bit_261
jmp mark_261 ;--------------------------261Gz, конец До
mark_293: ;--------------------------293Gz, Ре
clr P1.0
cjne R2,#50d,mark_494
mov R1, #223d
Zero_293:
nop
nop
nop
nop
nop
djnz R1, Zero_293
setb P1.0
mov R1, #223d
Bit_293:
nop
nop
nop
nop
nop
djnz R1, Bit_293
clr P1.0
jmp mark_293 ;--------------------------293Gz, конец Ре
mark_329: ;--------------------------329Gz, Ми
clr P1.0
cjne R2,#51d,mark_349
mov R1, #139d
Zero_329:
nop
nop
nop
nop
nop
nop
nop
nop
djnz R1, Zero_329
setb P1.0
mov R1, #139d
Bit_329:
nop
nop
nop
nop
nop
nop
nop
nop
djnz R1, Bit_329
jmp mark_329 ;--------------------------329Gz, конец Ми
mark_349: ;--------------------------349Gz, Фа
clr P1.0
cjne R2,#52d,mark_392
mov R1, #131d
Zero_349:
nop
nop
nop
nop
nop
nop
nop
nop
djnz R1, Zero_349
setb P1.0
mov R1, #131d
Bit_349:
nop
nop
nop
nop
nop
nop
nop
nop
djnz R1, Bit_349
jmp mark_349 ;--------------------------349Gz, конец Фа
mark_392: ;--------------------------392Gz, Соль
clr P1.0
cjne R2,#53d,mark_440
mov R1, #146d
Zero_392:
nop
nop
nop
nop
nop
nop
djnz R1, Zero_392
setb P1.0
mov R1, #146d
Bit_392:
nop
nop
nop
nop
nop
nop
djnz R1, Bit_392
jmp mark_392 ;--------------------------392Gz, конец Соль
mark_440: ; --------------------------440Gz; Ля
clr P1.0
cjne R2,#54d,mark_494
mov R1, #173d
Zero_440:
nop
nop
nop
nop
djnz R1, Zero_440
setb P1.0
nop
nop
mov R1, #173d
Bit_440:
nop
nop
nop
nop
djnz R1, Bit_440
jmp mark_440 ; --------------------------440Gz; конец Ля
mark_494: ;--------------------------494Gz, Си
clr P1.0
cjne R2,#55d,mark_bad_nota
mov R1, #185d
Zero_494:
nop
nop
nop
djnz R1, Zero_494
setb P1.0
mov R1, #231d
Bit_494:
nop
nop
djnz R1, Bit_494
jmp mark_494 ;--------------------------494Gz, конец Си
mark_bad_nota:
mov R2,#49d
jmp NOOOP
ret
int_com: ;Обработка прерываний по com порту
jnb RI, KON ;если кнопка не нажата, выйти
mov A, SBUF ;вывод введенного символа
mov SBUF, A ;
call EXCP ; подпрограмма вывода байта до конца
mov R2, A ;запись номера ноты в регистр R2
clr RI ;обнуление RI, для возможности нового прерывания по com порту
KON: ;конец обработки прерывания ком порта
reti
EXCP: ;ожидает пока весь байт будет выведен на экран
Waiting_byte:
jnb TI, Waiting_byte ; ждем пока не окончится передача байта (флаг TI = 1)
clr TI
ret
6. Исходный код
В курсовой работе запрограммирован микроконтроллер 51 серии на на вывод сигнала на порт P1.0 соответствующий частоте ноты, введеной с клавиатуры, с использованием с использованием прерываний от com порта.
7. Список литературы
-
Конспект лекций и семинаров по дисциплине “Микропроцессорные системы”.
-
Описание команд 8051.