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

Lịch sử phát triển của vi điều khiển PIC pot

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 (3.15 MB, 66 trang )

z




ĐỀ TÀI

BÁO CÁO VI ĐIỀU KHIỂN
NÂNG CAO



KHOA ĐIỆN TỬ CÔNG NGHỆ ĐH HÀ NỘI




[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 1
BÁO CÁO VĐK NÂNG CAO

I.Lịch sử phát triển của vi điều khiển PIC
PIC (Programmable Interlligent Computer) là một sản phNm của hãng General
Intruments đặt cho dòng sản phNm đầu tiên của họ là PIC 1605. Vào thập kỷ 70 của thế
kỷ 20, General Intruments và Honeywell kết hợp sản xuất ra bộ vi xử lý 16 bit CP1600.
Đây là bộ vi xử lý khá mạnh vào thời điểm đó nhưng lại hạn chế về hoạt động vào/ra.
PIC 1650 được sản xuất để hỗ trợ vi xử lý CP 1600 trong các máy tính sử dụng bộ vi xử
lý này.


PIC 1650 hoạt động với tập lệnh đơn giản nằm trong ROM. Vào thời điểm đó
chưa có khái niệm về RISC(Reduced Intructions Set Code), tuy nhiên PIC 1650 thực sự
là một bộ vi điều khiển được thiết kế theo kiểu kiến trúc RISC. Tập lệnh của PIC 1650
vơi khoảng 30 lệnh và độ dài của mỗi lệnh là 14 bit. Mỗi lệnh được PIC 1650 thực hiện
trong 1 chu kỳ máy(4 chu kỳ của bộ dao động).
Năm 1985 General Intruments bán bộ phận sản xuất vi điện tử của họ và chủ sở
hữu mới hủy bỏ hầu hết các dự án liên quan( do các dự án lúc trước đó đã lỗi thời).
Năm 1989 Microchip Technology tiếp tục phát triển PIC, bắt đầu bằng việc thêm
bộ nhớ EEPROM để tạo thành một bộ điều khiển vào ra khả trình. Tiếp đến là tích hợp
các tính năng như ngắt, ADC( Analog Digital Convertr) … để tạo thành cá bộ vi điều
khiển( Micro Controller).
Đến năm 1992 Microchip Technology đã cho ra đời 6 loại chip với 3 dòng khác
nhau:
- Dòng chip có độ dài mã lệnh bằng 12 bit gồm 4 chip PIC 15C5x. Các
chip này có từ 12 đến 28 chân vào/ra.
- Dòng chip độ dài mã lệnh băng 14 bit là PIC 16C71. Bộ vi điều khiển
này đã được tích hợp thêm hai tài nguyên là ngắt ADC.
- Dòng chip độ dài mã lệnh bằng 16 bit là PIC 17C41, tuy nhiên dòng
chip này không được chú trọng phát triển vào thời điểm đó.
Cùng thời gian này hàng loạt các công cụ hỗ trợ cũng được các công ty khác nhau
cho ra đời. Điển hình là PICMASTER emulator, PIC Pro II programmer và cả trình dịch
C( C Compiler). Các công cụ này cùng với việc thay bộ nhớ OTP (one – time
programmable parts) bằng bộ nhớ EEP (Electically Erasable Parts) đã mang đến rắt nhiều
tiện lợi cho người lập trình, ví dụ như: người lập trình có thể nạp chương trình mà không
cần gỡ chip ra khỏi mạch. PIC 16C84 là bộ vi điều khiển đầu tiên có bộ nhớ kiểu EEP.
Không lâu sau đó Microchip Technology tiếp tục đưa vào bộ vi điều khiển với mã
lệnh dài 14 bit PIC16F877 tính năng gỡ rối(Flash debugging). Tính năng này cho phép
[Type the document title]



KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 2
BÁO CÁO VĐK NÂNG CAO

người lập trình có thể kiểm soát từng thanh ghi, từng câu lệnh trong chương trình. Nhờ
những cải tiến liên tiếp, PIC16F87 trở thành bộ vi điều khiển bán chạy nhất vào thời điểm
đó( năm 1995 đến 1998).
Đến năm 2000, Microchip Technology tái phát triển lại dòng chip có độ dài mã
lệnh bằng 16bit đã có trước đó 8 năm. Đại diện cho dòng chip này là PIC18F4520 với tốc
độ mã lệnh bằng 16bit đã có trước đó 8 năm. Đại diện cho dòng chip này là PIC18F452
với tốc độ , dung lượng bộ nhớ được cải thiện và khá nhiều tính năng được bổ sung như
các bộ định thời(timer), truyền thông nối tiếp…Dòng vi điều khiển PIC 8 bit đã dẫn đầu
số lượng bộ bán ra mỗi năm liên tục từ năm 2002 đến nay.
Trước nhu cầu về tốc độ xử lý cũng như các tính năng đặc biệt khác, Microchip
Technology tiếp tục cho ra đời các dòng vi điều khiển tiên tiến hơn như: PIC24, PIC33,
dsPIC
Ngày nay đã có đến hàng chục dòng PIC với hàng trăm loại chip khác nhau. Tại
Việt Nam cũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều
này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng
tài liệu, số lượng các ứng dụng mở đã phát triển thành công, dễ dàng trao đổi, học tập, dễ
dàng tìm được sự chỉ dẫn khi gặp khó khăn













[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 3
BÁO CÁO VĐK NÂNG CAO

II. Kiến trúc phần cứng của vi điều khiển PIC
2.1. Sơ đồ khối



















Hình 2.1: Sơ đồ khối của PIC 18F4520
Các khối chính trên PIC 18F4520 bao gồm:
• CPU: Tần số tối đa 40MHz, kiến trúc Havard, được sản xuất bằng công
nghệ nano Watt.
• Bộ nhớ:
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 4
BÁO CÁO VĐK NÂNG CAO

 Bộ nhớ chương trình FLASH: 32K
 RAM: 1536 bytes
 Bộ nhớ dữ liệu EEPROM: 256 bytes
• Cổng vào ra: A,B,C,D,E
 Cổng A: RA0-RA7
 Cổng B: RB0-RB7
 Cổng C: RC0-RC7
 Cổng D: RD0-RD7
 Cổng E: RE0-RE3
• Định thời/đếm: 4 bộ (Timer2: 8bit; Timer0,1,3: 16 bit)
• PWM: 2 bộ (CCP1:RC2; CCP2:RC1)
• Truyền thông nối tiếp L2 module: MSSP và EUSART
Module MSSP gồm 2 module: SPI(Serial Peripheral Interface) và IC
(Intergrated Circuit)
• ADC: 13 kênh ADC với độ phân giải 10bit
2.2.Sơ đồ chân



Hình 2.2: Sơ đồ chân PIC 18F4520 dạng TQFP
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 5
BÁO CÁO VĐK NÂNG CAO


Hình 2.3: Sơ đồ chân PIC 18F4520 dạng DIP

Tên chân Chân số Loại
chân
Loại
bộ
nhớ
đệm
Mô tả
PDI
P
QF
N
TQFP

MCLR/VPP/RE3

MCLR




VPP
RE3

1







18

18



I



P
I



ST





ST
Master clear(đầu
vào)hoặc lập trình
điện áp đầu vào
Master
clear(Reset)đầu
vào,chân này hoạt
động ở mức thấp,
thiết lập lại cho thiết
bị.
Lập trình điện áp
đầu vào
Đầu vào số
OSC1/CLK1/RA7 13 32 30 Đầu vào của dao
động tinh thể và dao
động đồng hồ bên
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 6
BÁO CÁO VĐK NÂNG CAO



OSC1






CLK1





RA7














I





I






I/O


ST





CMO
S





TTL
ngoài
Đầu vào của dao
động tinh thể hoặc
đầu vào dao động
đồng hồ bên ngoài.
Bộ nhớ đệm ST khi
cấu hình chế độ RC
tương tự khác

Đầu vào của nguồn
xung clock ngoài.
Luôn gắn liền với
chức năng của chân,
OSC1(xem chân
OSC1/CLK1;
OSC2/CLK0
Chân vào/ra
OSC2/CLK0/RA6


OSC2



CLK0
14 33 31


O



O



_




_
Đầu vào dao động
tinh thể hoặc dao
động đồng hồ bên
ngoài
Đầu ra dao động
tinh thể, liên kết tinh
thể hoặc cộng hưởng
trong chế độ dao
động tinh thể
Trong chế độ RC,
OSC2,chân đầu ra
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 7
BÁO CÁO VĐK NÂNG CAO




RA6



I/O




TTL
CLK0 có ¼ tần số
củaOSC1& biểu thị
tỉ lệ chu kì lệnh
Chân vào/ra


RA0/AN0
RA0
AN0
RA1/AN1
RA1
AN1
RA2/AN2/VREF-
/CVREF
RA2
AN2
VREF-

CVREF

RA3/AN3/VREF+
RA3
AN3
VREF+


2



3


4







5





19


20


21








22





19


20


21







22






I/O

I

I/O
I


I/O
I
I

O


I/O
I
I



TTL
Analo
g

TTL
Analo
g


TTL
Analo

g
Analo
g

Analo
g


PORTA là cổng vào
ra 2 chiều

Vào/ra số


Vào/ra số
Đầu vào tương tự 1


Vào/ra số
Đầu vào tương tự 2
A/D đầu vào tham
chiếu điện áp (mức
thấp)
So sánh đầu ra điện
dáp tham chiếu
Vào/ra số
Đầu vào tương tự 3
Đầu vào tham chiếu
điện áp (mức cao)


[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 8
BÁO CÁO VĐK NÂNG CAO


RA4/T0CKI/
C1OUT
RA4

C1OUT
RA5/AN4/SS/HLVD
IN
C2OUT
RA5
AN4
SS
HLVDIN

C2OUT
RA6

RA7


6





7






23




24



23




24








I/O

O


I/O
I
I
I

O




TTL
Analo
g
Analo
g



ST

_


TTL

Analo
g
TTL
Analo
g

_

Đầu vào xung clock
bên ngoài
So sánh đầu ra 1


Vào/ra số
Đầu vào tương tự 4
SPI chọn đầu vào
Dò tìm điện áp đầu
vào mức cao/thấp
So sánh ngõ ra 2
Xem chân
OSC2/CLK0/RA6
Xem chân
OSC1/CLK1/RA7
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page 9
BÁO CÁO VĐK NÂNG CAO




RB0/INT0/FLT0/AN
12
RB0
INT0
FLT0

AN12
RB1/INT1/AN10
RB1
INT1
AN10
RB2/INT2/AN8
RB2
INT2
AN8
RB3/AN9/CCP2
RB3
AN9
CCP2
(1)

RB4/KBI0/AN11
RB4


33






34



35



36




37




9





10




11



12




14




8





9



10



11





14





I/O
I
I

I

I/O
I
I

I/O
I
I

I/O
I
I/O


I/O

I



TTL
ST
ST

Analo
g

TTL
ST
Analo
g

TTL
ST
Analo
g

TTL
Analo
g
ST

PORTB là cổng
vào/ra 2 chiều.

Vào/ra số

Ngắt ngoài 0
PWM lỗi đầu vào
cho nâng cao CCP1
Đầu vào tương tự 12

Vào/ra số
Ngắt ngoài 1
Đầu vào tương tự 10

Vào/ra số
Ngắt ngoài 2
Đầu vào tương tự 8

Vào/ra số
Đầu vào tương tự 9
Đầu vào 2/so sánh
đầu ra 2/PWM đầu
ra

Vào/ra số
Chân thay đổi ngắt
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
10
BÁO CÁO VĐK NÂNG CAO

KBI0

AN11
RB5/KBI1/PGM
RB5
KBI1
PGM


RB6/KBI2/PGC
RB6
KBI3
PGD




RC0/T1OSO/T13CKI

RC0
T1OSO

T13CKI


RC1/T1OSI/CCP2

38














15






16


15














34






35


15













32







35

I

I/O
I
I/O



I/O
I
I/O





I/O
O

I



I/O


TTL
TTL
Analo
g

TTL
TTL
ST



TTL
TTL
ST





ST
_

ST
Đầu vào tương tự 11

Vào/ra số
Chân thay đổi ngắt
Chân cho phép lập
trình điện áp mức

thấp ICSP
TM


Vào/ra số
Chân thay đổi ngắt
Chân lập trinhg gỡ
lỗi&lập tình ICSP
dữ liệu trong vi
mạch
PORTC là cổng
vào/ra hai chiều.

Vào/ra số
Bộ dao động đầu ra
timer1
Timer1/Timer3 đầu
vào xung clock bên
ngoài

Vào/ra số
Bộ dao động đầu
vào Timer1
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
11
BÁO CÁO VĐK NÂNG CAO


RC1
T1OSI

CCP2
(2)


RC2/CCP1/P1A
RC2
CCP1

P1A
RC3/SCK/SCL
RC3
SCK


SCL


RC4/SDI/SDA
RC4
SDI
SDA
RC5/SD0
RC5





17




18







23



24






36





37







42



43






36




37








42



43


I

I/O


I/O
I/O

O

I/O
I/O


I/O



I/O
I
I/O


I/O
I/O



ST
CMO
S

ST


ST
ST

_

ST
ST


ST



ST
Đầu vào2/so sánh
đầu ra2/PWM2 đầu
ra


Vào/ra số
Đầu vào1/so sánh
đầu ra1/PWM1 đầu
ra
Nâng cao đầu ra 1

Vào/ra số
Đầu vào nối tiếp
đồng bộ xung clock/
đầu ra cho chế độ
SPI
Đầu vào nối tiếp
đồng bộ xung
clock/đầu ra cho chế
độ
TM
I
2
C

Vào/ra số
Dữ liệu SPI
I
2
C dữ liệu vào/ra

Vào/ra số
Dữ liệu đầu ra SPI


[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
12
BÁO CÁO VĐK NÂNG CAO

SD0
RC6/TX/CK
RC6
TX

CK


RC7/RX/DT
RC7
RX

DT












25






26















19
44







1















38
44






1
















38

I/O
O

I/O



I/O
I

I/O













I/O
I/O

ST
ST

ST
_

ST



ST
ST

ST








Vào/ra số
EUSART truyền tải
không đồng bộ
EUSART xung
clock đồng bộ(xem
liên quan đến
RX/DT)

Vào/ra số
Nhận EUSART
không đồng bộ
EUSART dữ liệu
đồng bộ(xem liên
quan TX/CK)

PORD là cổng vào
ra 2 chiều. Cổng
Slave(PSP) để giao
tiếp với cổng vi xử
lý. Các chân này có
bộ đếm đầu vào
TTL khi PSP
module được kích
hoạt.


Vào/ra số
Cổng dữ liệu Salve

song song

[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
13
BÁO CÁO VĐK NÂNG CAO

RD0/PSP0

RD0
PSP0

RD1/PSP1
RD1
PSP1
RD2/PSP2
RD2
PSP2
RD3/PSP3
RD3
PSP3
RD4/PSP4
RD4
PSP4
RD5/PSP5/P1B
RD5
PSP5

P1B

RD7/PSP7/P1D
RD5




20


21


22


27


28




30







39


40


41


2


3




5






39


40



41


2


3




5



I/O
I/O


I/O
I/O

I/O
I/O

I/O
I/O


I/O
I/O

I/O
I/O
O


I/O
I/O






ST
TTL


ST
TTL

ST
TTL

ST
TTL

ST

TTL

ST
TTL
Vào/ra số
Cổng dữ liệu Salve

Vào/ra số
Cổng dữ liệu Salve

Vào/ra số
Cổng dữ liệu Salve

Vào/ra số
Cổng dữ liệu Salve

Vào/ra số
Cổng dữ liệu Salve
Tăng cường đầu ra
CCP1

Vào/ra số
Cổng dữ liệu Salve
Tăng cường đầu ra
CCP1

PORE là cổng vào
ra 2 chiều

[Type the document title]



KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
14
BÁO CÁO VĐK NÂNG CAO

PSP7
P1D




RE0/RD/AN5
RE0

RD

AN5
RE1/WR/AN6
RE1
WR

AN6
RE2/CS/AN7
RE2
CS
AN7

RE3







8




9




10




_

12,
31






25




26




27




_

6,
30,





25




26





27




_

6, 29

O





I/O
I

I

I/O
I

I

I/O

I

I
_

P

_


ST
TTL
_





ST
TTL

Analo
g

ST
TTL

Analo
g


ST
Vào/ra số
Điều khiển đọc cho
cổng Slave song
song
Đầu vào tương tự 5

Vào/ra số
Điều khiển ghi cho
cổng Slave song
song
Đầu vào tương tự 6

Vào/ra số
Chọn chip điều
khiển cổng Slave
song song.
Đầu vào tương tự 7
Xem chân
MCLR/VPP/RE3
Mát tham chiếu cho
logic & chân vòa/ra

Cấp mức logic
thcihs cực&chân
vào/ra

Không có kế nối
[Type the document title]



KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
15
BÁO CÁO VĐK NÂNG CAO

VSS


VDD


NC

11,
32

_
31
7,8,
28,
29
13






7,28



13,13,
33,34






P


_



TTL

Analo
g
_

_


_


_








Chú thích:
TTL: TTL ứng với đầu vào
CMOS: CMOS ứng với đầu vào hoặc đầu ra
ST: Schmitt Trigger đầu vào ứng với mức độ CMOS
I: đầu vào
O:đầu ra
Power: chức năng

Chú ý:
Mặc định cho CCP2 khi cấu hình bit,CCP2MX,được thiết lập.
Thay thế cho CCP2 khi cấu hình bit,CCP2MX, được xóa bỏ.

[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
16
BÁO CÁO VĐK NÂNG CAO

2.3. B

dao

độ
ng
PIC 18F4520 có thể hoạt động ở một trong 10 chế độ tạo dao động khác nhau.
Việc lựa chọn các chế độ tạo dao động nhờ các thiết bị FOSC0:FOSC1 trong thanh ghi
CONFIG1H.
Sơ đồ bộ dao động trên vi điều khiển được mô tả trên hình sau:

Hình 2.4. Sơ đồ khối bộ tạo dao động trên PIC 18F4520
2.3.1. T

o dao
độ
ng b

ng th

ch anh ngoài
Ở chế độ XT,LP,HS hoặc HSPLL, một bộ dao động thạch anh và 02 tụ được kết
nối với vi điều khiển(như hình 2.5) để tạo dao động cung cấp xung nhịp cho hệ thống.

Hình 2.5. Tạo dao động bằng thạch anh
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
17
BÁO CÁO VĐK NÂNG CAO

Trong đó tần số của thạch anh và giá trị của tụ điện được cho như sau:

Freq OSC1 OSC2
3.58MHz
4.19MHz
4MHz
4MHz
15pF
15pF
30pF
50pF

15pF
15pF
30pF
50pF


2.3.2. T

o dao
độ
ng b

ng RC ngoài
Trong chế độ RC, xung nhịp của hệ thống được cung cấp bởi mạch tạo dao động
(như hình 2.6).Tần số của xung nhịp này bằng ¼ tần số của mạch RC.

Hình 2.6. Tạo dao động bằng RC ở chế độ RC
Giá trị linh kiện: 3K<REXT<100K<20pF.
Chế độ RCIO hoàn toàn giống với chế độ RC, điểm khác duy nhất là chân OSC2
có thể sử dụng như một chân vào ra(như hình 2.7)


[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
18
BÁO CÁO VĐK NÂNG CAO


Hình 2.7. Tạo dao động bằng mạch RC ở chế độ RCIO
2.4.Ho

t
độ
ng Reset
PIC 18F4520 có 8 kiểu reset, trong đó cách reset thông dụng nhất là reset khi bật
nguồn và reset bằng WDT.

Hình 2.8. Sơ đồ khối mạch reset trên vi điều khiển
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
19
BÁO CÁO VĐK NÂNG CAO

Để reset chip khi bật nguồn, cần một mạch điện như hình 2.9


Hình 2.9. Mạch Reset khi bật nguồn
Việc chọn kiểu reset bằng thao tác bật nguồn hay WDT phụ thuộc vào bit trong
thanh ghi RCON:
R/W R/W-1 U-0 R/W-1 R-1 R-1 R/W-
0
R/W-0
IPEN SBOREN

- RI TO PD POR BOR
Bit7 bit 0


2.5. T

ch

c b

nh


Bộ nhớ của nhớ của PIC 18F4520 gồm 3 loại:
- ộ nhớ chương trình
- Bộ nhớ RAM
- Bộ nhớ dữ liệu EPROM
Như những thiết bị kiến trúc Harvard, các dữ liệu và bộ nhớ của chương trình sử
dụng những đường bus riêng biệt, việc này cho phép chúng ta có thể truy cập cùng lúc 2
bộ nhớ. Các dữ liệu EEPROM cho các mục đích thực tế có thể coi là một thiết bị ngoại
vi. Từ nó ta có thể gửi và truy cập thông qua những thanh ghi điều khiển.
2.5.1. T


ch

c b

nh

ch
ươ
ng trình
Vi điều khiển PIC18 thực hiện một bộ đếm chương trình có độ dài 21-Bit có
khoảng trống là 2Mbyte.Truy cập tới vị trí giữa bộ nhớ và 2-Mbyte địa chỉ thì tất cả các
giá trị trả về sẽ là “0” (sử dụng lệnh NOP).
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
20
BÁO CÁO VĐK NÂNG CAO

PIC18F240 và PIC18F4420 từng có 16Kbytes của bộ nhớ Flash và có thể lưu trữ
8,192 đơn từ. PIC18F2520 và PIC18F4520 có 32Kbytes của bộ nhớ Flash và có thể lưu
trữ lên đến 18,284 đơn từ. PIC18 có 2 vector ngắt. Địa chỉ reset vector là 0000H và hai
vector ưu tiên ngắt là 0008H và 0018H. Sơ đồ bộ nhớ chương trình của
PIC18F2420/2520/4420/4520 được biểu diễn ở hình 2.10.

Hình 2.10 Tổ chức bộ nhớ chương trình và ngăn xếp trên PIC 18F4520
[Type the document title]



KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
21
BÁO CÁO VĐK NÂNG CAO

2.5.2. T

ch

c b

nh

d

li

u
Trong PIC18 bộ nhớ dữ liệu được thực hiện như bộ nhớ RAM tĩnh. Mỗi thanh ghi
trong bộ nhớ dữ liệu có một địa chỉ 12Bit, cho phép đến 4.096 byte bộ nhớ dữ liệu.
Không gian của bộ nhớ được chia thành 16 bank có chứa 256 byte; PIC18 thực hiện cả
16 bank. Hình 2.11 cho thấy tổ chức bộ nhớ dữ liệu của PIC18. Bộ nhớ dữ liệu có chứa
các thanh ghi Special Function ( SFRs ) và General Puporse ( GPRs ). SFR có thể dùng
để kiểm soát trạng thái của bộ điều khiển và có chức năng ngoại vi, còn GPRs được dùng
để lưu trữ dữ liệu và các hoạt động đệm cho những ứng dụng. Bất kì 1 vị trí nào chưa
được thực hiện sẽ được đọc là ‘0’ .
Các tập lệnh và cấu trúc cho phép hoạt động trên tất cả các Bank. Bộ nhớ trực tiếp
có thể truy cập một cách trực tiếp hay gián tiếp hoặc cách đánh địa chỉ.
Để đảm bảo các thanh ghi hay sử dụng ( SFRs và GPRs ) có thể truy cập được

trong một chu kì, PIC18 đã thực hiện một Access Bank. Đây là kiểu bộ nhớ có độ lớn
256 byte được truy cập một cách nhanh chóng vào SFR và phần thấp của GPR Bank 0
mà không cần sử dụng BSR.
2.5.2.1. Thanh ghi l

a ch

n Bank (BSR)
Độ lớn của bộ nhớ dữ liệu yêu cầu một chương trình định vị hiệu quả để truy cập
tới bất kì địa chỉ nào. Điều này có nghĩa là ta không cần phải cung cấp toàn bộ địa chỉ
mỗi khi đọc hoặc viết. Đối với thiết bị PIC18, điều này được thực hiện với một chương
trình bank RAM. Nó chia không gian bộ nhớ thành 16 Bank liền kề. Tùy vào câu lệnh, tại
mỗi thời điểm có thể gửi trực tiếp địa chỉ của nó đầy đủ 12bit, 8 bit thấp hoặc một con trỏ
Bank 4 bit.
Hầu hết các câu lệnh trong tập lệnh của PIC18 dùng trong các con trỏ Bank được
gọi là Bank Select Register ( BSR ). SFR chứa 4 bit địa chỉ của một vị trí cao nhất. Câu
lệnh riêng bao gồm 8 bit thấp. Chỉ có 4 bit thấp của BSR được thực hiện ( 3:0 ). 4 bit cao
là không được sử dụng và luôn đọc là ‘0’ và không được ghi vào 4 bit này. BSG có thể
gán giá trị trực tiếp bằng câu lệnh MOVLB. BSR cho biết giá trị của Bank trong bộ nhớ
dữ liệu, 8 bit trong câu lệnh hiển thị vị trí trong Bank. Mối quan hệ giữa các giá trị của
BSR và việc phân chia các Bank trong bộ nhớ dữ liệu được hiển thị trong hình 5-7. 16
thanh ghi có thể cùng chia sẻ địa chỉ theo thứ tự thấp. Người sử dụng phải lựa chọn Bank
thích hợp trước khi thực hiện một dữ liệu đọc hoặc viết. Ví dụ, Chuyển dữ liệu chương
trình tới một địa chỉ 8 bit của F9h trong khi BSR bằng 0Fh sẽ thiết lập lại bộ đếm chương
trình.
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page

22
BÁO CÁO VĐK NÂNG CAO

Trong khi bất kì Bank nào cũng có thể được lựa chọn, chỉ những bank nào được
lựa chọn mới có thể đọc hoặc ghi vào. Việc ghi cho những bank chưa được thực hiện sẽ
được bỏ qua còn việc đọc sẽ được là ‘0’. Mặc dù vậy trạng thái của thanh ghi sẽ vẫn bị
ảnh hưởng nếu các hoạt động thành công. Sơ đồ bộ nhớ dữ liệu trong hình 5-5 cho thấy
việc thực hiện các Bank.
Trong tập lệnh của PIC18, Câu lệnh MOVFF hoàn toàn xác định địa chỉ 12-bit của
đích và thanh ghi nguồn. Khi thực hiện câu lệnh này nó bỏ qua hoàn toàn BSR. Tất cả
các câu lệnh khác bao gồm duy nhất địa chỉ có thứ tự thấp như toán hạng và phải sử dụng
BSR hoặc truy cập Bank để tìm thanh ghi đích của chúng.

Hình 2.11. Tổ chức bộ nhớ dữ liệu RAM trên PIC 18F4520
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
23
BÁO CÁO VĐK NÂNG CAO

2.5.2.2. Truy c

p Bank
Trong khi việc sử dụng BSR với một địa chỉ 8 bit cho phép người sử dụng có thể
xử lý toàn bộ phạm vi của bộ nhớ dữ liệu. Điều đó đồng nghĩa với việc người sử dụng
luôn luôn phải lựa chọn các Bank thích hợp. Nếu không thì sẽ bị đọc hoặc ghi sai vị trí.
Điều này sẽ trở nên tai hại nếu GRP là đích của một thao tác, nhưng một SFR sẽ được ghi
đè nên đó. Dùng lệnh AND/OR để kiểm tra sự thay đổi của BSR cho từng thao tác đọc

hoặc ghi bộ nhớ dữ liệu trở nên không hiệu quả. Để sắp xếp một cách hợp lý các truy cập
tới các vị trí của bộ nhớ, bộ nhớ dữ liệu được cấu hình với 1 Bank Access cho phép người
dùng có thể truy cập vào bộ nhớ mà không cần dùng BSR. AccessBank bao gồm 128byte
đầu tiên của bộ nhớ (00H-7Fh) và 128byte cuối cùng của bộ nhớ(80h-FFh) tại ô 15. Nửa
dưới là “Access RAM” và có GPRs. Phần trên của nó chứa các SFRs. Hai vùng này được
đặt cạch nhau trong Access Bank và có thể được gửi đi theo một địa chỉ 8 bits ( hình 5-5).
Bank Access được sử dụng bởi một tập lệnh của Pic bao gồm các bit Ram Access(sử
dụng ‘a’ làm tham số). Khi ‘a’ = 1 câu lệnh sử dụng BSR và địa chỉ 8 bit bên trong các
mã tác vụ cho địa chỉ bộ nhớ dữ liệu. Khi ‘a=0’ câu lệnh bắt buộc phải sử dụng truy cập
địa chỉ access bank, giá trị hiện tại của BSR sẽ được bỏ qua. Sử dụng cách này buộc phải
sử dụng câu lệnh cho phép địa chỉ hoạt động trong một chu kì mà không cần nhập các
BSR đầu tiên. Đối với địa chỉ 8 bit 80h và trên nữa, điều này giúp người dùng có thể sử
dụng SFRs hiệu quả hơn.
RAM Access dưới 80h dùng để chứa những giá trị dữ liệu mà người dùng có thể
sử dụng để truy cập nhanh. Ram Access cho phép hoạt động nhanh và nhiều hơn trong
bối cảnh cần phải lưu giữ và chuyển đổi các biến. Các sơ đồ của Access Bank là không
giống nhau khi mở rộng các tập lệnh.
2.5.2.3. M

c
đ
ích chung c

a các thanh ghi
PIC18 có thể có bộ nhớ trong GPR, đây là bộ nhớ RAM có sẵn tất cả các câu lệnh.
GPRs bắt đầu ở phía dưới của Bank (00h) và tăng dần lên trên. GPRs không được khởi
tạo khi reset nguồn và cũng không thay đổi bởi bất kì một reset nào khác.
2.5.2.4. Ch

c n

ă
ng
đặ
c bi

t c

a thanh ghi
Thanh ghi có chức năng đặc biệt là thanh ghi được sử dụng bởi CPU và các
module từ bên ngoài để kiểm soát hoạt động của thiết bị. Những thanh ghi này được thực
hiện như bộ nhớ RAM tĩnh. SFR bắt đầu từ phía trên của bộ nhớ dữ liệu từ FFFH tới
F80h chiếm toàn bộ nửa trên của 15Bank. Danh sách các thanh ghi này biểu diễn ở bảng
2.12.
[Type the document title]


KHOA ĐIỆN TỬ ĐHCN HÀ NỘI
Page
24
BÁO CÁO VĐK NÂNG CAO

SFR được phân làm 2 loại là : các chức năng bên trong (ALU, RESET, Ngắt ) và
các chức năng ngoại vi. Các thanh ghi phục vụ reset và ngắt sẽ được nói chi tiết mục của
chúng, còn các thanh ghi trạng thái của ALU được nói trong phần này. Thanh ghi liên
quan đến hoạt động của thiết bị có chức năng ngoại vi được nói trong chương các thiết bị
ngoại vi.
SFR có thể có trong các thiết bị ngoại vi có chức năng điều khiển. Unused chưa
được định nghĩa nếu đọc sẽ bằng ‘0’.

Hình 2.12.Phân bố địa chỉ của các thanh ghi chức năng

×