ЛАБЫ

Команды передачи данных (Лабораторная работа)

 

Цель работы: рассмотреть набор команд передачи данных и изучить особенности их применения.

 

Теоретические сведения

MOVF f,d - Переслать f

MOVWF f - Переслать W в f

BCF f,b - Очистить бит b в регистре f

BSF f,b - Установить бит b в регистре f

GOTO k - Безусловный переход

MOVLW k - Переслать константу в W

RETFIE - - Возврат из подпрограммы с разрешением прерываний

Если d=0, результат сохраняется в регистре W. Если d=1, результат сохраняется в регистре 'f'.

PORTA – 8-разрядный порт ввода вывода. RA4 имеет триггер Шмидта на входе и открытый сток на выходе, мультиплицирован с тактовым входом T0CKI. RA5 имеет триггер Шмидта на входе, без выходного буфера. Все остальные каналы PORTA имеют триггер Шмидта на входе и полнофункциональные выходные КМОП буферы.

Все каналы PORTA имеют соответствующие биты направления в регистре TRISA, позволяющие настраивать канал как вход или выход.

Запись ‘1’ в TRISA переводит соответствующий выходной буфер 3-е состояние. Запись ‘0’ в регистр TRISA

определяет соответствующий канал как выход, содержимое защелки PORTA передается на вывод микроконтроллера.

Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все

операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку.

Каналы PORTA мультиплицированы с модулем компараторов и источником опорного напряжения. Настройка работы этих периферийных модулей определяется битами в регистрах CMCON (управляющий регистр компаратора) и VRCON (управляющий регистр источника опорного напряжения). Когда компаратор включен, чтение состояние выводов PORTA будет давать результат ‘00’.

PORTB – 8-разрядный двунаправленный порт ввода/вывода. Биты регистра TRISB определяют направление каналов порта. Установка бита в ’1’ регистра TRISB переводит выходной буфер в 3-е состояние. Запись ‘0’ в регистр TRISB настраивает соответствующий канал как выход, содержимое защелки PORTB передается на вывод микроконтроллера.

Выводы PORTB мультиплицированы с внешним входом прерываний, USART, CCP модулем и входом тактового сигнала для TMR1.

 

 

Задание

  1. Разрешить прерывание от таймеров 1 и 2, от приёмника USART, внешнее прерывание, прерывание от периферийных модулей и установить бит глобального прерывания.
  2. Необходимо включить подтягивающие резисторы на входах PORTB, установить в качестве активного фронта на входе внешнего прерывания передний фронт, а также необходимо включить предделитель перед таймером 0 с коэффициентом предделения 64.
  3. Получить флаги разрешённых прерываний и сохранить их, начиная с адреса 40h.
  4. Настроить младшую половину PORTA и старшую половину PORTB на выход, а остальные на вход.
  5. Выдать на младшую половину PORTA значение «1101» и на старшую половину PORTB – «0110».

 

Выполнение работы

 

Листинг 1. Код программы

processor PIC16F627

 #include P16f627.inc

 radix dec

 

 temp equ 0x20

 

 org 0x00

 goto main

 

 org 0x04

 goto services

 

main

 ;(1)разрешение прерываний

 ;пересылка в PIE1

 bcf STATUS, RP1

 bsf STATUS, RP0 ;выбор 1 банка памяти

 movlw b'00101011'

 movwf PIE1

 ;пересылка в INTCON

 movlw b'11010000'

 movwf INTCON

 

 ;(2)включение различных опций

 ;пересылка в OPTION

 movlw b'01000101'

 movwf OPTION_REG

 

 ;(3)запись флагов прерываний в память

 bcf STATUS, RP0 ;выбор 0 банка памяти

 movf PIR1, w

 movwf 40h

 movf INTCON, w

 movwf 41h

 

 ;(4)пересылка в TRISA & TRISB

 movlw 07h

 movwf CMCON ;выключение компаратора

 bsf STATUS, RP0 ;выбор 1 банка памяти

 movlw b'11110000'

 movwf TRISA

 movlw b'00001111'

 movwf TRISB

 

 ;(5)пересылка в PORTA & PORTB

 bcf STATUS, RP0 ;выбор 0 банка памяти

 movlw b'00001101'

 movwf PORTA

 movlw b'01100000'

 movwf PORTB

 

 goto main

services

 retfie

 

 end

 

 

Выводы

В ходе лабораторной работы мы ознакомились c рядом команд передачи данных и изучили особенности их применения. Также были изучены особенности работы с портами ввода/вывода и банками памяти. Была написана программа реализующая передачу данных различными командами и удовлетворяющая поставленному заданию.