
- •Общие сведения о микроконтроллере с8051f340
- •Процессорное ядро cip-51тм
- •Система команд
- •Команды и тактирование
- •Организацияпамяти
- •Память программ
- •Память данных
- •Регистры общего назначения
- •Ячейки памяти с битовой адресацией
- •Команда movx и память программ
- •Память данных
- •Написание и отладка программ на лабораторном стенде.
- •Основы ассемблера
- •Методика работы со стендом
- •Настройка программного обеспечения
- •Редактирование и отладка программ.
- •Задание и порядок выполнения лабораторных работ
- •4.2 Лабораторная работа 2.«Работа с внешними устройствами»
- •Лабораторная работа 3.«Работа с таймерами и системой прерываний»
- •Система прерываний
- •Регистр масок прерывания (ie)
- •Регистр приоритетов прерываний
- •4.4 Лабораторная работа 4. «Работа с клавиатурой и семисегментными индикаторами»
- •Контрольные вопросы к лабораторной работе № 4
- •Литература
Контрольные вопросы к лабораторной работе № 4
Способы вычисления номера нажатой клавиши.
Способы подавления дребезга кнопок.
Требования к временным интервалам динамического сканирования клавиатуры и дисплея.
Использование табличного вычисления функций при работе с клавиатурой и семисегментным дисплеем.
Различные способы преобразования BIN->BCD.
Вывод на индикаторы вещественных чисел.
Программная регулировка яркости семисегментных индикаторов.
Приложение А. Системакоманд CIP-51
Мнемоника команды |
Описание |
Байты |
Циклы |
АРИФМЕТИЧЕСКИЕОПЕРАЦИИ |
|||
ADDA,Rn |
Сложениеаккумуляторас регистром(n=0…7) |
1 |
1 |
ADDA,direct |
Сложениеаккумуляторас прямо-адресуемымбайтом |
2 |
2 |
ADDA,@Ri |
Сложениеаккумуляторас косвенно-адресуемымбайтомОЗУ |
1 |
2 |
ADDA,#data |
Сложениеаккумуляторас константой |
2 |
2 |
ADDCA,Rn |
Сложениеаккумуляторас регистроми переносом |
1 |
1 |
ADDCA,direct |
Сложениеаккумуляторас прямо-адресуемымбайтоми переносом |
2 |
2 |
ADDC A,@Ri |
Сложениеаккумулятораскосвенно-адресуемымбайтомОЗУипереносом |
1 |
2 |
ADDCA,#data |
Сложениеаккумуляторас константой и переносом |
2 |
2 |
SUBB A,Rn |
Вычитаниеиз аккумуляторарегистраи заема |
1 |
1 |
SUBB A,direct |
Вычитаниеиз аккумуляторапрямо-адресуемогобайтаи заема |
2 |
2 |
SUBB A,@Ri |
Вычитаниеизаккумуляторакосвенно-адресуемогобайтаОЗУизаема |
1 |
2 |
SUBB A,#data |
Вычитаниеиз аккумулятораконстантыи заема |
2 |
2 |
INCA |
Инкрементаккумулятора |
1 |
1 |
INC Rn |
Инкрементрегистра |
1 |
1 |
INC direct |
Инкрементпрямо-адресуемогобайта |
2 |
2 |
INC @Ri |
Инкременткосвенно-адресуемогобайтаОЗУ |
1 |
2 |
DEC A |
Декрементаккумулятора |
1 |
1 |
DEC Rn |
Декрементрегистра |
1 |
1 |
DEC direct |
Декрементпрямо-адресуемогобайта |
2 |
2 |
DEC @Ri |
Декременткосвенно-адресуемогобайтаОЗУ |
1 |
2 |
INC DPTR |
Инкрементуказателяданных |
1 |
1 |
MUL AB |
Умножениеаккумуляторана регистрВ |
1 |
4 |
DIVAB |
Делениеаккумуляторана регистрВ |
1 |
8 |
DAA |
Десятичнаякоррекцияаккумулятора |
1 |
1 |
ЛОГИЧЕСКИЕОПЕРАЦИИ |
|||
ANLA,Rn |
ЛогическоеИаккумулятораи регистра |
1 |
1 |
ANLA,direct |
ЛогическоеИаккумулятораи прямо-адресуемогобайта |
2 |
2 |
ANL A,@Ri |
ЛогическоеИаккумулятораи косвенно-адресуемогобайтаОЗУ |
1 |
2 |
ANLA,#data |
ЛогическоеИаккумулятораи константы |
2 |
2 |
ANLdirect,A |
ЛогическоеИпрямо-адресуемогобайтаи аккумулятора |
2 |
2 |
ANLdirect,#data |
ЛогическоеИпрямо-адресуемогобайтаи константы |
3 |
3 |
ORLA,Rn |
ЛогическоеИЛИаккумулятораи регистра |
1 |
1 |
ORL A,direct |
ЛогическоеИЛИаккумулятораи прямо-адресуемогобайта |
2 |
2 |
ORL A,@Ri |
ЛогическоеИЛИаккумулятораи косвенно-адресуемогобайтаОЗУ |
1 |
2 |
ORLA,#data |
ЛогическоеИЛИаккумулятораи константы |
2 |
2 |
ORL direct,A |
ЛогическоеИЛИпрямо-адресуемогобайтаи аккумулятора |
2 |
2 |
ORLdirect,#data |
ЛогическоеИЛИпрямо-адресуемогобайтаи константы |
3 |
3 |
XRLA,Rn |
ИсключающееИЛИаккумулятораи регистра |
1 |
1 |
XRL A,direct |
ИсключающееИЛИаккумулятораи прямо-адресуемогобайта |
2 |
2 |
XRL A,@Ri |
ИсключающееИЛИаккумулятораикосвенно-адресуемогобайтаОЗУ |
1 |
2 |
XRLA,#data |
ИсключающееИЛИаккумулятораи константы |
2 |
2 |
XRL direct,A |
ИсключающееИЛИпрямо-адресуемогобайтаи аккумулятора |
2 |
2 |
XRLdirect,#data |
ИсключающееИЛИпрямо-адресуемогобайтаи константы |
3 |
3 |
CLR A |
Сбросаккумулятора |
1 |
1 |
CPLA |
Инверсияаккумулятора |
1 |
1 |
RLA |
Сдвиг аккумуляторавлевоциклический |
1 |
1 |
RLC A |
Сдвиг аккумуляторавлевочерезперенос |
1 |
1 |
Мнемоника команды |
Описание |
Байты |
Циклы |
RR A |
Сдвиг аккумуляторавправоциклический |
1 |
1 |
RRC A |
Сдвиг аккумуляторавправочерезперенос |
1 |
1 |
SWAPA |
Обмен местамитетрадваккумуляторе |
1 |
1 |
КОМАНДЫПЕРЕДАЧИДАННЫХ |
|||
MOVA,Rn |
Пересылкаваккумуляториз регистра(n=0…7) |
1 |
1 |
MOVA,direct |
Пересылкаваккумуляторпрямо-адресуемогобайта |
2 |
2 |
MOVA,@Ri |
Пересылкаваккумуляторкосвенно-адресуемогобайтаОЗУ |
1 |
2 |
MOVA,#data |
Загрузкаваккумуляторконстанты |
2 |
2 |
MOVRn,A |
Пересылкаврегистриз аккумулятора |
1 |
1 |
MOVRn,direct |
Пересылкаврегистрпрямо-адресуемогобайта |
2 |
2 |
MOVRn,#data |
Загрузка врегистрконстанты |
2 |
2 |
MOVdirect,A |
Пересылкапопрямомуадресуаккумулятора |
2 |
2 |
MOVdirect,Rn |
Пересылкапопрямомуадресурегистра |
2 |
2 |
MOV direct,direct |
Пересылкапрямо-адресуемогобайтапопрямомуадресу |
3 |
3 |
MOVdirect,@Ri |
Пересылкакосвенно-адресуемогобайтаОЗУ попрямомуадресу |
2 |
2 |
MOVdirect,#data |
Пересылкапопрямомуадресуконстанты |
3 |
3 |
MOV@Ri,A |
Пересылкавкосвенно-адресуемуюячейкуОЗУ аккумулятора |
1 |
2 |
MOV @Ri,direct |
Пересылкавкосвенно-адресуемуюячейкуОЗУ прямо-адресуемого Байта |
2 |
2 |
MOV @Ri,#data |
Пересылкавкосвенно-адресуемуюячейкуОЗУ константы |
2 |
2 |
MOVDPTR,#data16 |
Загрузкауказателяданных |
3 |
3 |
MOVCA,@A+DPTR |
Пересылкаваккумуляторбайтаиз памяти программ |
1 |
3 |
MOVCA,@A+PC |
Пересылкаваккумуляторбайтаиз памяти программ |
1 |
3 |
MOVXA,@Ri |
Пересылкаваккумуляторбайтаиз внешней памяти данных |
1 |
3 |
MOVX@Ri,A |
Пересылкабайтаиз аккумуляторавовнешнююпамятьданных |
1 |
3 |
MOVXA,@DPTR |
Пересылкаваккумуляториз расширеннойвнешней памяти данных |
1 |
3 |
MOVX@DPTR,A |
Пересылкаизаккумулятораврасширеннуювнешнююпамятьданных |
1 |
3 |
PUSHdirect |
Загрузкавстек |
2 |
2 |
POP direct |
Извлечениеиз стека |
2 |
2 |
XCHA,Rn |
Обмен аккумуляторас регистром |
1 |
1 |
XCHA,direct |
Обмен аккумуляторас прямо-адресуемымбайтом |
2 |
2 |
XCH A,@Ri |
Обмен аккумуляторас косвенно-адресуемымбайтомОЗУ |
1 |
2 |
XCHDA,@Ri |
Обмен младшейтетрадыаккумуляторас младшейтетрадой косвенно-адресуемогобайтаОЗУ |
1 |
2 |
ОПЕРАЦИИСБИТАМИ |
|||
CLR C |
Сброспереноса |
1 |
1 |
CLR bit |
Сбросбита |
2 |
2 |
SETB C |
Установкапереноса |
1 |
1 |
SETB bit |
Установкабита |
2 |
2 |
CPL C |
Инверсияпереноса |
1 |
1 |
CPL bit |
Инверсиябита |
2 |
2 |
ANL C,bit |
ЛогическоеИбитаи переноса |
2 |
2 |
ANL C,/bit |
ЛогическоеИинверсии битаи переноса |
2 |
2 |
ORL C,bit |
ЛогическоеИЛИбитаи переноса |
2 |
2 |
ORL C,/bit |
ЛогическоеИЛИинверсии битаи переноса |
2 |
2 |
MOV C,bit |
Пересылкабитавперенос |
2 |
2 |
MOV bit,C |
Пересылкапереносавбит |
2 |
2 |
JC rel |
Переход,если переносравен единице |
2 |
2/3 |
Мнемоника команды |
Описание |
Байты |
Циклы |
JNC rel |
Переход,если переносравен нулю |
2 |
2/3 |
JB bit,rel |
Переход,если битравен единице |
3 |
3/4 |
JNB bit,rel |
Переход,если битравен нулю |
3 |
3/4 |
JBC bit,rel |
Переход,если битустановлен,с последующимсбросомбита |
3 |
3/4 |
ПРОГРАММНЫЕПЕРЕХОДЫ |
|||
ACALLaddr11 |
Абсолютныйвызовподпрограммывпределахстраницыв2Кбайта |
2 |
3 |
LCALLaddr16 |
Длинный вызовподпрограммы |
3 |
4 |
RET |
Возвратиз подпрограммы |
1 |
5 |
RETI |
Возвратиз подпрограммыобработкипрерывания |
1 |
5 |
AJMPaddr11 |
Абсолютныйпереходвнутристраницыв2Кбайта |
2 |
3 |
LJMPaddr16 |
Длинный переходвполномобъемепамяти программ |
3 |
4 |
SJMP rel |
Короткий относительныйпереходвнутристраницыв 256байт |
2 |
3 |
JMP @A+DPTR |
Косвенный относительныйпереход |
1 |
3 |
JZ rel |
Переход,если аккумуляторравен нулю |
2 |
2/3 |
JNZ rel |
Переход,если аккумуляторне равен нулю |
2 |
2/3 |
CJNE A,direct,rel |
Сравнениеаккумуляторас прямо-адресуемымбайтоми переход, если не равно |
3 |
3/4 |
CJNEA,#data,rel |
Сравнениеаккумуляторас константой и переход,если не равно |
3 |
3/4 |
CJNE Rn,#data,rel |
Сравнениерегистрас константой и переход,если не равно |
3 |
3/4 |
CJNE @Ri,#data,rel |
Сравнениекосвенно-адресуемогобайтаОЗУ с константой и переход,если не равно |
3 |
4/5 |
DJNZRn,rel |
Декрементрегистраи переход,если не нуль |
2 |
2/3 |
DJNZ direct,rel |
Декрементпрямо-адресуемогобайтаи переход,если не нуль |
3 |
3/4 |
NOP |
Холостаякоманда |
1 |
1 |
Условныеобозначения:
Rn - РегистрR0-R7 выбранногобанкарегистров.
@Ri–ЯчейкаОЗУданных,адресуемаякосвенночерезрегистрыR0-R1
rel-8-битноесмещениесознаком(вдополнительномкоде)относительнопервогобайтаследующей команды.ИспользуетсякомандойSJMP и всемикомандамиусловныхпереходов.
direct-8-битныйадресячейкивнутреннегоОЗУданных.Этоможетбыть ячейкаОЗУданныхпрямого доступа(0x00-0x7F) или регистрспециальногоназначенияSFR(0x80-0xFF).
#data- 8-битнаяконстанта
#data16-16-битнаяконстанта
bit–Прямо-адресуемыйбитячейкиОЗУданныхили регистраспециальногоназначенияSFR.
addr11- 11-битный адресперехода,используемыйкомандамиACALL и AJMP.Переходдолжен осуществлятьсявпределахтой 2-Kбайтнойстраницыпамяти программ,вкоторойрасположен первыйбайтследующейкоманды.
addr16- 16-битный адресперехода,используемыйкомандамиLCALL и LJMP.Переходможет осуществлятьсявпределахвсего64-Kбайтногопространствапамяти программ.
Существуетодин неиспользуемыйкодоперации(0xA5),который исполняетсяаналогично командеNOP.
На всюмнемонику распространяетсяавторскоеправо©IntelCorporation1980.