Скачать 72.38 Kb.
|
Московский государственный институт электроники и математики Кафедра ИКТ Курсовая работа по дисциплине “Микропроцессорные системы” Выполнила: студентка группы С-85 Белякова Д.Ю. Проверил: Гудков Ю. И. Москва 2011 АннотацияВ курсовой работе разрабатывается программа, имитирующая телефонный набор. Работа выполняется на системе “прототип” на основе микроконтроллера 51 семейства. Оглавление Аннотация 2 1. Техническое задание 4 2. Анализ технического задания 4 3. Опрос мини-клавиатуры клавиатуры 4 4.1. Алгоритм основной программы 5 4.2. Алгоритм обработчика прерываний по таймеру Т0 6 4.3. Алгоритм основной фунции 7 4.4. Алгоритм вывода результата 8 5. Листинг 9 6. Выводы 14 7. Список литературы 15 Ввод:
Вывод:
В соответствии с техническим заданием устройство должно выполнять:
Прием символов от мини-клавиатуры реализуется с помощью прерываний от таймера T0 и определения нажатой клавиши в обработчике данных прерываний. Для того, чтобы определить, какая кнопка нажата, происходит опрос мини-клавиатуры. Для этого используется порт P1. Вывод символов на терминал реализован с помощью порта SBUF. Помимо этого, символы должны выводиться таким образом, чтобы число, которое вводится было равно номеру. Это означает, что если вводится 5, то цифра 5 должна высвечиваться на экране 5 раз. А время вывода между каждой цифрой 5 на экране должно быть равно равно 5 сек. ^ Для ввода цифр используется стандартная мини-клавиатура, имеющая шестнадцать кнопок. Для того, чтобы определить, какая кнопка нажата в данный момент, в регистре P1 устанавливаются различные значения для линий P1.4 – P1.7. На проверяемой линии выставляется «0», на остальных – «1». После чего производится проверка на «0» на линиях P1.0 – P1.3. При обнаружении «0» на пересечении линий вызывается обработчик для соответствующей цифры.
Рис 1. Соответствие битов порта P1 и контактов мини-клавиатуры. 4. Алгоритмы ^ ![]() Рис 2. Алгоритм основной программы. 4.2. Алгоритм обработчика прерываний по таймеру Т0![]() Рис 3. Алгоритм обработчика прерываний по таймеру. ^ Рис 4. Алгоритм основной функции. 4.4. Алгоритм вывода результата![]() Рис 5. Алгоритм вывода результата. 5. Листинг################################################################################ # # # Micro Series 8051 Assembler V1.80/MD2 12/Jan/11 16:23:49 # # # # Source = bla-bla.s03 # # List = bla-bla.lst # # Object = bla-bla.r03 # # Options = # # # # (c) Copyright IAR Systems 1985 # ################################################################################ 1 8000 org 8000h 2 8000 0280F6 jmp main 3 4 800B org 800Bh; прерывание по таймеру 5 800B 0280D9 jmp HNDL_P1 6 7 800E 7590FD HNDL: mov P1, #0FDh ;1 столбец 8 8011 309537 jnb P1.5, knopka1 9 8014 30945D jnb P1.4, knopka4 10 8017 309720 jnb P1.7, knopka_7 11 801A 309625 jnb P1.6, knopka0 12 801D 7590FE mov P1, #0FEh ;2 столбец 13 8020 309531 jnb P1.5, knopka2 14 8023 30945D jnb P1.4, knopka5 15 8026 309715 jnb P1.7, knopka_8 16 8029 7590F7 mov P1, #0F7h ;3 столбец 17 802C 309535 jnb P1.5, knopka3 18 802F 309460 jnb P1.4, knopka6 19 8032 309701 jnb P1.7, knopka_9 20 8035 22 ret 21 22 8036 0280C2 knopka_9: ljmp knopka9 23 8039 22 ret 24 25 803A 0280A2 knopka_7: ljmp knopka7 26 803D 22 ret 27 28 803E 0280B2 knopka_8: ljmp knopka8 29 8041 22 ret 30 31 8042 7430 knopka0: mov A, #'0' 32 8044 1280DC call ascii 33 8047 0280D2 jmp _eol 34 804A 22 ret 35 804B 7431 knopka1: mov A, #'1' 36 804D 1280DC call ascii 37 8050 0280D2 jmp _eol 38 8053 22 ret 39 8054 7A02 knopka2: mov R2, #2h 40 8056 7432 k2: mov A, #'2' 41 8058 1280DC call ascii 42 805B 1A dec R2 43 805C EA mov A, R2; записываем 1 в аккумулятор 44 805D B400F6 cjne A, #0, k2 45 8060 0280D2 jmp _eol 46 8063 22 ret 47 48 8064 7A03 knopka3: mov R2, #3d 49 8066 7433 k3: mov A, #'3' 50 8068 1280DC call ascii 51 806B 1A dec R2 52 806C EA mov A, R2 53 806D B400F6 cjne A, #0, k3 54 8070 0280D2 jmp _eol 55 8073 22 ret 56 57 8074 7A04 knopka4: mov R2, #4d 58 8076 7434 k4: mov A, #'4' 59 8078 1280DC call ascii 60 807B 1A dec R2 61 807C EA mov A, R2 62 807D 70F7 jnz k4 63 807F 0280D2 jmp _eol 64 8082 22 ret 65 66 8083 7A05 knopka5: mov R2, #5d 67 8085 7435 k5: mov A, #'5' 68 8087 1280DC call ascii 69 808A 1A dec R2 70 808B EA mov A, R2 71 808C 70F7 jnz k5 72 808E 0280D2 jmp _eol 73 8091 22 ret 74 75 8092 7A06 knopka6: mov R2, #6d 76 8094 7436 k6: mov A, #'6' 77 8096 1280DC call ascii 78 8099 1A dec R2 79 809A EA mov A, R2 80 809B B400F6 cjne A, #0, k6 81 809E 0280D2 jmp _eol 82 80A1 22 ret 83 84 80A2 7A07 knopka7: mov R2, #7d 85 80A4 7437 k7: mov A, #'7' 86 80A6 1280DC call ascii 87 80A9 1A dec R2 88 80AA EA mov A, R2 89 80AB B400F6 cjne A, #0, k7 90 80AE 0280D2 jmp _eol 91 80B1 22 ret 92 93 80B2 7A08 knopka8: mov R2, #8d 94 80B4 7438 k8: mov A, #'8' 95 80B6 1280DC call ascii 96 80B9 1A dec R2 97 80BA EA mov A, R2 98 80BB B400F6 cjne A, #0, k8 99 80BE 0280D2 jmp _eol 100 80C1 22 ret 101 102 80C2 7A09 knopka9: mov R2, #9d 103 80C4 7439 k9: mov A, #'9' 104 80C6 1280DC call ascii 105 80C9 1A dec R2 106 80CA EA mov A, R2 107 80CB B400F6 cjne A, #0, k9 108 80CE 0280D2 jmp _eol 109 80D1 22 ret 110 111 80D2 _eol: 112 80D2 75990D mov SBUF, #0dh 113 80D5 75990A mov SBUF, #0Ah 114 80D8 22 ret 115 116 80D9 HNDL_P1: 117 80D9 110E call HNDL 118 80DB 32 reti 119 120 121 80DC ascii: 122 80DC F599 mov SBUF, A 123 jnb TI, $ 124 80DE C299 clr TI 125 80E0 0280E4 jmp delay 126 80E3 22 ret 127 80E4 delay: 128 80E4 7904 mov R1, #04h 129 80E6 78BF a2: mov R0, #0bfh 130 80E8 74FF a1: mov A, #0FFh 131 80EA 14 a0: dec A 132 80EB 70FD jnz a0 133 80ED 18 dec R0 134 80EE E8 mov A, R0 135 80EF 70F7 jnz a1 136 80F1 19 dec R1 137 80F2 E9 mov A, R1 138 80F3 70F1 jnz a2 139 80F5 22 ret 140 141 80F6 main: 142 80F6 C299 clr TI 143 80F8 C2AF clr EA 144 80FA 438901 orl TMOD, #00000001b;перевели Т0 в 16-разрядный режим работы 145 80FD D28C setb TR0;включаем таймер Т0 146 80FF D2AF setb EA;глобальное разрешение прерываний 147 8101 D2A9 setb ET0;включаем прерывание по Т0 148 8103 7590F0 mov P1, #0f0h 149 8106 80FE jmp $ 150 151 8108 end Errors: None ########### Bytes: 256 # bla-bla # CRC: 6583 ########### 6. ВыводыВ курсовой работе запрограммирован микроконтроллер 51 серии на ввод символов с матричной клавиатуры с использованием прерываний таймера T0. 7. Список литературы
|
![]() | В данной работе реализован десятиразрядный таймер, используюший прерывания по com-порту и таймеру. Работа выполнена на прототипе | ![]() | Необходимо разработать программу для микроконтроллера Philips C552 обладающую следующим функционалом |
![]() | В данной работе реализуется десятичный калькулятор, для выполнения 4х базовых арифметические операции, на микропроцессоре Intel 8051,... | ![]() | В в синусоидальное напряжением 220 в частотой 50 Гц с использованием микроконтроллера Atmega 168 в качестве формирователя синусоидального... |
![]() | Данная курсовая работа посвящена разработке компьютерной игры на движке «rpg maker xp», включая, в частности, разработку анимаций... | ![]() | Данная курсовая работа посвящена организации потокового вещания видео в браузер средствами html5 |
![]() | Данная курсовая работа посвящена организации потокового вещания видео в браузер средствами html5 | ![]() | В данной работе реализована программа счетчика нажатий на мини-клавиатуру для микроконтроллера 51 семейства, использующая прерывания... |
![]() | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | ![]() | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования |