Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zvit_z_laboratornikh_robit_Samoylenko.docx
Скачиваний:
8
Добавлен:
05.02.2016
Размер:
40.11 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

Київський національний університет будівництва і архітектури

Кафедра автоматизації технологічних процесів

Звіт

з лабораторних робіт

з предмету

«ОСНОВИ К-І УПРАВЛІННЯ

ТА ПРОГРАМУВАННЯ СИСТЕМ РЕАЛЬНОГО ЧАСУ»

Виконав:

студент групи АТП-41

Перевірив:

ас. Самойленко М.І

Київ 2013

Лабораторна робота №1.

Тема: Схемні та програмні методи керування роботою семи сегментного індикатора. Статична та динамічна індикація .

Мета: Вивчити схеми статичної та динамічної індикації. Навчитись керувати роботою статичного та динамічного семи сегментного індикатора.

Текст програми:

.

include "m8515def.inc"

.def D100=R17

.def D10=R18

.def D1=r19

.cseg

rjmp init

.org 0x20

init: Ldi R17, low(RamEnd)

out Spl, R17

Ldi R17, High(RamEnd)

out Sph, R17

in R16, $35

ori R16,0x80

out $35,R16

ldi ZH, high(Char_Tab)

ldi ZL, low(Char_tab)

Rol Zh

Lsl Zl

Ldi R20, 242

hex_to_BCD:

clr D100

clr d10

clr d1

Div100: Cpi R20, 100

brlo div10

subi R20,100

inc d100

rjmp Div100

Div10: Cpi R20, 10

brlo div1

subi R20,10

inc d10

rjmp Div10

Div1: mov d1,r20

mov r4, D10

swap R4;

add R4, D1

Sts 0xb000, R4

sts 0xa000, D100

RJMP DIN_DICP

Din_Dicp:

Add ZL, D100

Lpm

sts 0x8001, R0

Ldi R16,0

Sts 0x8002, R16

Sub Zl, D100

Rcall Delay

Add ZL, D10

Lpm

sts 0x8001, R0

inc R16

Sts 0x8002, R16

Sub Zl, D10

Rcall Delay

Add ZL, D1

Lpm

sts 0x8001, R0

inc R16

Sts 0x8002, R16

Sub Zl, D1

Rcall Delay

RJMP dIN_DICP

Delay:

Ldi R21, 0xff

w: dec R21

brne w

ret

.org 0x400

char_Tab:

.db 0x3F, 0x06, 0x5b, 0x4F,0x66,0x6d, 0x7d,0x07, 0X6F,0xFd

Лабораторна робота №2.

Тема: Керування засобами вводу інформації. Читання клавіатури.

Мета: Закріпити знання з теоретичного курсу, навчитись зчитувати сигнали з дискретних датчиків.

Текст програми:

.

include "m8515def.inc"

.def D100=R19

.def D10=R17

.def D1=R18

.def A=R20

.def Key=R25

.def tmp2=R24

.def Row=R23

.cseg

rjmp init

.org 0x20

init: Ldi R16, Low(RamEND)

out SPl, R16

Ldi R16, High(RamEND)

out SPh, R16

in R16, $35

ori R16, 0x80

out $35, R16

ldi R16, 123

ldi zl, low (key_tab)

ldi zh, high (key_tab)

rol zh

lsl zl

go: rcall red

STS 0xB000, tmp2

rjmp go

Hex_to_BCD:

clr D100

clr D10

clr D1

div100:

cpi R16, 100

BRLO Div10

Subi R16, 100

inc D100

rjmp Div100

Div10:

cpi R16, 10

BRlO Div1

Subi R16, 10

inc D10

rjmp Div10

Div1:mov D1, R16

SWAP D10

add D10, D1

STS 0xB000, D10

sts 0xA000, D100

deley: Ldi R16, 0xAA

del: Dec R16

BRNE Del

ret

Pres_key: mov R4, A

rcall deley

Ld a, Y

cp A, R4

breq Key_a

ret

red: ldi row, 1

Ldi Yl, 0x06

Ldi Yh, 0x90

LD A, Y

cpi A, 0xff

brne Pres_key

inc row

Ldi Yl, 0x05

Ldi Yh, 0x90

ld A, Y

cpi A, 0xff

brne Pres_key

inc row

Ldi Yl, 0x03

Ldi Yh, 0x90

LD A, Y

cpi A , 0xFF

brne Pres_key

ret

Key_A:

set ;встановимо прапорець Т

com a ;побітова інверсія А

clc ;очистить С

clr Key ;------ Key---

k1: inc Key ;лічильник біту Key=Key+1

ror a ;зсунемо код нат. клавіші вправо

brcc k1 ;перенос був? Ні повторить!

ldi tmp2, 04 ;кнопок 4

mul row1, tmp2 ;помножимо номер стовпчика на 4

sub r0,Key ;віднімемо номер натиснутої кнопки

mov Zl,r0 ;отримали адрес коду в таблиці

lpm ;читаємо код кнопки з таблиці

mov tmp2,r0 ;значення в tmp2

ret

stop: rjmp stop

.org 0x400

key_tab:

.db 0x0F,7,4,1,0,8,5,2,0x0B,9,6,3,12

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]