- •П.С. Довгий, в.И. Скорубский
- •Содержание
- •2.Высокоуровневая программная модель в с51.
- •2.1. Организация памяти и размещение информации в с51
- •4) Расширенная память данных
- •2.2.Типы и форматы данных в с51
- •2.3. Ввод-вывод в с51
- •2.5. Управление программой.
- •3.1. Структура Памяти, команды обмена данными.
- •Idata sfr Data Sfr
- •2.4.2. Ввод-вывод в а51
- •2.4.4 Арифметические и логические операции.
- •2) Беззнаковая арифметика
- •3) Десятичная арифметика
- •4) Логика поразрядная 8 битовая
- •5) Битовые операции
- •3.1.1. Беззнаковые целые численные данные.
- •3.1.2. Дробные численные данные.
- •5. В mcs51 доступна простая десятичная арифметика – предлагается составить программу преобразования двух разрядной десятичной дроби
- •3.2. Двоичная арифметика
- •3.2.2.Умножение знаковое в с51
- •3.2.3. Беззнаковое деление
- •3. Вычисления
- •3.1. Вычисление функции с плавающей точкой.
- •График функции в окне Анализатора.
- •3.2. Вычисление функции с фиксированной точкой в целых числах и выбор масштабов.
- •3.3. Макроассемблер
- •3.4. Вычисление функции с фиксированной точкой в дробных числах.
- •3.3. Иерархия памяти эвм.
- •1) Прямой доступ к данным
- •2) Косвенный доступ к данным по адресу через адрес-указатель
- •3.4. Битовые данные.
- •1) Доступ к битам в с51
- •2) Адресация к битам в Ассемблере
- •3.5. Система прерывания.
- •Void Ex00(void) interrupt 0 using 1
- •3.5.1. Подсчет внешних прерываний
- •1) Программа в с51
- •Внутренние прерывания при переполнении таймеров.
- •3.5.2. Часы реального времени..
- •Intt0() interrupt 0
- •2.5.4. Широтно-импульсная модуляция (шим).
- •Xrl a,{ri,@rj,#d,ad} xchd a,@rj a(3-0)@rj(3-0)
- •Xrl ad,{#d,a} swap a a(3-0)a(7-4)
- •Open -
- •Save - все остальные имеют стандартное назначение
- •Окно Загрузчика (Debug)
- •Вопросы по курсу лабораторных работ к зачету и экзамену.
- •Кафедра вычислительной техники
2.4.4 Арифметические и логические операции.
Арифметика 8 битовая двоичная (Знаковая/беззнаковая)
Формат числа – двоичное число в дополнительном коде. Операции сложения и вычитания знаковые и беззнаковые не различимы на уровне
схемы суммирования./вычитания – различаются только формированием признака переполнения OV[ ].
PSW=C.AC.F0.RS1.RS0.OV.-.P содержит признаки результата арифметических операций – С(перенос, заем), AC – полуперенос, OV(переполнение),
add a, {Ri,@rj,#d,ad} ; a + {..} a, Признаки C,OV,P в PSW, в скобках {.. } обозначены режимы адресации второго операнда
addc a, {Ri,@rj,#d,ad} ; a + {..}+ C a
subb a, {Ri,@rj,#d,ad} ; a - {..}- C a
add a,P2 ; a +P2 a P2-регистр порта Р2
2) Беззнаковая арифметика
inc {a, ri, @rj, ad, dptr} ; {..}+1, признаки не меняются в PSW
dec r0, {a, ri, @rj, ad} ;{..}-1
mul ab ; a*bb.a, признаки v=(b#0), 0C, P
div ab ; a/b a, b=rest(a/b) признаки ov,p
rrc a, ; RR(c.a) (a.C) признаки C,P
rlc a, ; RL(a.C) (C.a) признаки C,P
clr a, ; 0a
(17. В С51 признаки операций не доступны (почему?как выйти из положения - привести примеры)
3) Десятичная арифметика
Для ускорения ввода и вывода, в расчетах с данными переменной длины может быть использована десятичная арифметика в форматах с естественной запятой. Числа представлены двоично-десятичными кодами.
В MCS51 работа с десятичными данными поддерживается специальными командами:
DA a – десятичная коррекция результатов двоичного сложения или вычитания 2/10 чисел
swap a – обмен тетрадами в Асс
xchd a, @rj - обмен тетрадами
4) Логика поразрядная 8 битовая
anl a, {Ri,@rj,#d,ad} a & {..} a признаки p, 0c,
anl ad, {#d, a} ;
orl a, {Ri,@rj,#d,ad} a v {..} a признаки p, 0c,
orl ad, {#d, a}
xrl {Ri,@rj,#d,ad} a # {..} a признаки p, 0c
xrl ad, {#d, a}
cpl a ; not a
rr a ; циклический сдвиг Асс вправо (признак С
не изменяется)
rl a ; циклический сдвиг Асс влево (признак С не изменяется)
5) Битовые операции
anl c,{bit, /bit} /bit – инверсия бита ;
Например, anl c,/ACC.6
orl c,{bit , /bit} mov c,bit
setb bit,
clr bit,
cpl C
Примеры вычислений с булевскими и битовыми переменными
Примеры использования при вычислениях в С51 поразрядных логических и булевских операций
#include <reg51.h>
char x=-1, y=0, z;
bit xx=1, yy=0, zz;
char xy=55, yx=-33, zxy;
main()
{
zz=xx&&(!yy)||xx||(!yy); // 1 ( !=0)1, ( ==0)0 условные команды
z=x&&(!y)||x||(!y); // 01 поразрядные логические
zz=xx&(~yy)|xx|(~yy); // 1 поразрядные логические
z=x&(~y)|x|(~y); // FF= -1 условные команды
zxy=xy&&(!yx)||(xy-22)||(!yx+5); //01 смешанные вычисления –условные
команды
zxy=xy&(!yx)|(xy-22)|(!yx+5); //25 арифм и поразрядные лог операции
}
(20. Выполнить тестирование примеров и пояснить принцип интерпретации выражений в С51). Предложить надежную запись смешанных выражений и примеры.
zxy=(xy>0)&(!yx==0)|(xy-22<0)|(!yx+5>10);
4. Ввод-вывод численных данных
Численные данные – основная форма представления информации в моделях самого разнообразного типа, ЭВМ предназначена для вычислений и работы с численными данными, к операциям с числами приводятся все
алгоритмические преобразования информации – социально-экономической, логической, лингвистической, графической и др
Общий курс Дискретной математики традиционно посвящен вопросам представления чисел и операциям с числами в ЭВМ. В большинстве случаев не рассматриваются проблемы дискретизации информации и преобразования непрерывного информационного поля, воспринимаемого человеческими органами чувств – визуально, на слух, силовое давление, нагрев или охлаждение и др., в численные данные. Все эти преобразования выполняются разнообразными датчиками(сенсорами). Датчики могут быть встроенными в измерительные приборы и формируют численные данные для ввода.
Симметричная проблема преобразования дискретного числового представления информации в непрерывное поле – нагрев, охлаждение, скорость, графика и др
Непрерывное информационное поле дискретизируется в численные данные для обработки в ЭВМ, но всегда представляет информацию с конечной абсолютной погрешностью [1] .
Назначение ввода-вывода – обмен данными между памятью ЭВМ и периферией ввода-вывода, подключаемой к контактам портов. На контактах порта уровни сигналов (H.L) интерпретируются в положительной логике (1,0).
Устройства ввода (клавиатуры, считыватели с магнитных носителей и др.) преобразуют или считывают внешнее естественное представление численных данных в десятичной системе в промежуточной двоично-десятичной форме и выполняется преобразование двоично-десятичных кодов в машинные двоичные форматы данных.
Датчики (сенсоры) в управляющих и измерительных вычислительных системах формируют данные в двоичной или двоично-десятичном форматах на входных портах контроллера. Непрерывное информационное поле, таким образом, дискретизируется в численные данные для обработки в ЭВМ при вводе.
Если измеряемая величина аналоговая +/- 1.5 в, то ADC-преобразователь датчика формирует дополнительный двоичный код значения с
масштабом 3в/2n , где n-разрядность преобразователя. Если вычисления следует выполнять в единицах измерения, то двоичный код S преобразуется в единицы измерения (например, в) –
(S*3в/2n ). , получим дробное число с абсолютной погрешностью 2-n+1 Для вычислений необходимо перевести число в целое с масштабом 1000 мв или
машинное представление может быть получено как результат двоичных вычислений с учетом знаков в дополнительном коде.
(S*3 )*1000 мв. Получим целое двоичное число в дополнительном коде в n-разрядном формате с двоичным масштабом 2-n .
Устройства вывода (например, визуализации данных (дисплеи, индикаторы, принтеры и др)) преобразуют промежуточный двоично-десятичный формат чисел в десятичное изображение. При выводе машинные двоичные целые форматы преобразуются программами в двоично-десятичные (2/10 преобразование) с учетом знака и масштаба. Проблема преобразования дискретного числового представления информации в непрерывное поле – нагрев, охлаждение, скорость, графика и др осуществляется специальными исполнительными устройствами