Mcs 51 примеры программ

На этой страничке лежат мои старые проекты.

отлаженная схема преобразователя DC 12 В >> DC 300 В, со стабилизацией, в формате ACCEL EDA 14

сервисный интерфейс к пейджинговому передатчику с использованием АЦП AD7858 (восьмиканальный, с последовательным интерфейсом). Там же принципиальная схема в формате Corel Draw 5.

работа микропроцессора AT89C1051 в качестве slave-устройства на шине I2C, но: кривовато, не хватает быстродействия

работа с микросхемами энергонезависимой памяти по шине I2C

регулятор напряжения для паяльника на AT89C2051 (. )

программа загрузчика для самодельного эмулятора 80C31

программирование микросхем 24Cxx с интерфейсом I2C через порт LPT компьютера

программа для домофона

тоже программа для домофона, но звук ДИН-ДОН генерируется с помощью ШИМ

программатор для микросхем KeeLoq (брелки для автомобильных сигнализаций с прыгающим кодом). Сам программатор выполнен на AT89C2051, работает через RS232 с компьютерной программой.

8051 Microcontroller — обзор приложения

принципиальная схема и разводка печатной платы программатора kl1.arj в формате MicroSim Design Center 8

интегрированное управление системой телевизионного наблюдения (поворот камер, управление видеокоммутатором ROBOT).

принципиальная схема и разводка печатной платы приёмника DTMF для tele2.arj (подключение удалённого пульта управления) в формате Corel Draw 5.

удалённый пульт управления для tele2.arj. Сам пульт — обыкновенная PC-клавиатура, подключенная напрямую к AT89C52. Управляющая информация передаётся в линию с помощью DTMF (генерация ШИМ).

тот же пульт управления, но реализованный с помощью компьютера. Для передачи информации в кодер DTMF (на AT89C2051) используется RS232.

простой пример написания DOS-драйвера

редактор основной (conventional) памяти AT-совместимого компьютера

ASM8086 + Borland C

генерация DTMF с использованием LPT, ЦАП на резисторах и прерываний таймера

ASM8086 + Borland C

проигрывание звуков (wav без заголовков) через LPT и ЦАП на резисторах.

старая и новая версии программы-загрузчика для эмулятора ПЗУ (Borland C). Эмулятор собран с использованием макетной платы, вставляемой в шину ISA, эмуляционная память встраивается в адресное пространство convertional-памяти AT-совместимого компьютера с адреса D0000H.

программатор ПЗУ, собранный на той же макетной плате. Но здесь обмен данными уже происходит через порты ввода/вывода

формирование частотных таблиц для номерных фильтров в программе радиотелефона «Волемот-АРС»

ASM8086 + Borland C

работа с портом RS232 через прерывания — чтение данных от мышки

проверка микросхем статической памяти 62256 с помощью псевдослучайной последовательности

автономный программатор/считыватель микросхем X24022 (интерфейс I2C). Индикация режимов с помощью азбуки Морзе (!)

электронный замок с использованием ключей-таблеток iButton фирмы Dallas Semiconductor.

пример декодирования DTMF

Устройства интерфейса микроконтроллеров семейства MCS-51

приставка для радиотелефона «Алтай-3С», схема и разводка печатной платы приставки в формате Corel Draw 5

программа для радиотелефона «Волемот-АРС»

тоже программа для радиотелефона «Волемот-АРС», но с возможностью изменения АОНа с клавиатуры

система подключения сигнализации «Vista-10» к компьютеру, схема этой системы в формате Corel Draw 5

подключение сотового телефона NOKIA (аналоговой системы NMT450) к телефонной сети

приставка для радиотелефона «Волемот-АРС», схема и разводка печатной платы приставки в формате Corel Draw 5

декодирование POCSAG с использованием фазовой подстройки частоты. Этот пример скачан откуда-то из Интернет (не проверял).

кодер POCSAG, схема и разводка печатной платы кодера POCSAG (ps9_1.arj) в формате MicroSim Design Center 8. В эпоху популярности пейджинга этот кодер трудился в Калуге, в Обнинске и в Останкино (Москва).

пейджинговый ретранслятор, расчёт низкочастотного фильтра для пейджингового ретранслятора

