Работа с EEPROM в микроконтроллерах семейства PIC16CХХ: Методические указания к лабораторной работе № 4, страница 2

RTIF    EQU     2

INTF    EQU     1

RBIF    EQU     0

;-------------------------------------------;OPTION

RBPU    EQU     7

INTEDG  EQU     6

RTS     EQU     5

RTE     EQU     4

PSA     EQU     3

PS2     EQU     2

PS1     EQU     1

PSO     EQU     0

;--------------------------------------------;PORTA

MinusBut        EQU      4   ;in

CLKout          EQU      4

Fout            EQu      4

VD1             EQU      3   ;out

FullBut         EQU      3   ;in

CLKin           EQU      3

VD2             EQU      2   ;out

G_But           EQU      2   ;in

DATAout         EQU      2

VD3             EQU      1   ;out

L_But           EQU      1   ;in

VD4             EQU      0   ;out

IdleBut         EQU      0   ;in

DATAin          EQU      0

;-------------------------------------------;PORTB

In2             EQU      7    ;in

In1             EQU      6    ;in

IdleIn          EQU      5    ;in

FullIn          EQU      3    ;in

PlusBut         EQU      4    ;in

SESS            EQU      4

Out1            EQU      2    ;out

Out2            EQU      1    ;out

Fin             EQU      0    ;in

;-------------------------------------------;FLAGS1

In1_State       EQU     7           ;Текущее сост. входа 1

In2_State       EQU     6           ;Текущее сост. входа 2

;--Register Files-INDF            EQU     0x00

TMR0            EQU     0x01

;--STATUS bits-NOT_PD          EQU     0x03

NOT_TO          EQU     0x04

;--INTCON bits-T0IF            EQU     0x02

T0IE            EQU     0x05

;       Eeprom memory dump

;*** Programm dump ***

org     0x0000          ;Start address

goto    START

;Обработчик прерывания

addlw   0xFF

addlw   0xFF

addlw   0xFF

btfsc   INTCON,RBIF

;Переход если прерывание по порту B

goto    RBProc

btfsc   INTCON,INTF

;Если прерывание от ножки INT

goto    INTProc

bcf     STATUS,RP0

goto    INT_END

INTProc

RBProc

INT_END

bcf     INTCON,RBIF

bcf     INTCON,INTF

bcf     INTCON,T0IF

retfie

;Подпрограммы

DEBOUNCE     ;Задержка против дребезга

bcf     INTCON,GIE

movlw   0xFF

movf    LASTBYTE,F

bsf     INTCON,GIE

M1_DEBOUNCE

goto    M2_DEBOUNCE

M2_DEBOUNCE

goto    M3_DEBOUNCE

M3_DEBOUNCE

goto    M4_DEBOUNCE

M4_DEBOUNCE

goto    M5_DEBOUNCE

M5_DEBOUNCE

goto    M6_DEBOUNCE

M6_DEBOUNCE

goto    M7_DEBOUNCE

M7_DEBOUNCE

goto    M8_DEBOUNCE

M8_DEBOUNCE

goto    M9_DEBOUNCE

M9_DEBOUNCE

decfsz  LASTBYTE,F

goto    M1_DEBOUNCE

return

;вывод на светодиоды

UpdateInd

movf    TEMP2

andlw   0x0F

movwf   PORTA

return

;чтение ппзу

ReadEEPROM

;Загружаем адрес в W

movlw   02

movwf   EEADR

;страница памяти 1

bsf     STATUS,RP0

;последовательность команд для чтения из EEPROM

bsf     EECON1,RD

;страница памяти 0

bcf     STATUS,RP0

;пересылаем считанное значение в W

movf    EEDATA,W

return

;запись в ппзу

WriteEEPROM

;Загружаем данные

movwf   EEDATA

;Загружаем адрес в W

movlw   02

;устанавливаем адрес

movwf   EEADR

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

bcf     INTCON,GIE

;страница памяти 1

bsf     STATUS,RP0

;разрешаем запись

bsf     EECON1,WREN

;последовательность команд для записи в EEPROM

movlw   0x55

movwf   EECON2

movlw   0xAA

movwf   EECON2

bsf     EECON1,WR

;страница памяти 0

bcf     STATUS,RP0

;разрешаем прерывания

bsf     INTCON,GIE

bsf     INTCON,EEIE

return

START

;устанавливаем страницу памяти 1

bsf     STATUS,RP0

;устанавливаем прерывание по положительному фронту на ножке int

;и подключаем делитель к WDT

movlw   0x48

option

;устанавливаем пятый бит порта А на ввод

;        movlw   0xF9

;        movwf   0x06

;устанавливаем второй и третий биты порта В на вывод Out1  Out2

movlw   0x10

movwf   0x05

;устанавливаем страницу памяти 0

bcf     STATUS,RP0

;разрешаем прерывания

movlw   0xB8

movwf   INTCON

call    ReadEEPROM

movwf   TEMP2

Wait

btfss   PORTB, Out1

goto    Programming

;Уходим на счетчик увеличения

call    UpdateInd

goto    Wait

Programming

;Продседура увеличивающая отображаемое значение

call    DEBOUNCE

incf    TEMP2

movf    TEMP2, W

andlw   0x0F

movwf   TEMP2

movf    TEMP2, W

call    WriteEEPROM

call    UpdateInd

goto    Wait

END

Задание 4: Откомпилировать проект и протестировать его.

Содержание отчета:

1)  Краткое описание EEPROM.

2)  Временные диаграммы заданных битов порта А.

Литература:

1)  Документация фирмы MICROCHIP в формате pdf.

2)  “Микроконтроллеры PIC16C7X” В. А. Ульрих – Наука и Техника 2000г.