Tải bản đầy đủ (.pdf) (17 trang)

Bài giảng Chương 9: EEPROM Module

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (481.23 KB, 17 trang )

CHƯƠNG 9

EEPROM Module


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

1. Giới thiệu
- EEPROM là bộ nhớ có khả năng ghi đọc trong
q trình PIC hoạt động bình thường.
- EEPROM khơng được thiết lập trực tiếp từ không
gian bộ nhớ mà thông qua các thanh ghi có chức
năng đặc biệt:
+ EECON1

+ EECON2

+ EEDATA

+ EEADR

+ EEDATH

+ EEADRH


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

- EEDATA sẽ lưu giá trị 8bit được Ghi - Đọc.
- EEADR sẽ chứa địa chỉ của ô nhớ cần truy xuất.
- Khi giao tiếp với bộ nhớ chương trình: 2 thanh ghi


EEDATA : EEDATH được kết hợp để lưu 14 bit
mã lệnh ghi và đọc.
Và 2 thanh ghi EEADR : EEADRH kết hợp để lưu
địa chỉ 13bit của ô nhớ đang truy xuất.
- Bộ nhớ EEPROM chỉ cho phép đọc và ghi 1Byte.
- Bộ nhớ EEPROM sẽ tự động xóa trước khi Ghi.


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

2. Các thanh ghi
a. Thanh ghi EEADR và EEADRH
- Cặp thanh ghi này có thể định địa chỉ tối đa
256Byte hay tối đa 8K word của bộ nhớ EEPROM.
- Khi truy xuất bộ nhớ dữ liệu: chỉ dùng EEADR để
lưu Byte địa chỉ thấp.
- Khi truy xuất bộ nhớ chương trình: dùng EEADR
để lưu byte địa chỉ thấp và EEADRH lưu Byte địa
chỉ cao.


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

b. Thanh ghi EECON1 và EECON2
- Thanh ghi EECON1 chứa các bit điều khiển.
- Thanh ghi EECON2 chỉ là thanh ghi ảo, chỉ được
dùng riêng cho hoạt động Ghi vào EEPROM.

EECON1
EEPGD dd


CHS2

Bit 6, 5,4: chưa cấu hình

WRERR

WREN

WR

RD


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM
Bit
EEPGD

Chức năng
Bit chọn bộ nhớ Dữ liệu / Chương trình EEPROM
1= chọn bộ nhớ chương trình
0= chọn bộ nhớ dữ liệu

WRERR

Cờ báo quá trình Ghi EEPROM bị lỗi
1= quá trình Ghi kết thúc sớm hơn yêu cầu ( lỗi )
0= quá trình Ghi hoàn chỉnh.

WREN


Bit cho phép hoạt động Ghi vào EEPROM
1= Cho phép Ghi.
0= không cho phép Ghi.

WR

Bit điều khiển quá trình Ghi
Set 1= bắt đầu Ghi EEPROM ( được xóa bằng phần cứng)
0= Khi quá trình ghi hoàn tất.

RD

Bit điều khiển quá trình Đọc
Set 1= bắt đầu Đọc EEPROM ( được xóa bằng phần cứng)
0 = Quá trình đọc chưa bắt đầu


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

3. Đọc dữ liệu từ EEPROM
- Để đọc dữ liệu từ EEPROM:
+Trước tiên phải ghi địa chỉ vào thanh ghi EEADR.
+ Clear bit EEPGD = 0.
+ Set bit RD lên 1.
- Kết quả đọc được sẽ lưu vào thanh ghi EEDATA
và ta có thể đọc giá trị này ở chu kỳ tiếp theo.
- Kết quả trong EEDATA sẽ không đổi cho đến khi
1 chu kỳ đọc kế tiếp được thực hiện.



CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

Chương trình Đọc dữ liệu từ EEPROM
BSF

STATUS, RP1

BCF

STATUS, RP0

MOVLW

CONFIG_ADDRESS

MOVWF

EEADR

;Ghi địa chỉ cần đđọc vào

BSF

STATUS, RP0

; Chọn Bank3

BCF


EECON1, EEPGD; Chọn Bộ nhớ dữ liệu

BSF

EECON1, RD

;Bắt đầu quá trình đọc

BCF

STATUS, RP0

; Chọn Bank0

MOVF

EEDATA, W ; Lưu kết quả đọc được vào W.

; Chọn Bank2


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

4. Ghi dữ liệu vào EEPROM
- Để ghi dữ liệu vào EEPROM:
+ Trước tiên phải ghi địa chỉ vào thanh ghi
EEADR và đặt dữ liệu cần ghi vào EEDATA.
+ EEPGD = 0: Data EEPROM ( và Cấm các Ngắt).
+ WREN = 1 : cho phép Ghi
+ Sau đó lần lượt ghi 2 giá trị 55H và AAH theo