схема и разводка печатной платы пейджингового ретранслятора r20.arj в формате ACCEL EDA 14

то же самое, но в формате MicroSim Design Center 8

проверка работы алгоритма BCH коррекции ошибок пейджингового ретранслятора r20.arj

тестовая программа для пейджингового ретранслятора r20.arj

программа для радиотелефона «Алтай-СП»

старая версия приставки для радиотелефона «Алтай-СП» (импульсный набор цифр)

более новая версия приставки для радиотелефона «Алтай-СП» (тональный набор цифр)

схема и разводка печатной платы приставки prist.arj в формате Corel Draw 5

Примечание: в столбце 2 MCS51 означает микропроцессор типа 8751H, AT89С51 или 8031(наш КР1830ВЕ31), Delphi — программа для компьютера IBM PC (486 и выше), 8080 — процессор типа 8080 (наш КР580ВМ80), ASM8086 — ассемблер процессора 8086 (и выше), Borland C — язык Си фирмы Borland (откомпилировано для DOS).

Источник: microsin.net

Арифметические операции в MCS -51

В данном курсовом проекте рассматриваются практические примеры и их программная реализация на языке ассемблера для микроконтроллера семейства MCS-51 (МК51).

При рассмотрении решения задач, связанных с генерацией временных интервалов и работой последовательного порта предполагается использование МК с частотой задающего генератора равной 12 МГц.

Читайте также:
Что такое воспитательная программа классного руководителя

Использование команд передачи данных

Пример 1. Передать содержимое буфера последовательного адаптера в резидентную память данных по косвенному адресу в R0:

Пример 2. Записать в ячейки РПД с адресами 39 и 40 число FA1BH:

LOAD: MOV 39H,#0FAH

Пример З. Загрузить в указатель данных начальный адрес 4300Н массива данных, расположенного во внешней памяти данных:

MOV DPTR,#4300Н ; загрузка начального значения указателя данных.

Пример 4. Загрузить управляющее слово в регистр управления таймером:

MOV TCON,#00000101В; разрешение внешних прерываний по низкому уровню сигнала.

Пример 5. Сбросить все флажки пользователя (биты) в резидентной области памяти от 20Н до 2FH:

MOV R0,#20Н ; заданный начальный адрес области памяти

MOV Rl,#0FH ; загрузить счетчик (длина области памяти)

INC R0 ; переход к следующему байту

DJNZ R1, LOOP ; цикл, если не все флажки сброшены

Пример 6. Передать управление по метке L0, если счетчик 0 достиг значения 128:

MOV A, TL0 ; передача содержимого счетчика в аккумулятор

JB А.7, L0 ; перейти на L0, если А.7=1

L0: ; продолжение программы

Пример Запомнить во внешней памяти данных содержимое регистров
банка 0. Начальный адрес ВПД – 2000Н:

MOV PSW,#00010000B; выбор банка регистров 1

MOV R0,#8 ; счетчик 8

MOV DPTR, #2000H; определение начального адреса ВПД

MOV Rl,#0 ; определение начального адреса РПД

INC Rl ; переход к следующему регистру

INC DPTR ; приращение указателя адреса

DJNZ R0, LOOP ; R0=R0–1, если R0>0 то повторить цикл

Пример 8. Обращение к памяти программ, где сохраняется готовая таблица значений. Для этого используется специальная команда MOVC. Например: программа для выбора значений функции синуса из таблицы с точностью 0,4% и дискретом 1°. Начальный параметр для подпрограммы есть значения угла х, которое находится в аккумуляторе. Данная программа работает без указателя данных DPTR.

Инкремент аккумулятора перед обращением к таблице необходим в связи с использованием однобайтной команды возврата. Таблица синусов занимает в памяти 90 байтов.

; вычисление sin(x) по таблице значений: вход (А)(х), хÎ(0,89°);

; выход (А) дробная часть значения синуса

SIN: INC A ; инкремент аккумулятора

SINUS: DB 00000000В; SIN (0)=0

DB 00000100В ; SIN (1)=0,017 DB 00001001В; SIN (2)=0,035

DB 11111111В ; SIN (89)=0,999

Пример 9. Операции со стеком и организация прерываний. Механизм доступа к стеку MCS-51: перед записью в стек содержимое регистра-указателя стека SP инкрементируется, а после чтения данных из стека декрементируется.

