МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Київський національний університет будівництва і архітектури
Кафедра автоматизації технологічних процесів
Звіт
з лабораторних робіт
з предмету
«ОСНОВИ К-І УПРАВЛІННЯ
ТА ПРОГРАМУВАННЯ СИСТЕМ РЕАЛЬНОГО ЧАСУ»
Виконав:
студент групи АТП-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