
- •2.Описание лабораторного стенда
- •3.Описание материнской платы
- •4.Использование пакета программ
- •4.1.Работа в интегрированной среде разработки Silicon Laboratories ide.
- •4.2.Пример работы с платой и ide.
- •5.Лабораторные работы
- •5.1.Работа №1 «Работа со светодиодным матричным дисплеем»
- •5.2.Работа №2 «Контроль температуры»
- •5.3.Работы №3,4 «Управление электродвигателями»
- •5.4.Работа №5 «Символьный экран и матричная клавиатура»
- •6.Описание встроенных периферии мк
- •6.1.Порты ввода/вывода. Матрица назначения выводов портов
- •6.1.1.Приоритетный декодер матрицы
- •6.1.2.Инициализация портов ввода/вывода
- •6.1.3.Порты ввода/вывода общего назначения
- •6.2.Таймеры/счетчики
- •6.2.1.Таймер 0 и Таймер 1
- •Режим 0: 13-разрядный таймер/счетчик
- •Режим 1: 16-разрядный Таймер/Счетчик
- •Режим 2: 8-разрядный таймер/счетчик с автоперезагрузкой
- •Режим 3: Два 8-разрядных таймера/счетчика (только Таймер 0)
- •6.2.2.Таймер 2
- •6.2.3.Таймер 3
- •6.3.Модули сравнения фиксации (программируемый массив счетчиков)
- •6.3.1.Таймер/счетчик модуля пмс
- •6.3.2.Модули захвата/сравнения
- •Режим захвата по фронту сигнала
- •Режим программного таймера (сравнения)
- •Режим высокоскоростного выхода
- •Режим выхода заданной частоты
- •Режим 8-разрядного широтно-импульсного модулятора
- •Режим 16-разрядного широтно-импульсного модулятора
- •6.3.3.Режим сторожевого таймера
- •Функционирование сторожевого таймера
- •Использование сторожевого таймера
- •6.4.Интерфейс spi
- •6.4.1.Описание сигналов
- •6.4.2.Функционирование spi0 в ведущем режиме
- •6.4.3.Функционирование spi0 в ведомом режиме
- •6.4.4.Источники прерываний модуля spi0
- •6.4.5.Тактирование
- •6.4.6.Регистры специального назначения модуля spi0
- •6.5.Интерфейс uart
- •6.5.1.Усовершенствованный режим генерации скорости передачи данных
- •6.5.2.Режимы работы uart0
- •6.6.Аналогово-цифровой преобразователь
- •6.6.1.Аналоговый мультиплексор
- •6.6.2.Режимы работы ацп0
- •Запуск преобразования
- •Режимы слежения
- •Время установления
- •6.6.3.Программируемый детектор диапазона ацп0
- •Детектор диапазона в однофазном режиме
- •Детектор диапазона в дифференциальном режиме
- •6.7.Цифро-аналоговый преобразователь
- •6.7.1.Обновление выходного сигнала цап0
- •Обновление выходного сигнала “по требованию”
- •Обновление выходного сигнала при переполнении таймера
- •Обновление выходного сигнала по фронту cnvstr
- •6.7.2.Форматирование входных данных цап
- •6.8.Генераторы
4.2.Пример работы с платой и ide.
В качестве примера приведем простейшую программу мигания светодиодом. Исходный код находится по следующему пути: «C:\SiLabs\MCU\Examples\C8051F36x\Blinky\F36x_Blinky.asm».
Скопируйте его в свой проект.
Рис. 4.8 Основное окно с загруженным проектом.
Данная программа – простейший пример программирования. Она управляет выводом порта (в данном случае P2.7), который подключается к светодиоду с помощью матрицы коммутации. Для соединения служит перемычка. В данном случае необходимо соединить гнездо P2.7 с гнездом LED3 для мигания третьим светодиодом (рис. 4.8).
Рис. 4.9 Матрица коммутации.
Листинг программы нужно скомпилировать, загрузить в плату, запустить и наблюдать за результатами работы программы.
Листинг программы с краткими объяснениями:
$NOMOD51
$include (c8051f360.inc) ;Подключаем заголовочный файл, в котором
;определяются регистры МК.
;------------------------------------------------------------------------------
; EQUATES
;------------------------------------------------------------------------------
GREEN_LED equ P2.7 ;Вывод P2.7 сопоставляется имени
;GREEN_LED
;------------------------------------------------------------------------------
; RESET and INTERRUPT VECTORS
;------------------------------------------------------------------------------
; Reset Vector
cseg AT 0
ljmp Main ;Сегмент кода начинается с прыжка на метку Main
;------------------------------------------------------------------------------
; CODE SEGMENT
;------------------------------------------------------------------------------
Blink segment CODE
rseg Blink ;Выбор регистрового банка 0, который используется
using 0 ;в основной программе
Main:
;Отключение сторожевого таймера
anl PCA0MD, #NOT(040h) ;Очистка Watchdog Enable bit
;Переключение на SFR-страницу Configuration Page
mov SFRPAGE, #CONFIG_PAGE
;Включение коммутационной матрицы портов ввода/вывода
mov XBR1, #40h ;Включение матрицы
orl P3MDOUT, #04h ;Перевод выхода на светодиод в режим
;push-pull
; Сброс светодиода
clr GREEN_LED
;Простой цикл задержки
Loop2: mov R7, #03h
Loop1: mov R6, #00h
Loop0: mov R5, #00h
djnz R5, $
djnz R6, Loop0
djnz R7, Loop1
cpl GREEN_LED ;Переключение светодиода
jmp Loop2
;------------------------------------------------------------------------------
; End of file.
END
Приступаем к отладке программы. Основные способы отладки это выполнение программы в пошаговом режиме и расстановка точек останова.
Рис. 4.10 Метка напротив текущей команды.
После компиляции и загрузки программы в МК, в главном окне появляется синяя метка (рис. 4.9) напротив той строки кода, с которой начнется выполнение программы. Естественно, что после остановки программы (красной кнопкой Stop)метка переместится в другое место, т.к. остановка произойдет в случайное время.
При
пошаговой отладке кнопками
синяя метка будет смещаться по строчкам
с операндами, отмечая текущую команду,
которая будет выполнена далее.