После начальной установки ОМЭВМ в SP заносится начальное значение 07Н. Для переопределения начального значения SP можно использовать команду MOV SP, #data16.

Таким образом, стек может быть расположен в любом месте РПД. Стек используется для организации обращения к подпрограммам и при обработке прерываний. Кроме того, может использоваться для временного хранения значений регистров специальных функций.

Подпрограмма обработки прерываний.

ORG 3 ; задание адреса вектора прерываний

SJMP SUBINO ; переход на подпрограмму обработки

SUBINO: PUSH PSW ; сохранение в стеке PSW

PUSH A ; сохранение в стеке аккумулятора А

PUSH В ; сохранение в стеке дополнения-аккумулятора В

PUSH DPL ; сохранение в стеке DPTR

PUSH DPH ; сохранение в стеке DPTR

MOV PSW,#00001000B; выбор другого банка регистров (1)

POP DPH ; восстановление DPTR

POP DPL ; восстановление DPTR

POP В ; восстановление В

POP A ; восстановление аккумулятора

POP PSW ; восстановление PSW и банка регистров 0

RETI ; возвращение в основную программу

Если SP=1FH, размещение регистров в стеке после входа в подпрограмму обработки будет таким, как показано на рис. 1.

Рисунок 1 – Распределение памяти при вызове подпрограммы

Пример 10. Передать управление одной из восьми подпрограмм при появлении нулевого уровня на соответствующем входе порта 1. Высший приоритет входаР1.3.

ORL P1,#FFH ; настройка Р1 на ввод

L1: MOV А, Р1 ; ввод данных из порта

CPL А ; инверсия аккумулятора

JZ L1 ; ожидание появления первого нуля

JNB Р1.3, SUBR1; переход на первую подпрограмму

JNB P1.4, SUBR2; переход на вторую подпрограмму

JNB P1.2, SUBR8; переход на восьмую подпрограмму

Порядок приоритетов определяется порядком проверки нулевого уровня на соответствующем входе и может быть любым.

Арифметические операции в MCS -51

Пример 11. Сложить десятичные двоично-кодированные числа, размещенные в А и R5:

ADD A, R5 ; двоичное сложение

DA A ; десятичная коррекция результата

Пример 12. Вычитание байтов. Данная операция может выполняться двумя способами: 1) перевести уменьшаемое как отрицательное в дополнительный код и выполнить операцию добавления; 2) перевести уменьшаемое в обратный код и произвести инверсию суммы.

Читайте также:
Как узнать установлена ли на телефоне программа прослушки

Например, из данных в А необходимо отнять данные регистра R3. Вычитание выполняем по алгоритму:

А

CPL A ; инверсия аккумулятора

ADD A, R3 ; добавление байтов

CPL A ; получение разности

Пример 13. Сложить два двоичных многобайтных числа. Оба слагаемых находятся в РПД, начиная из младшего байта. Начальный адрес слагаемых находится в R0 и R1, формат в R2. Результат размещают на месте первого слагаемого.

CLR С ; сбрасывание переноса

INC R0 ; смещение указателя

INC Rl ; смещение указателя

DJNZ R2, LOOP ; цикл, если не все байты просуммированы

Время суммирования составляет (1+7N) мкс, где N – длина в байтах.

Пример 14. Перемножить число в аккумуляторе на число 2 х , где х ≤ 8 – значение в R6. Умножение на 2 заменяется арифметическим сдвигом аккумулятора и R0:

MOV R0,#0 ; сброс R0

CLR С ; сброс переноса

LI: RLC А ; сдвиг влево 16-разрядного данного в А и R0

DJNZ R6, L1 ; цикл

Пример 15. Умножение (MUL). Выполняется для двух беззнаковых чисел, которые находятся в регистрах А и В. После выполнения операции младший байт произведения размещается в А, а старший – в В.

Умножение числа любого формата на константу 168. Число размещено в РПД, адрес младшего байта находится в R0. Формат числа в байтах задан в R2.

MOV А,#00Н ; сброс аккумулятора А

MOV B,#168D ; загрузка множителя

MUL AB ; перемножение

INC R0 ; прирост адреса

MOV А, В ; пересылка старшего байта частичного произведения в аккумулятор А

