Автор работы: Пользователь скрыл имя, 12 Ноября 2014 в 21:21, лабораторная работа
Цель работы: Получить практические навыки в программировании портов ввода-вывода микроконтроллеров с архитектурой PICmicro (Pic16f877a).
Лабораторная работа №4
ОРГАНИЗАЦИЯ ПОДСИСТЕМЫ ВВОДА-ВЫВОДА С ПАРАЛЛЕЛЬНЫМ ДОСТУПОМ
Цель работы: Получить практические навыки в программировании портов ввода-вывода микроконтроллеров с архитектурой PICmicro (Pic16f877a).
Ход работы:
Задание: min(PORT(A&E),PORTB-K),
Листинг программы:
list p=16f877a
#include<p16f877a.inc> ;
REZ1 EQU 0x23 ;ячейка хранения временного результата
REZ2 EQU 0x24 ;ячейка хранения временного результата
K EQU 0x22
TEMP1A EQU 0x25
TEMP2E EQU 0x26
RESULT EQU 0x27
org 0x00 ;Вектор сброса
reset ;операция сброс
goto start ;Переход на начало программы
org 0x04 ;Вектор начала программы
start
bcf STATUS,RP1
bcf STATUS,RP0 ;Выбор банка 0
movlw 0x06 ;заносим константу в аккумулятор
movwf ADCON0 ;Отключить модуль АЦП
bsf STATUS,RP0 ;Выбор банка 1
movwf ADCON1 ;Отключить модуль АЦП
bcf STATUS,RP0 ;Выбор банка 0
clrf PORTA ;Очистить PORTA
clrf PORTB ;Очистить PORTB
clrf PORTE ;Очистить PORTE
bsf STATUS,RP0 ;Выбор банка 1
movlw 0x3F ;Все выводы порта А на вывод
movwf TRISA
movlw 0xFF ;Все выводы порта В на вывод
movwf TRISB
movlw 0x7 ;Все выводы порта E на вывод
movwf TRISE
bcf STATUS,RP1 ;Выбор банка 0
bcf STATUS,RP0 ;Выбор банка 0
prog
movlw 0x13
movwf K
movfw PORTE ;заносим данные в порт Е
movwf TEMP2E ;временное хранилище порта Е
movfw PORTB
movfw PORTA ;заносим данные в порт А
movwf TEMP1A ;временное хранилище порта А
andwf TEMP1A,0 ;логическое И
movwf TEMP1A
RLF TEMP2E,1 ;сдвиг влево побитово
RLF TEMP2E,1
RLF TEMP2E,1
RLF TEMP2E,1
RLF TEMP2E,1
iorwf TEMP2E,0 ;логическое ИЛИ
movwf REZ2
movfw K
subwf PORTB,0
movwf REZ1
subwf REZ2,0
btfss STATUS,C ;проверка флага переноса на равенство 1, если не равно пропускаем
goto m1
goto m2
m1
movfw REZ2
movwf RESULT
movwf TEMP1A
movwf TEMP2E
movlw 1fh
andwf TEMP1A,1
bsf STATUS,RP0
movlw 0x00
movwf TRISA
bcf STATUS,RP0
movfw TEMP1A
movwf PORTA
movlw 0xE0
andwf TEMP2E,1
movfw TEMP2E
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
bsf STATUS,RP0 ;Выбор банка 1
movlw 0x00 ;Все выводы порта А на вывод
movwf TRISE
bcf STATUS,RP0
movfw TEMP2E
movwf PORTE
goto m3
m2
movfw REZ1
movwf RESULT
movwf TEMP1A
movwf TEMP2E
movlw 1fh
andwf TEMP1A,1
bsf STATUS,RP0
movlw 0x00
movwf TRISA
bcf STATUS,RP0
movfw TEMP1A
movwf PORTA
movlw 0xE0
andwf TEMP2E,1
movfw TEMP2E
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
RRF TEMP2E,1
bsf STATUS,RP0
movlw 0x00
movwf TRISE
bcf STATUS,RP0
movfw TEMP2E
movwf PORTE
goto m3
m3
nop
end
Рисунок 1 – Окно проекта
Рисунок 3.а – Порты входные данные
Рисунок 3.б – Порты результат
Рисунок 4 – Функциональные регистры
Рисунок 5- Stimulus
Рисунок 6- Файлы(данные в HEX )
Вывод: в ходе данной лабораторной работы я получил практические навыки в программировании портов ввода-вывода микроконтроллеров с архитектурой PICmicro (16f877a) и сделал выводы о плюсах и минусах различных систем ввода-вывода.
Информация о работе Организация подсистемы ввода-вывода с параллельным доступом