
- •Арифметика с фиксированной точкой
- •Реализация задачи на ассемблере
- •Программа беззнакового деления
- •Реализация задачи на ассемблере
- •Вычисление функции
- •Иерархия памяти эвм
- •Программа на c:
- •Битовые операции.
- •Реализация задачи на ассемблере
- •Таймеры
- •Программа часы.
- •Реализация задачи на с
- •Реализация задачи на ассемблере
- •Формирование серии прямоугольных сигналов - метод шим
- •Реализация задачи на с
- •Реализация на ассемблере
- •Adc преобразователь sab515/535
- •Реализация задачи на с
- •Сигнальная функция
- •Реализация задачи на с
- •Сигнальная функция
- •Реализация задачи на ассемблере
Битовые операции.
Алгоритмы логического управления, программные модели конечных автоматов используют битовое кодирование событий.
Хранение и обработка битовых данных, реализуемых в системе команд булевского процессора MCS51, позволяет организовать компактные и эффективные программы логического управления.
z=(x1 v /(x2x3))(/x2 v x4)
Реализация задачи на С
#include <reg51.h>
char bdata mem;
unsigned short int bdata out = 0;
sbit x1=mem^0;
sbit x2=mem^1;
sbit x3=mem^2;
sbit x4=mem^3;
sbit z = out^8;
// z= (x1 v /x2x3)(/x2 v x4)
main()
{
for(mem=15;mem>=0;mem--)
{
out <<= 1;
z =((x1|(~(x2&x3)))&((~x2)|x4));
}
P0 = out & 0xFF;
P1 = (out >> 8);
while (1);
}
Реализация задачи на ассемблере
mem equ 0x20
outl equ 0x21
outh equ 0x22
bseg at 0x23
x1 bit mem.0
x2 bit mem.1
x3 bit mem.2
x4 bit mem.3
y bit outl.0
tunec1 bit acc.0
tunec2 bit acc.1
cseg at 0
mov r0, #0x16
mov outl, #0
mov outh, #0
cyc:
mov a, outl
clr c
rlc a
mov outl, a
mov a, outh
rlc a
mov outh, a
mov a, r0
dec a
mov mem, a
mov c, x2 ; c=x2
anl c, x3 ; c=x2&x3
cpl c ; c=/x2&x3
orl c, x1 ; c=(/x2&x3 | x1)
mov tunec1, c ; tunec1=(/x2&x3 | x1)
mov c, x2 ; c=x2
cpl c ; c=/x2
orl c, x4 ; c=(/x2 | x4)
anl c, tunec1 ; c=(/x2&x3 | x1)&(/x2 | x4)
mov y, c
djnz r0, cyc
mov P0, outl
mov P1, outh
noper:
sjmp noper
end
Таймеры
Таймеры – счетчики реального времени, задаваемого стабильным кварцевым генератором частоты. Контроль временных параметров сигналов, измерение реального времени выполняются с использованием прерываний от таймеров.
Управление таймерами ТМ0/1
Таймер 0 - TH0.TL0
Таймер 1 - TH1.TL1
При переполнении таймера формируются запросы прерываний -биты TF1,TF0, биты сбрасывается при входе в прерывание
Управляющий регистр TCON - битовый доступ
TR0 - разрешение счета тм0
TR1 - разрешение счета тм1
Управляющий регистр TMOD - нет битового доступа
Выбор режима таймера тм1 TMOD.5 =m1 TMOD.4=m0
таймера тм0 TMOD.1 =m1 TMOD.0=m0
Программа часы.
Таймеры по переполнению вызывают прерывания – внутренние события. Счетчик событий используются для расчета текущего времени в сек и минутах в портах P1,P2
Реализация задачи на с
#include <reg51.h>
unsigned char t=0;
int_0() interrupt 3
{
t++;
TH1 = 0x3C;
TL1 = 0xAF + TL1;
}
main()
{
P3 = 0;
P1 = 0;
P0 = 0;
TMOD = 0x10;
TH1 = 0x3C;
TL1 = 0xAF;
ET1 = 1;
TR1 = 1;
EA = 1;
while(1)
{
if (t==20) {t=0; P1++;}
if (P1==60) {P1=0; P0++;}
};
}
Реализация задачи на ассемблере
iseg at 30h
Stack: ds 10
cseg at 0
ljmp start
cseg at 1Bh
ljmp ex00
cseg at 40h
start:
mov P1, #0
mov P2, #0
mov P3, #0
mov R1, #1
mov SP, #Stack-1
mov TMOD, #10h
mov TH1, #3Ch
mov TL1, #0AFh
setb EA
setb TR1
setb ET1
cikl:
mov A, R1
mov B, #20
subb A,B
jnz p_1
call calc0
p_1:
mov A, P1
mov B, #60
subb A,B
jnz p_2
cabll calc1
p_2:
jmp cikl
ex00:
push ACC
mov A, R1
inc A
mov R1, A
mov TH1, #3Ch
mov TL1, #0AFh
pop ACC
Reti
calc0:
mov A, P1
inc A
mov P1, A
mov R1, #1
ret
calc1:
mov A, P2
inc A
mov P2, A
mov P1, #0
ret
end