• RDRIV (Reduced DRIVe Register) — регистр выбора режима работы выходных каскадов с пониженными выходными токами. Формат регистра также представлен на рис. 4.8. Как следует из рис. 4.8, в МК B32 этот режим также доступен только для портов PORT A, PORT B и PORT E. В МК иных моделей этой функцией могут обладать также и другие порты. Если функция для порта разрешена установкой разряда RDPx в 1, то при конфигурировании какой либо линии порта на вывод ее выходной ток снижается с 0,6 мА до 0,3 мА.
• PEAR (Port E Assignment Register) — регистр выбора назначения линий порта Port E. Отдельные биты этого регистра (рис. 4.8) позволяют назначить линии альтернативную функцию или функцию линии ввода/вывода общего назначения.
1. Сколько портов ввода/вывода в МК B32?
Ответ: МК B32 имеет в своем составе восемь 8 разрядных портов (A, B, E, AD, T, S, P, DLC).
2. Какие альтернативные функции реализуют порты AD, T, S, P, DLC?
Ответ: Линии порта AD служат аналоговыми входами встроенного АЦП, порт T используется модулей таймера, на выходах порта P формируются ШИМ сигналы, порт S обслуживает контроллера последовательного ввода/вывода SCI и SPI.
3. Каково назначение регистра направления передачи порта?
Ответ: Каждый разряд этого порта определяет направление передачи соответствующей линии порта.
4. В какое состояние устанавливается регистр направления передачи во время сброса МК?
Ответ: Сбрасывается, т.е. устанавливается в 0. При этом все линии портов конфигурируются на ввод.
В этом примере мы подключили в порту PORTA группу зеленых и красных светодиодов. Схема подключения показана на рис. 4.9. Мы обсудим эту схему подробно в гл.5. А сейчас лишь договоримся, что если на линии порта установлена 1, то будет гореть зеленый светодиод, если логический 0 — то красный светодиод. А если линия порта переведена в состояние ввода, т.е. она представляется для цепи светодиодов нагрузкой с высоким входным сопротивлением, то оба светодиода окажутся погашенными. На рис. 4.10 приведена блок-схема алгоритма программы, которая зажигает на 30 мс зеленым цветом светодиоды с четными номерами и одновременно красным цветом светодиоды с нечетными номерами. Следующие 30 мс светодиоды «меняются цветами», далее этот процесс продолжается до бесконечности. Ниже приведен текст программы на языке Си, который реализует этот алгоритм.
Рис. 4.9. Схема отображения состояния порта PORTA
Схема содержит 8 идентичных светодиодных индикаторов для логических выходов с тремя состояниями. Индикатор каждого разряда состоит из двух светодиодов: зеленого и красного. Если на выходе порта PORTA[i] логическая 1,то светится зеленый светодиод, если логический 0 — то красный. Если линия порта PORTA[i] настроена на ввод, то ни один из светодиодов этого разряда порта не светится.
Рис. 4.10. Блок схема алгоритма управления светодиодами
/*----------------------------------------------------------------------*/
/* МAIN PROGRAМ: Эта программа зажигает на выходах порта PORTA */
/* 30 мс зеленым цветом горят светодиоды на выходах порта с четными */
/* номерами, красным цветом –светодиоды на выходах порта с нечетными */
/* номерами. Следующие 30 мс на месте зеленых горят красные, и наоборот */
/*----------------------------------------------------------------------*/
/*подключаемые файлы*/
#include <912b32.h>
/*используемые функции*/
void delay_100us(void);
void delay_30ms(void);
void main{void) {
DDRA = 0xFF; //установить порт PORTA на вывод
while(1) {
PORTA = 0x55;
delay_30ms;
PORTA = 0xAA;
delay_30ms;
}
}
/*-----------------------------------------------------------------------*/
/* Функция delay_30ms формирует задержку в 30 мс, частота тактирования */
/* межмодульных магистралей МК составляет 8 МГц */
/*-----------------------------------------------------------------------*/
void delay_30ms(void) {
int i;
for (i=0; i<=299; i++) delay_100us;
}