Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медприборы_лб1.doc
Скачиваний:
22
Добавлен:
09.04.2015
Размер:
256.51 Кб
Скачать

2.3. Содержание работы.

В данной работе осваивается применение основных функций меню Mplab с использованием готовых текстов программ. Отраба­тывается практика создания новых проектов на примере работы с этими текстами, запус­ка проектов и проверки их работы. При этом выполняется просмотр и модификация отдельных строк программ в режиме симуляции. Создаются новые программы путем внесения изменений в имеющиеся.

2.4. Порядок выполнения работы.

2.4.1. Домашняя подготовка к работе.

- изучить лекционный материал по PIC-контроллерам: организацию памяти контроллера PIC16C8X, систему его команд, структуру и принципы работы встроенных периферий­ных устройств и их про­грам­ми­рования (портов, таймеров и пр.),

- ознакомиться с готовыми программами и написать новые в соответствии со следующим заданием.

2.4.2. Домашнее задание.

2.4.2.1.Изучить тексты готовых программ Lb1_1.doc, Lb1_2.doc, Lb1_3.doc и написать к ним комментарии.

2.4.2.2. Модифицировать программу Lb1_1.doc:

- Добавить перед циклом записи данных в порт В фрагмент опроса порта А с проверкой установки одного из его разрядов в 1 (по на­жатию кнопки). Повторять опрос, пока 1 не установлена. При установке 1 перенастроить порт А на запись и переслать в него число 1Ch. Полученной программе присвоить имя Lb1_1m.doc.

2.4.2.2. Модифицировать программу Lb1_2.doc:

- Изменить делитель таймера на 1:128. Реализовать задержку, равную 20 мс, вместо имеющейся. Тактовая частота процессора 4 МГц, (таймер в режиме внутреннего тактирования). Присвоить новой программе имя Lb1_2m.doc.

2.4.2.3. Модифицировать программу Lb1_3.doc:

- Вместо пересылки данных из массива в порт В запрограммировать пересылку данных из порта В в массив IZM(15) в память данных, начиная с адреса, соответствующего началу ее свободной области.

Присвоить новой программе имя Lb1_3m.doc.

;Программа Lb1_1.asm. Запись в порт В по таймеру TMR0.

# INCLUDE "P16F84.INC"

LIST P=16F84

__CONFIG 3FFBh

ORG 20H

.UATA

COUNT1 RES 1

.CODE

ORG 05H

MOVLW 0FFH

MOVWF COUNT1 ; СЧЕТЧИК=256

CLRF PORTB ;ОБНУЛИТЬ PORTB

BSF STATUS,5 ;БАНК1

CLRF TRISB ;ЗАПИСЬ В PORTB

MOVLW 88H ;РЕЖИМЫ

MOVWF OPTION_REG

BCF STATUS,5 ;БАНК0

M20: INCF PORTB,1 ;PORTB=1

CLRF TMR0 ;TMR0=0

M10: BTFSS INTCON,2 ;ФЛАГ TOIF=1 ?

GOTO M10 ;TOIF=0,ВОЗВРАТ

CLRF PORTB ;PORTB=0

BCF INTCON,2 ;СБРОС ФЛАГА TOIF

DECFSZ COUNT1 ;COUNT=0 ?

GOTO M20 ;COUNT NOT 0,ЦИКЛ

RETURN ;COUNT=0

END

;ПРОГРАММА Lb1_2.asm. Запись данных в порт В из массива,

; размещенного в памяти программы

#INCLUDE "P16F84.INC"

LIST P=16F84

__CONFIG 3FFBh

ORG 20H

.UDATA

COUNT1 RES 1

COUNT2 RES 1

COUNT3 RES 1

.CODE

ORG 00H

BSF STATUS,5

CLRF TRISB ; НАСТРОЙКА ПОРТА В НА ЗАПИСЬ

MOVLW 08H

MOVWF OPTION_REG ;РЕЖИМ ТАЙМЕРА И ДЕЛИТЕЛЯ

BCF STATUS,5 ;БАНК 0

MOVLW 1EH

MOVWF COUNT3 ;КРАТНОСТЬ ВЫВОДА МАССИВА ДАННЫХ

M30: MOVLW 0AH

MOVWF COUNT2 ;ЧИСЛО ЭЛЕМЕНТОВ МАССИВА

CLRF COUNT1 ;ТЕКУЩИЙ НОМЕР ЭЛЕМЕНТА МАССИВА

;(СМЕЩЕНИЕ К АДРЕСУ)

M10: CLRW

ADDWF COUNT1,0 ;УСТАНОВИТЬ НОМЕР ЭЛЕМЕНТА ;МАССИВА

CALL MASSIV ;ВЫЗОВ ПОДПРОГРАММЫ MASSIV

MOVWF PORTB ;ЗАПИСЬ В ПОРТ

INCF COUNT1,1 ;УВЕЛИЧИТЬ НА 1 НОМЕР ЭЛЕМЕНТА

;МАССИВА

MOVLW 0E6H

MOVWF TMR0 ;TMR0=E6,ЗАПУСК ТАЙМЕРА,

;СЧЕТ 25 ТИКОВ

M20: BTFSS INTCON,2 ;ФЛАГ TOIF=1 ?

GOTO M20 ;TOIF=0,ВОЗВРАТ

BCF INTCON,2 ;СБРОС ФЛАГА TOIF

;(ТАЙМЕР ПЕРЕПОЛНЕН)

DECFSZ COUNT2,1 ;COUNT2=0 ?

GOTO M10 ;COUNT2 NOT 0, ОЧЕРЕДНОЙ

;ЭЛЕМЕНТ МАССИВА

DECFSZ COUNT3,1

GOTO M30 ;COUNT3 NOT 0, ВЫВОД МАССИВА

;COUNT3=0

MASSIV: ADDWF PCL

RETLW 07H

RETLW 0FH

RETLW 02H

RETLW 0EH

RETLW 03H

RETLW 0DH

RETLW 04H

RETLW 0CH

RETLW 05H

RETLW 0BH

END

; Lb1_3.asm. Программа записи данных массива в порт В.

#INCLUDE "P16F84.INC"

LIST P=16F84

__CONFIG 3FFBh

ORG 20H

.UDATA

COUNT1 RES 1

COUNT2 RES 1

.CODE

ORG 00H

GOTO INIT

MASSIV: ADDWF PCL

RETLW 04h

RETLW 7Ch

RETLW 0FFh

RETLW 0Bh

RETLW 32h

INIT: BSF STATUS,5

CLRF TRISB

BCF STATUS,5

CLRF PORTB

MOVLW 05h

MOVWF COUNT2

CLRF COUNT1

M10: MOVF COUNT1,0

CALL MASSIV

MOVWF PORTB

INCF COUNT1,1

DECFSZ COUNT2,1

GOTO M10

NOP

END