- •П.С. Довгий, в.И. Скорубский
- •Содержание
- •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)
- •Вопросы по курсу лабораторных работ к зачету и экзамену.
- •Кафедра вычислительной техники
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)
clr a -
cpl a не(a) команды булевского процессора
rl a rol(a) p
rlc a rolc(a,c) c,p mov bit,c mov c,bit
rr a ror(a) p clr {c,bit} anl c,{bit,/bit}
rrc a rorc(c.a) c,p cpl c orl c,{........}
da a коppекция (+,-)2 setb {c,bit} jbc bit,rel
jc rel jnc rel jb bit,rel jnb bit,rel
Упpавление пpогpаммой и ветвления обозначения битов SFR адрес
7 6 5 4 3 2 1 0
ljmp a16 PCa16 acc . . . . . . . . e0i
ajmp a11 PC(10.0)a11[10.0] b . . . . . . . . F0i
sjmp rel PC+2+/- rel[6.0] psw c ac f0 rs1 rs0 ov . p d0i
jmp @a+dptr PCa+dptr sp 81
jz rel PC+2+/-rel[6.0],если (a=0) dph 83
dpl 82
jnz rel .... ,если (a<>0) ie ea . . es et1 ex1 et0 ex0 a8i
jc rel .... ,если C p0 . . . . . . . . 80i
jnc rel .... ,если неС p1 . . . . . . . . 90i
jb bit,rel PC+3+rel,если bit=1 p2 . . . . . . . . a0i
jnb bit,rel .... ,если bit=0 p3 rd wr t1 t0 int1 int0 txd rxd b0i
jbc bit,rel ... ,если bit=1,bit<-0 ip . . . ps pt1 px1 pt0 px0 b8i
djnz {ri,ad},rel {}-1;
PC+1/2+/-rel[6.0],если {}<>0 tmod gate1 c/t1 m1 m0 gate0 c/t0 m1 m0 89
cjne {ri,@rj},#d,rel rel,если {}<>#d tcon tf1 tr1 tf0 tr0 te1 it1 ie0 it0 88i
lcall a16 стекpc, PCa16 th0 8c
tl0 8a
acall a11 . ..., PC(10-0)a11[10.0] sbuf 99
ret PCстек th1 8d
tl1 8b
reti PCстек,tf0 pcon smod . . . gf1 gf0 pd idl 87
nop пропуск scon sm0 sm1 sm2 ren tb8 rb8 ti ri 98i
обозначения адресов и признаки
ri= {r0,r1,...,r7} rj={r0,r1}
psw=(c,ac,f0,rs1,rs0,v,-,p)
p - нечетное число единиц в аккумулятоpе
f0- пpизнак пользователя, rs1.rs0 - банк pегистpов
@r0,@r1 - косвенная адресация к внутренней RAM Data,
ad - адpес Data, имя pегистpа SFR
bit - адpес бита в поле битов 00-7f или в специальном регистре- 80-ff ,адрес образуется из собственного адреса регистра, к которому добавляется номер бита;
,разряд регистра acc.5, psw.0, ... ,( 80i - адеса битов 80,...87 регистра 80)
обозначение бита smod,sm0,....
/bit - инвеpсия бита
rel - <метка>=смещение РС в доп коде
------------------------------------------------------------------------------------------------
Примеры программ
11: y=t=x*P1; //v<0
C:0x088C AF90 MOV R7,P1(0x90)
C:0x088E EF MOV A,R7
C:0x088F FD MOV R5,A
C:0x0890 7C00 MOV R4,#0x00
C:0x0892 AF0A MOV R7,x(0x0A)
C:0x0894 EF MOV A,R7
C:0x0895 33 RLC A
C:0x0896 95E0 SUBB A,ACC(0xE0)
C:0x0898 FE MOV R6,A
C:0x0899 1208B8 LCALL C?IMUL(C:08B8)
C:0x089C 8E08 MOV t(0x08),R6
C:0x089E 8F09 MOV 0x09,R7
C:0x08A0 8E0B MOV y(0x0B),R6
C:0x08A2 8F0C MOV 0x0C,R7
12: y=t=z*P1; //y>=0
13:
C:0x08A4 AF90 MOV R7,P1(0x90)
C:0x08A6 7E00 MOV R6,#0x00
C:0x08A8 AC0D MOV R4,z(0x0D)
C:0x08AA AD0E MOV R5,0x0E
C:0x08AC 1208B8 LCALL C?IMUL(C:08B8)
C:0x08AF 8E08 MOV t(0x08),R6
C:0x08B1 8F09 MOV 0x09,R7
C:0x08B3 8E0B MOV y(0x0B),R6
C:0x08B5 8F0C MOV 0x0C,R7
14: }
C:0x08B7 22 RET
C?IMUL:
C:0x08B8 EF MOV A,R7
C:0x08B9 8DF0 MOV B(0xF0),R5
C:0x08BB A4 MUL AB
C:0x08BC A8F0 MOV R0,B(0xF0)
C:0x08BE CF XCH A,R7
C:0x08BF 8CF0 MOV B(0xF0),R4
C:0x08C1 A4 MUL AB
C:0x08C2 28 ADD A,R0
C:0x08C3 CE XCH A,R6
C:0x08C4 8DF0 MOV B(0xF0),R5
C:0x08C6 A4 MUL AB
C:0x08C7 2E ADD A,R6
C:0x08C8 FE MOV R6,A
C:0x08C9 22 RET
Приложение 2.
Интегрированная система программирования и отладки Keil.
Назначение Интегрированной среды IDE:
Программирование задач на языке Ассемблера MCS51, C51.
Создание проекта для работы с программой на разных этапах.
Синтаксический контроль.
Компиляция программы в объектный код (HEX-файл и LIST-листинг).
Загрузка и симуляция выполнения программы с контролем состояния памяти и периферии.
Система содержит полную библиотеку элементов с ядром MCS51, выпускаемых различными фирмами. Библиотека дополняется новыми элементами в последних версиях, которые можно загрузить из Интернета. Система работает во всех версиях ОС Windows.
Окно Vision
1. Основное меню.
2. Кнопки – синтаксический разбор, компиляция и сборка.
3 Кнопка вызова загрузчика и симулятора.
4. Проект.
5. Окно редактирования исходного текста программы.
6. Окно сообщений компилятора.
Стандартное меню Vision
File Edit View Project Debug Flash Peritherial Tools SVCS Window Help
Standart Tools Menu загружается в Tools и View и содержит символы обращения к различным функциям, локализованным в других ссылках Menu
File
New - редактирование текстовых файлов