Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы_по_вариантам.doc
Скачиваний:
14
Добавлен:
23.04.2019
Размер:
281.09 Кб
Скачать
  1. Последовательный связной адаптер. Рассчитайте частоту кварцевого резонатора для обмена со скоростью 19 200 бод (для микроконтроллера с предельной частотой 12 мГц).

A: Fv=( fосц/12)*(2/64)*(1/(256-TH1))

Если говорить о 51-ом, то такую скорость не получить, т.к. если используется Т1 при такой частоте тактового генератора контроллера, то нет такого значения TH1.

2/32*(12МГц/(12*(256-TH1)))=BaudRate

1/16*(1000000/(256-TH1))=BaudRate

16*BaudRate=1000000/(256-TH1)

16*19200=1000000/(256-TH1)

256-TH1=1000000/(16*19200)=3,255

TH1=256-3.255=252.745

Ближайшее целое это 253, при этом скорость будет уже не 19200, а 20833 и работа, например, с компьютером без специальных средств невозможна (нестандартная частота).

А вообще если 19200, то частота будет 10/8*19200=24кГц (т.к. в простом случае боды это скорость передачи данных, а у нас на каждые 8 бит приходится еще 2 бита служебных стоп-старт битов, значит передаем 10, значит частота выше в 10/8 раза)

  1. Память. Способы доступа к внутренней памяти с адреса 80h по fFh

Ячейки с адресами 80h-FFh – 1 байт в области регистров специальных функций SFR. Допускают байтовую и побитовую адресацию. Используется лишь прямая адресация при обращении. Те ячейки памяти, которые не заняты регистрами, физически отсутствуют на кристаллах МК семейства 8051 при обращении к ним можно прочитать лишь команды возврата, косвенная в верхней области ОЗУ. Т.е. эти 2 области занимают одно и то же адресное пространство, хотя и разделены физически. В итоге к SFR прямая, а к памяти только косвенная!

  1. Порты. Напишите программу формирования одиночного импульса на выводе р1.0

CLR P1.0   // Сброс бита в 0

SETB P1.0   // Установка бита в 1

CLR P1.0

Вариант 15

  1. Модуль рса как генератор сигналов.

DSEG

PULSE EQU 2000

PAUSE EQU 8000

FLAG BIT 00h //привязывает следующую //команду жестко к памяти

CSEG

ORG 0000h

AJMP BEGIN

ORG 0033h

AJMP PCA_ISR

ORG 0100h

BEGIN: //настройка и запуск

MOV CL, #00h;

MOV CH, #00h;

MOV CMOD, #00h; //WDTE=0, //clock=fosc/12

MOV CCAPM0, #4Dh;

MOV CCAP0L, #LOW(PULSE)

MOV CCAP0H, #HIGH(PULSE)

SETB IE.6;

SETB IE.7;

SETB CCON.6; //запуск PCA массива (CR)

ORG 0200h

PCA_ISR:

CLR CCF0

PUSH ACC;

PUSH PSW;

JNB P1.3, MINUS //проверяем состояние бита

PULSE:

MOV A, CCAP0L;

ADD A, #LOW(PULSE); //при записи младшего байта

MOV CCAP0L, A; //компаратор выключается

MOV A, CCAP0H;

ADD A, #HIGH(PULSE);

MOV CCAP0H, A;

POP PSW;

POP ACC;

RETI; //иначе следующее прерывание не будет воспринято

MINUS:

MOV A, CCAP0L;

ADD A, #LOW(PAUSE); //каждый раз при прерывании

MOV CCAP0L, A; //проверяется состояние

MOV A, CCAP0H; //вывода P1.3 (программно)

ADD A, #HIGH(PAUSE); //если 1, то прибавляем

MOV CCAP0H, A; //длительность 8 мс

POP PSW; //если 0 – длительность импульса 2 мс

POP ACC;

RETI;