Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Розробка принципової схеми мікропроцесорного пристрою




 

1. ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ДЛЯ ПЕРШОГО МК51:

 

CS EQU Р3.7

RD EQU Р3.6

CONVST EQU Р3.5; глобальне привласнення

MAXS EQU 18h

MAXM EQU 19h

----------------------------------------------------------------------------------------------------

ORG 0H

JMP 30H

ORG 03H; вектор переривання INT0

JMP KLAVA; перехід на підпрограму KLAVA

ORG 0BH; вектор переривання таймера 0

JMP TIME_0; перехід на підпрограму TIME_0

ORG 01BH; вектор переривання таймера 1

JMP TIME_1; перехід на підпрограму TIME_1

ORG 30h

----------------------------------------------------------------------------------------------------

MOV TMOD, #00010001B; задання режимів для таймерів-лічильників

MOV SCON, #10010000B; задання режиму UART

MOV IE, #00011011B; дозвіл переривань

MOV IP, #00000001B; виставлення пріоритетів

MOV TH0, #0F8H; установка 0-го лічильника

MOV TL0, #035H

MOV TH1, #0FCH; установка 1-го лічильника

MOV TL1, #01EH

SETB EA; дозвіл всіх переривань

SETB P3.4; установка 1 на 4-у піні порту Р3

MOV TCON, #00010000B; дозвіл 0-го лічильника

JMP $; зациклення

----------------------------------------------------------------------------------------------------

TIME_0:CLR P3.4; очистка 4-го піну порту Р3

MOV TCON, #01000000B; запуск таймера 1

RETI; повернення з підпрограми обробки перер.

----------------------------------------------------------------------------------------------------

TIME_1: SETB P3.4; установка 1 на 4-м піні порту Р3

MOV TH0, #0F8H; установка 0-го счётчика

MOV TL0, #035H

MOV TH1, #0FCH; установка 1-го лічильника

MOV TL1, #01EH

MOV TCON, #00010000B; запуск таймера 0

RETI; повернення з підпрограми обробки перер.

-----------------------------------------------------------------------------------------------------

KLAVA: CLR EA; зняття блокування переривань

MOV P2, #11111110B; завантаження в порт константи

JNB P2.4, M0; якщо 0 то перехід на мітку М0

JNB P2.5, M1; якщо 0 то перехід на мітку М1

JNB P2.6, M2

JNB P2.7, M3

CLR P2.1; очистка 1-го піну порту Р2

SETB P 2.0; установка 1 на 0-му піні порту Р2

JNB P2.4, M4; якщо 0 то перехід на мітку М4

JNB P2.5, M5

JNB P2.6, M6

JNB P2.7, M7

CLR P 2.2; очистка 2-го піну порту Р2

SETB P2.1; установка 1 на 1-м піні порту Р2

JNB P2.4, M8; якщо 0 то перехід на мітку М8

JNB P2.5, M9

JNB P2.6, MA

JNB P2.7, MB

CLR P 2.3; очистка 3-го піну порту Р2

SETB P 2.2; установка 1 на 2-м піні порту Р2

JNB P2.4, MC; якщо 0 то перехід на мітку МС

JNB P2.5, MD

MOV 20h, #0EH

JMP DRB

M0: MOV 20h, #0H; записування коду нажатої клавіші

JMP DRB; перехід на DRB

M1: MOV 20h, #1H

JMP DRB

M2: MOV 20h, #2H; записування коду нажатої клавіші

JMP DRB; перехід на DRB

M3: MOV 20h, #3H

JMP DRB

M4: MOV 20h, #4H; записування коду нажатої клавіші

JMP DRB; перехід на DRB

M5: MOV 20h, #5H

JMP DRB

M6: MOV 20h, #6H; записування коду нажатої клавіші

JMP DRB; перехід на DRB

M7: MOV 20h, #7H

JMP DRB

M8: MOV 20h, #8H; записування коду нажатої клавіші

JMP DRB; перехід на DRB

M9: MOV 20h, #9H

JMP DRB

MA: MOV 20h, #0AH; записування коду нажатої клавіші

JMP DRB; перехід на DRB

MB: MOV 20h, #0BH

JMP DRB

MC: MOV 20h, #0CH; записування коду нажатої клавіші

JMP DRB

MD: MOV 20h, #0DH

JMP DRB

DRB:; п-ма видалення брязкоту контактів

MOV R2, #5

MOV R1, #250

U_2: DJNZ R1, U_1

U_1: DJNZ R2, U_2

WORK:

MOV A, P2