JNZ R2, LOOP ; цикл, если не все байты начального числа перемноженные на константу.

Полученный результат находится на месте начального числа и занимает в РПД на 1 байт больше. Время вычисления произведения составляет (1+13N) мкс, где N – длина числа в байтах.

Пример 16. Деление (DIV) – делится содержимое аккумулятора на значение в В. После деления в А находится целая часть, в В-остаток. Команда может быть использована для быстрого преобразования двоичного числа в двоично-десятичный формат.

Программа переводит двоичное число, находящееся в аккумуляторе, в двоично-десятичный код, который может быть трехразрядным (в десятичной системе счисления). В этом случае число сотен будет размещено вR0, десятки и единицы – соответственно в А и В.

MOV B,#100D ; (B) 100 для вычисления числа сотен в числе

DIV AB ; в А є число сотен (то есть старшая цифра)

MOV R0, A ; пересылка в R0 старшей цифры

ХСН А, В ; пересылка остатка от деления входного числа в А

MOV B,#10D ; (В)10 (определяется число десятков в числе)

DIV AB ; в А – число десятков, В-число единиц

SWAP A ; размещение числа десятков в старшей тетраде А

ADD А, В ; суммирование остатка (числа единиц) аккумулятор сохраняет две младших цифры.

Время преобразования – 16 мкс.

Пример 1 Сравнение двух четырехразрядных чисел, которые подаются на входы порта Р2.

Сигнал равенства выводится на Р1.1, большее – Р1.2, меньшее – Р1.3, разрешение сравнения подается на Р1.0.

ANL P1,#11110001В ; сброс всех сравнений

L0: JNB Р1.0, L0 ; ожидание разрешения

ANL A,#F0H ; выделение первого числа

MOV В, A ; запоминание первого числа

CLR C ; сброс переноса

ANL A,#0FH ; выделение второго числа

SUBB А, В ; вычисление В

JZ LR ; переход, если А=В

JC LL ; переход, если А

SETB P1.2 ; результат А>В

LR: SETB P1.1 ; результат А=В

LL: SETB P1.3 ; результат А

EXIT: ; продолжение выполнения программы

Аналогично выполняется сравнение чисел большей разрядности. Если необходимо сравнивать многобайтные числа, то сравнение следует начинать со старших байтов.

Популярное:

Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы.

Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас.

Почему стероиды повышают давление?: Основных причин три.

Почему 1285321 студент выбрали МегаОбучалку.

Система поиска информации

Источник: megaobuchalka.ru

Программирование микроконтроллеров mcs-51

Допущено Министерством образования Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки бакалавров и магистров «Проектирование и технология электронных средств»

Рецензенты: кафедра вычислительной техники и защиты информации Уфимского государственного авиационного технического университета (зав. кафедрой д-р техн. наук, профессор В.И.Васильев); кафедра радиотехники Ульяновского государственного технического университета (зав. кафедрой канд. техн. наук, профессор Н.А.Трефилов); канд. техн. наук, с.н.с. Г.П.Токмаков

Читайте также:
Лучшие программы для обработки звука на ПК

А65 Программирование микроконтроллеров MCS-51: Учебное пособие. — Ульяновск: УлГТУ, 2000. — 88 с.

Учебное издание

АНДРЕЕВ Дмитрий Васильевич

ПРОГРАММИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ MCS-51

Изд. лиц. 020640 от 22.10.97. Подписано в печать 22.02.00. Формат 60х84/16.

Бумага писчая. Усл. печ. л. 5,12. Уч.-изд. л. 5,00. Тираж 200 экз. Заказ

Ульяновский государственный технический университет,

432027, Ульяновск, Сев. Венец, 32.

Типография УлГТУ, 432027, Ульяновск, Сев. Венец, 32.

Предисловие

Эффективная автоматизация машин, приборов и технологического оборудования, которая является обязательным условием ускорения научно-технического прогресса, основана на широком применении средств микропроцессорной техники (МТ). Автоматизация с использованием микропроцессоров (МП) и микроконтроллеров (МК) быстро распространяется в самых разнообразных отраслях народного хозяйства, охватывает новые сферы.