trình tự vào thanh ghi EECON2.
+ WR = 1 : bắt đầu hoạt động Ghi


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

Chương trình Ghi dữ liệu vào EEPROM
BSF
STATUS, RP0 ; Bank1
BCF
INTCON, GIE
; Disable INTs.
BSF
STATUS, RP1 ; Bank3
BSF
EECON1, WREN ; Enable Write
;Đây là đoạn chương trình bắt buộc.
MOVLW 55h
MOVWF
EECON2
MOVLW AAh
MOVWF EECON2
; Bit WR được bật lên để bắt đầu quá trình ghi
BSF
EECON1,WR
;Q trình ghi hồn tất thì cờ EEIF = 1
BSF
INTCON, GIE
;Cho phép các Ngắt



CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

5. Đọc dữ liệu từ bộ nhớ chương trình
+Trước tiên phải ghi địa chỉ vào 2 thanh ghi
EEADR : EEADRH.
+ Clear bit EEPGD = 1.
+ Set bit RD lên 1.
- Kết quả đọc được sẽ lưu vào 2 thanh ghi
EEDATA: EEDATAH , giá trị này sẽ được đọc sau
2 chu kỳ tiếp theo khi Set bit RD=1.


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

Chương trình Đọc dữ liệu từ Bộ nhớ chương trình
BSF

STATUS, RP1

BCF

STATUS, RP0

MOVLW

CONFIG_ADDRESS_L

MOVWF


EEADR

MOVLW

CONFIG_ADDRESS_H

MOVWF

EEADRH

;Ghi địa chỉ Byte cần đđọc

BSF

STATUS, RP0

;Chọn Bank3

BSF

EECON1, EEPGD ;Bộ nhớ chương trình

; Chọn Bank2
;Ghi địa chỉ cần đọc vào


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

EECON1, RD


;Bắt đầu quá trình đọc

BCF

STATUS, RP0

; Chọn Bank2

MOVF

EEDATA, W ; Lưu kết quả đọc vào W.

MOVWF

DATA_L

MOVF

EEDATAH, W ; Lưu kết quả đọc vào W.

MOVWF

DATA_H

BSF
NOP
NOP


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM


6. Ghi dữ liệu vào Bộ nhớ chương trình
+ Trước tiên phải ghi địa chỉ vào 2 thanh ghi EEADR:
EEADR và đặt dữ liệu vào EEDATA:EEDATAH.
+ EEPGD = 1. ( và Cấm các Ngắt).
+ WREN = 1 : cho phép Ghi
+Ghi 2 giá trị 55H và AAH thanh ghi EECON2.
+ WR = 1 : bắt đầu hoạt động Ghi. Sau lệnh này
CPU cần 2Tcy để thực thi việc Ghi/Xóa .
Lưu ý: Cứ mỗi lần Ghi là một khối = 4 Word


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

Chương trình Ghi dữ liệu vào Bộ nhớ chương trình
ADDRH, ADDRL và DATADDR thuộc Ram chung 70h-7Fh
BSF
STATUS, RP1
;
BCF
STATUS, RP0
; Bank2
MOVF
MOVWF

ADDRH, W
EEADRH

MOVF
MOVWF


ADDRL, W
EEADR

MOVF
MOVWF
LOOP
MOVF
MOVWF

DATAADDR, W
FSR
INDF, W
EEDATA

; khởi tạo địa chỉ

; khởi tạo địa chỉ dữ liệu

; đưa byte đầu tiên vào phần thấp


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

INCF
MOVF
MOVWF
INCF

FSR, F

INDF, W
EEDATH
FSR, F

;lấy byte kế tiếp

BSF
BSF
BSF

STATUS, RP0 ; Bank 3
EECON1, EEPGD; chọn bộ nhớ chương tr
EECON1, WREN; cho phép Ghi

BCF

INTCON, GIE

MOVLW
MOVWF

55H
EECON2

; đưa byte 2 vào phần cao

;cấm ngắt


CHƯƠNG 9: BỘ NHỚ GHI ĐỌC EEPROM

MOVLW
MOVWF

AAH
EECON2

BSF
NOP
NOP

EECON1, WR ; bắt đầu ghi

BCF
BCF
BCF
INCF
MOVF
ANDLW
XORLW
BTFSC
GOTO

EECON1, WREND
INTCON, GIE
STATUS, RP0
;chọn Bank 2
EEADR, F
; tăng địa chỉ kế
EEADR, W
03H

;kiểm tra 2 bit thấp của địa chỉ=‘00’
03H ; thì 4 words đã được ghi xong
STATUS, Z ; nếu chưa đủ 4 words thì quay lại ..
LOOP



×