CJNE A, #0F0H, WORK; порівняння. акум. з #0F0H та перехід

CALL ACP

SETB EA

RETI

----------------------------------------------------------------------------------------------------

ACP:

MOV R2, 20H

MOV R1, #21H

MOV R0, #22H

L7880:

CLR CONVST; імпульс старту перетворення

SETB CONVST

MOV R5, #19; затримка на час перетворення (20 мкс)

DJNZ R5, $

CLR CS; CS=0

CLR RD; RD=0

MOV A,P1; Читаємо з порту P1 мл. и сp. тетради

MOV R4,A; зберігаємо їх в R4

MOV A,P0; читаємо з порту Р3 старшу тетраду

MOV R5, A; в R4R5 - результат

SETB RD; Установка RD в 1

SETB CS; Установка CS в 1

MOV A, R4;

MOV @R1, A

MOV A, R5

MOV @R0, A

DJNZ R2, L7880; декремент R2 та п-хід якщо на L7880

CALL SCHET; виклик підпрограми SCHET

RET; повернення з підпрограми

----------------------------------------------------------------------------------------------------

SCHET:

MOV R2, 20H

MOV R1, #21H

MOV R0, #22H

MOV MAXM, @R0

MOV MAXS, @R1

MM3:

INC R0; збільшення на 1 R0

INC R0

INC R1; збільшення на 1 R1

INC R1

MOV A, @R1

MOV R4, A

MOV A, @R0

MOV R3, A

MOV A, MAXS; записування МАХS в акумулятор

CLR C; скидання переносу

CJNE A, R4, MM1; зрівн. ак. з R4 и пер. на ММ1 якщо

JC MM2

JMP MM6

MM2:

MOV MAXS, @R1

MOV MAXM, @R0

JMP MM6

MM1:

MOV A, MAXM

CLR C

CJNE A, R3, MM6; зрівн. ак. с R3 и пер. на ММ6 якщо

JC MM5; перехід на ММ5 якщо перенос = 1

JMP MM6

MM5:

MOV MAXS, @R1

MOV MAXM, @R0

MM6:

DJNZ R2, MM3

MOV R5, #0FFH

MOV SBUF, MAXS; записування в рег. посл. порту MAXS

DJNZ R5, $; затримка

DJNZ R5, $

MOV SBUF, MAXM; записування в рег. посл. порту MAXМ

RET

 

4. ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ДЛЯ ДРУГОГО МК51:

 

AD00.EQU 20H

DATIND.EQU P1.0; до виводу DI

CLKIND.EQU P1.1; до виводу SK

---------------------------------------------------------------------------------------------------

ORG 0H

JMP 30H

ORG 0BH; вектор переривання таймера 0

JMP TIME_0

ORG 01BH; вектор переривання таймера 1

JMP TIME_1

ORG 23H

JMP UART

ORG 30H

---------------------------------------------------------------------------------------------------

MOV DPTR, #200H

MOVX A, @DPTR

MOV R0, A; молодший байт тривалості імпульсів

INC DPTR

MOVX A, @DPTR

MOV R1, A; старший байт тривалості імпульсів

INC DPTR

MOVX A, @DPTR

MOV R2, A; молодший байт періоду імпульсів

INC DPTR

MOVX A, @DPTR

MOV R3, A; старший байт періоду імпульсів

----------------------------------------------------------------------------------------------------

MOV TMOD, #00010001B; задання режимів для таймерів-лічильників

MOV SCON, #01010000B; задання режиму UART

MOV IE, #00011010B; дозвіл переривань

MOV TL0, R0

MOV TH0, R1

MOV TL1, R2

MOV TH1, R3

SETB EA; дозвіл головних переривань

SETB P3.4

MOV TCON, #00010000B; запуск 0-го лічильника

JMP $; зациклення

----------------------------------------------------------------------------------------------------

TIME_0:

CLR P3.4

MOV TCON, #01000000B; запуск 1-го лічильника

RETI; повернення з п-ми обробки переривань

----------------------------------------------------------------------------------------------------

TIME_1:

SETB P3.4

MOV TH0, R1

MOV TL0, R0

MOV TH1, R3

MOV TL1, R2

MOV TCON, #00010000B; запуск 0-го счётчика

RETI; повернення з п-ми обробки переривань

-----------------------------------------------------------------------------------------------------

UART:; приймання даних

CLR EA

PUSH R0; завантаження в стек R0

PUSH R1; завантаження в стек R1

PUSH R2; завантаження в стек R2

PUSН R3; завантаження в стек R3

MOV R2, #FFH

MOV A, SBUF

MOV R0, A; читаємо старший байт

DJNZ R2, $

DJNZ R2, $

MOV A, SBUF

MOV R1, A; читаємо младший байт

MOV DPTR, #20E

MOVX @DPTR, R0; записуємо в зовн. пам’ять дан. стар. байт

INC DPTR

MOVX @DPTR, R1; записуємо в зовн. пам’ять дан. мол. байт

-----------------------------------------------------------------------------------------------------

; Перетворюємо число в формат: тисячі, сотні, десятки, одиниці

; Визначаємо кількість тисяч

4_TISYACHI:

CLR C; скидання переносу

MOV A, R1

SUBB A, #0A0H; віднімання з А константи та зайому

MOV R2, A

MOV A, R0

SUBB A, #0FH; віднімання з А константи та зайому

MOV R3, A

JNC 3_TISYACHI; перехід на 3_TISYACHI якщо перенос = 0

MOV 20H, #4

JMP SOTNI; перехід на підпрограму SOTNI

3_TISYACHI:

CLR C; скидання переносу

MOV A, R1

SUBB A, #0B8H; віднімання від А константи та зайому

MOV R2,A; записування в R2

MOV A, R0; записування в А з R0

SUBB A, #0BH; віднімання від А константи та зайому

MOV R3, A

JNC 2_TISYACHI перехід на 2_TISYACHI якщо перенос = 0

MOV 20H, #3

JMP SOTNI

2_TISYACHI:

CLR C; скидання переносу

MOV A, R1

SUBB A, #0B0H

MOV R2, A

MOV A, R0

SUBB A, #07H

MOV R3, A

JNC 1_TISYACHI

MOV 20h, #2

MP SOTNI

1_TISYACHI:

CLR C; скидання переносу

MOV A, R1

SUBB A, #0E8H

MOV R2, A

MOV A, R0

SUBB A, #03H

MOV R3, A

MOV 20H, #1

JMP SOTNI

-----------------------------------------------------------------------------------------------------

; Визначаємо кількість сотень

SOTNI:

9_SOTNI:

CLR C; скидання переносу

MOV A,R2

SUBB A, #84H

MOV R1, A

MOV A, R3

SUBB A, #03H

MOV R0, A

JNC 8_SOTNI

MOV 21H, #9

JMP DESATKI

8_SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #20H

MOV R1, A

MOV A, R3

SUBB A, #03H

MOV R0, A

JNC 7_SOTNI

MOV 21H,#8

JMP DESATKI

7_SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #0BCH

MOV R1,A

MOV A, R3

SUBB A, #02H

MOV R0, A

JNC 6_ SOTNI

MOV 21H, #7

JMP DESATKI

6_ SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #58H

MOV R1, A

MOV A, R3

SUBB A, #02H

MOV R0, A

JNC 5_SOTNI

MOV 21H, #6

JMP DESATKI

5_SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #0F4H

MOV R1, A

MOV A, R3

SUBB A, #01h

MOV R0, A

JNC 4_SOTNI

MOV 21H, #5

JMP DESATKI

4_SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #90H

MOV R1, A

MOV A, R3

SUBB A, #01H

MOV R0, A

JNC 8_SOTNI

MOV 21H, #4

JMP DESATKI

3_SOTNI:

CLR C; скидання переносу

MOV A, R2

SUBB A, #2CH

MOV R1, A

MOV A, R3

SUBB A, #01H

MOV R0, A

JNC 2_SOTNI

MOV 21H, #3

JMP DESATKI

2_SOTNI:

CLR C; скидання переносу

MOV A, R3

SUBB A, #0C8H

MOV R0, A

JNC 1_SOTNI

MOV 21H, #2

JMP DESATKI

1_SOTNI:

CLR C; скидання переносу

MOV A, R3

SUBB A, #64H

MOV R0, A

MOV 21H, #1

JMP DESATKI

-----------------------------------------------------------------------------------------------------

; Визначаємо кількість десятків

DESATKI:

9_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #5AH

MOV R3, A

JNC 8_DESATKI

MOV 22H, #9

JMP EDINITSA

8_DESATKI:

CLR C

MOV A, R0

SUBB A, #50H

MOV R3, A

JNC 7_DESATKI

MOV 22H, #8

JMP EDINITSA

7_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #46H

MOV R3, A

JNC 6_DESATKI

MOV 22H, #7

JMP EDINITSA

6_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #3CH

MOV R3, A

JNC 5_DESATKI

MOV 22H, #6

JMP EDINITSA

5_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #32H

MOV R3, A

JNC 4_DESATKI

MOV 22H, #5

JMP EDINITSA

4_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #28H

MOV R3, A

JNC 3_DESATKI

MOV 22H, #4

JMP EDINITSA

3_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #1EH

MOV R3, A

JNC 2_DESATKI

MOV 22H, #3

JMP EDINITSA

2_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #14H

MOV R3, A

JNC 1_DESATKI

MOV 22H, #2

JMP EDINITSA

1_DESATKI:

CLR C; скидання переносу

MOV A, R0

SUBB A, #0AH

MOV R3, A

MOV 22H, #1

JMP EDINITSA

; Визначаємо кількість одиниць

EDINITSA:

9_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #9H

JNC 8_EDINITSA; перехід якщо перенос = 0

MOV 23H, #9

JMP INDVIV

8_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #8H

JNC 7_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #8

JMP INDVIV

7_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #7h

JNC 6_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #7

JMP INDVIV

6_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #6H

JNC 5_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #6

JMP INDVIV

5_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #5H

JNC 4_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #5

JMP INDVIV

4_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #4H

JNC 3_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #4

JMP INDVIV

3_EDINITSA:

CLR C; скидання переносу

MOV A, R3

SUBB A, #3H

JNC 2_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #4

JMP INDVIV

2_EDINITSA:

CLR C

MOV A, R3

SUBB A, #2h

JNC 1_EDINITSA; перехід на EDINITSA, якщо перенос = 0

MOV 23H, #2

JMP INDVIV

1_EDINITSA:

CLR C

MOV A, R3

SUBB A, #1H

MOV 23H, #1

-----------------------------------------------------------------------------------------------------

; Вивід на індикатор

INDVIV:

MOV A, AD00+7; старший розряд

CALL SIMBOL1; другого числа

MOV A, AD00+6

CALL SIMBOL1

MOV A, AD00+5

CALL SIMBOL1

MOV A, AD00+4; молодший розряд

CALL SIMBOL1

MOV A, #0FH; код пропуску

CALL SIMBOL1

MOV A, #0FH

CALL SIMBOL1

MOV A, #0FH

CALL SIMBOL1

MOV A, #0FH

CALL SIMBOL1

MOV A, #0FH

CALL SIMBOL1

MOV A, #0FH

CALL SIMBOL1

SETB DATIND

POP R3; діставання з стеку

POP R2

POP R1

POP R0

SETB EA

RETI

SIMBOL1:

ANL A, #0000011111B; логічне “ І ” акум. і константи

CJNE A, #0, SIMB11

MOV A, #10

SJMP SIMB12

SIMB11:

CJNE A, #0FH,SIMB12

MOV A, #0

SIMB12:

CLR CLKIND

SWAP A

CALL BIT1

CALL BIT1

CALL BIT1

CALL BIT1

SETB CLKIND

RETI

BIT1:

RLC A

MOV DATIND, C; ввід даних в РК-дисплей

SETB CLKIND; імпульс

CLR CLKIND; защипування

SETB EA; дозвіл головного переривання

RETI; повернення з п-мы обробки переривань

END

 

5. Висновки

 

В результаті виконання розрахунково-графічної роботи була розроблена мікропроцесорна система, до складу якої увійшли два мікроконтролери К1816ВЕ51, клавіатура з 15 кнопок, 12-розрядний паралельний аналого-цифрового перетворювач AD7880 фірми Analog Devices, рідкокристаличний індикатор на основі контролера НТ1611 фірми HOLTEK, зовнішній постійний запам'ятовувальний пристрій 27С128, ємністю 16КБ, зовнішній оперативний запам'ятовувальний пристрій типу КР537РУ10, ємністю 2КБ

Написана програма, яка дозволяє усім компонентам системи працювати згідно з завданням.

В ході виконання цього курсового проекту були практично використані знання, отримані на лекційних і лабораторних заняттях з курсу “Цифрові пристрої та мікропроцесори”

Загалом, розроблена мікропроцесорна система являє собою функціонально закінчений пристрій і відповідає вимогам технічного завдання №15 на розрахунково-графічную роботу.

 

Література

1. Цевух I.В. Конспект лекцій, 2008г.

2. Сташин В.В. Проектирование цифровых устройств на однокристальных микроконтроллерах – М.: Энергоатомиздат, 1990.

3. А.В. Фрунзе, Микроконтроллеры? Это же просто! Т.1.- М.: ООО «ИД СКИМЕН», 2002г.

 

Навчальне видання

 





Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 226 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2255 - | 2185 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.