Характерно, что создание микропроцессорных устройств и систем все в большей степени становится функцией специалистов в конкретной предметной области, а не профессиональных программистов и специалистов по вычислительной технике. Это вызывает большую потребность в инженерных кадрах, которые, кроме своей предметной области, дополнительно разбираются в микропроцессорной технике.

Как известно, МТ состоит из двух специфических частей: аппаратурных средств (АС) и прикладного программного обеспечения (ППО). При этом, рассматривая общий процесс проектирования МТ, можно отметить, что в большинстве случаев доля общей трудоемкости разработки ППО значительно превосходит трудоемкость разработки АС.

Указанное обстоятельство объясняется тем, что разработка аппаратурной части МТ на базе типовых микропроцессорных БИС сводится (чаще всего) к выполнению стандартных операций в соответствии с рекомендациями, изложенными в технической документации на используемые БИС. Совсем по-другому выглядит инженерный труд при разработке ППО. Проектная работа носит здесь творческий характер, изобилует решениями, имеющими «волевую» или «вкусовую» окраску, и решениями, продиктованными конъюнктурными соображениями. В силу перечисленных обстоятельств именно при проектировании ППО разработчик сталкивается с наибольшим количеством проблем и от того, как они будут решены, зависит успех разработки МТ в целом. Таким образом, весьма актуальным представляется ориентация будущих инженеров на более глубокое изучение вопросов, связанных именно с программированием МТ, в частности языков программирования, средств автоматизации программирования (ассемблеров, компиляторов с языков высокого уровня, линкеров и др.), структурных особенностей микропроцессорной элементной базы.

Одной из наиболее популярных и перспективных микропроцессорных БИС является однокристальный микроконтроллер семейства MCS-51.

СОСТАВ СЕМЕЙСТВА MCS-51

Несмотря на появление 16- и 32-разрядных микроконтроллеров и микропроцессоров, наибольшая доля мирового микропроцессорного рынка остается за 8-разрядными МК. Согласно данным компании Semico Research Corp., в 1996 году общий мировой объем продаж микроконтроллеров всех типов составил 11,4 миллиарда долларов, при этом 5,56 миллиарда долларов (или 48,8%) пришлось на долю 8-разрядных кристаллов, что примерно в 2,5 раза больше объема продаж ближайшего конкурента — 16-разрядных микроконтроллеров (2,1 млрд. долл.). Прогнозы аналитических компаний на период до 2001 года показывают, что лидирующее положение 8-разрядных МК на мировом рынке сохранится.

Среди всех 8-разрядных микроконтроллеров семейство MCS-51 является несомненным чемпионом по количеству компаний, выпускающих его модификации. Важную роль в достижении такой высокой популярности сыграла открытая политика фирмы Intel, родоначальницы этого семейства, направленная на широкое распространение лицензий на ядро MCS-51 среди большого количества ведущих полупроводниковых компаний мира.

В результате на сегодняшний день существует более 200 модификаций микроконтроллеров семейства MCS-51, выпускаемых почти 20-ю компаниями. Эти модификации включают в себя кристаллы с широчайшим набором периферии: от простых 20-выводных МК с одним таймером и резидентной памятью программ (РПП) объемом 1 Кбайт до сложнейших 100-выводных кристаллов с 10-разрядными АЦП, массивами таймеров/счетчиков, аппаратными 16-разрядными умножителями и резидентной памятью программ до 64 Кбайт. Каждый год появляются все новые варианты представителей семейства MCS-51, основными направлениями развития которого являются: увеличение быстродействия (за счет повышения тактовой частоты и (или) переработки архитектуры), снижение напряжения питания и потребления, увеличение объема РПП и резидентной памяти данных (РПД), реализация РПП на основе FLASH технологии с возможностью внутрисхемного программирования, введение в состав периферии микроконтроллера сложных устройств: системы управления приводами, CAN и USB интерфейсов и т.п.

Основными производителями модификаций 51-го семейства в мире являются фирмы Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Winbond, Silicon Systems и ряд других. В рамках данной главы невозможно рассказать о всех представителях семейства MCS-51 и всех компаниях-производителях микроконтроллеров указанного семейства. Все фирмы, о которых далее пойдет речь, имеют в России своих официальных дистрибьюторов, и, соответственно, микроконтроллеры этих фирм являются реальными кандидатами на применение в российских проектах.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru