Tải bản đầy đủ (.doc) (78 trang)

Tìm hiểu VI điều KHIỂN PIC16F877A

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.21 MB, 78 trang )

LỜI MỞ ĐẦU
Hiện nay, ngành kỹ thuật điện tử và công nghệ thông tin tiến bộ không
ngừng. Chúng đang ngày càng phát triển và được ứng dụng trong tất cả các mặt
của đời sống. Các thiết bị điện tử dùng Vi Điều Khiển được sử dụng rộng rãi
khắp trong các ứng dụng tự động. Nó giúp chúng ta trong mọi công việc cũng
như giải trí. Các bộ Vi Điều Khiển ngày càng hiện đại, tốc độ xử lý nhanh hơn,
và có ứng dụng rộng hơn.
Một trong những ứng dụng quan trọng của Vi Điển Khiển đó là dùng
trong đo lường và điều khiển. Nhờ các loại cảm biến, ứng dụng của đo lường
bằng Vi Điều Khiển không chỉ giới hạn trong các đại lượng điện mà còn mở
rộng ra các tín hiệu không phải điện. Sử dụng Vi Điều Khiển chúng ta thu thập
các đại lượng cần đo dễ dàng hơn, có thể xử lý ngay các đại lượng đó và đưa ra
được những kết quả như mong muốn.
Với tầm quan trọng của đo lường bằng Vi Điều Khiển nên, em đã nhận
đề tài này làm đồ án tốt nghiệp để nghiên cứu, và hiểu biết thêm về Vi Điều
Khiển và các ứng dụng hay của nó trong cuộc sống thường ngày của chúng ta.

1


Mục lục
Chương 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN ........................... 6
1.1. Bộ vi điều khiển 8051 ..................................................... 7
1.2. Bộ vi điều khiển 8052 ..................................................... 13
1.3. Bộ vi điều khiển 8031 .................................................... 13
Chương 2:VI ĐIỀU KHIỂN PIC16F877A ................................... 15
2.1. Tổng quan về thiết bị ..................................................... 15
2.1.1. Hình dạng và bố trí chân của Pic16F877A ........ 15
2.1.2. Đặc tính nổi bật của bộ xử lý ............................. 15
2.1.3. Sơ đồ khối bộ vi điều khiển Pic16F877A .......... 16
2.2. Mô tả các chân chức năng của Pic16F877A .................. 17


2.3. Tổ chức bộ nhớ .............................................................. 19
2.3.1. Tổ chức bộ nhớ chương trình Flash ................... 19
2.3.2. Tổ chức bộ nhớ dữ liệu RAM ............................ 21
2.3.3. Bộ nhớ dữ liệu EEPROM ................................... 24
2.3.4. Đọc và ghi vào bộ nhớ dữ liệu EEPROM .......... .16
2.3.5. Đọc và ghi chương trình FLASH ....................... .26
2.4. Cổng vào ra ..................................................................... 26
2.4.1. Cổng A và thanh ghi TRISA .............................. 27
2


2.4.2. Cổng B và thanh ghi TRISB............................... 28
2.4.3. Cổng C và thanh ghi TRISC............................... 29
2.4.4. Cổng D và thanh ghi TRISD .............................. 31
2.4.5. Cổng E và thanh ghi TRISE ............................... 31
2.5. Các bộ Timer của chip. ................................................... 33
2.5.1. Bộ Timer0 ........................................................... 33
2.5.2. Bộ Timer1 ........................................................... 36
2.5.3. Bộ Timer2 ........................................................... 39
2.6. Bộ chuyển đổi tương tự sang số. .................................... 41
2.6.1. Bộ chuyển đổi tương tự sang số ......................... 41
2.6.2. Lựa chọn tốc độ chuyển đổi. .............................. 43
2.7. Các ngắt của PIC16F877 ................................................ 44
2.8. So sánh với Vi Điều Khiển 8051 .................................... 44
Chương 3:THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN NHIỆT ĐỘ .... 45
3.1. Sơ đồ khối tổng quát. ...................................................... 45
3.2. Khối cảm biến. ................................................................ 46
3.3. Khối chuyển đổi tương tự sang số .................................. 47
3.4. Khối điều khiển. ............................................................. 52
3.5. Khối chuyển đổi số sang tương tự. ................................. 52

3.6. Khối điều khiển thyristor. .............................................. 54
3


3.6.1. Sơ đồ cấu trúc .................................................... 54
3.6.2. Nguyên tắc điều khiển ....................................... 55
3.6.3. Sơ đồ nguyên lý ................................................. 56
3.7. Khối hiển thị LCD. ......................................................... 57
3.7.1. Các chân chức năng. ........................................... 58
3.7.2. Sơ đồ khối của HD44780. .................................. 59
3.7.3. Tập lệnh của LCD. ............................................ 63
3.8. Sơ đồ mạch hệ thống điều khiển nhiệt độ. ..................... 69
3.9. Phần mềm điều khiển ..................................................... 70
3.9.1. Lưu đồ thuật toán. ............................................... 70
3.9.2. Chương trình. ...................................................... 72

Kêt luân 77
Tài liệu tham khảo .................................................. 78

4


5


Chương 1

TỔNG QUAN VỀ VI ĐIỀU KHIỂN
Có 4 bộ vi điều khiển 8 bit chính. Đó là 6811 của Motorola, 8051 của
Intel, z8 của Xilog và Pic 16 của Microchip Technology. Mỗi một kiểu loại

trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nếu chúng đều không
tương thích lẫn nhau. Cũng có những bộ vi điều khiển 16 bit và 32 bit được sản
xuất bởi các hãng sản xuất chíp khác nhau. Với tất cả những bộ vi điều khiển
khác nhau thì tiêu chuẩn để lựa chọn các bộ vi điều khiển là:
*) Đáp ứng được nhu cầu tính toán của bài toán một cách hiệu quả về
mặt giá thành và đầy đủ chức năng có thể nhìn thấy được. Trong khi phân tích
các nhu cầu của một dự án dựa trên bộ vi điều khiển chúng ta phải biết bộ vi
điều khiển nào là 8 bit, 16 bit hay 32 bit có thể đáp ứng tôt nhất nhu cầu của bài
toán một cách hiệu quả. Nhứng tiêu chuẩn đó là:
-

Tốc độ: tốc độ lớn nhất mà vi điều khiển hỗ trợ lạ bao nhiêu.

-

Kiểu đóng vỏ: Đóng vỏ kiểu DIP 40 chân hay QFP. Đây là yêu cầu

quan trọng đối với yêu cầu về không gian, kiểu láp ráp và tạo mẫu thử cho sản
phẩm cuối cùng.
-

Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với các sản phẩm

dùng pin, ắc quy.
-

dung lượng bộ nhớ Rom và Ram trên chíp.

-


Số chân vào ra và bộ định thời trên chíp.

-

Khả năng dễ dàng nângh cấp cho hiệu suất cao hoặc giảm công suất

tiêu thụ.

6


-

Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành

sản phẩm mà một bộ vi điều khiển được sử dụng.
*) Cóp sẵn các công cụ phát triển phần mềm như các trình biên dịch,
trình hợp ngữ và gỡ rối.
*) Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy. Khả năng sẵn
sàng đáp ứng về số lượng trong hiện tại tương lai. Hiện nay các bộ vi điều
khiển 8 bit họ 8051 là có số lượng lớn nhất các nhà cung cấp đa dạng như Intel,
Atmel, Philip…
1.1. Bộ vi điều khiển 8051
Vào năm 1981 hãng Intel giới thiệu một số bộ vi điều khiển được gọi là
8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ
định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt
trên một chíp. Lúc ấy nó được coi là một „hệ thống trên chíp‟. 8051 là một bộ
xử lý 8 bit có nghĩa là CPU chỉ có thẻ làm việc với 8 bit dữ liệu tại một thời
điểm. Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý.
8051 có tất cả 4 cổng vào ra I/O mỗi cổng rộng 8 bit (hình vẽ). Mặc dù 8051 có

một ROM trên chíp cực đại là 64Kbyte, nhưng các nhà sản xuất lúc đó đã xuất
xưởng chỉ với 4Kbyte Rom trên chíp.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác
nhau sản xuất và bán bất kỳ dạng biến thể nào của 8051 mà họ thích với điều
kiện họ phải để lại mã tương thích với 8051. Điều này dẫn đến sự ra đời nhiều
phiên bản của 8051 với các tốc độ khác nhau và dung lượng Rom trên chíp
khác nhau. Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của
8051 về tốc độ và dung lượng nhớ ROM trên chíp nhưng tất cả chúng đều
tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết
chương trình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản
bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào.
7


Bảng 1.1. Các đặc tính của 8051 đầu tiên.
Đặc tính
ROM trên chíp

4Kbyte

RAM

128 byte

Bộ định thời

2

Các chân vào ra


32 1

Cổng nối tiếp Nguồn
ngắt

6

Số lượng

Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051, hãng Intel ký
hiệu nó là MSC51. Bảng trên là các đặc tính của họ 8051.
EXTERNAL
INTERRUPTS

ETC
ON - CHIP
RAM

TIMER
0
TIMER

4 I/O
PORTS

SERIAL
PORT

P P P P


TXD RXD

1

COUNTER
INPUTS

INTERRU
PT

CPU

OSC

BUS
CONTRO
L

ADDRESS/DA
TA

Hình 1.1. Bố trí bên trong của 8051
8


Mô tả chân của 8051như hình 1.2. Các thành viên của họ 8051( ví dụ 8751,
89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng
chân DIP dạng vỏ dẹp vuông QFP và dạng chip không có chân đỡ LLC thì
chúng đều có 40 chân cho các chức năng khác nhau như vào ra I/O, đọc
RW , ghi WR , địa chỉ, dữ liệu và ngắt. Cần lưu ý rằng một số hãng cung cấp

phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụng yêu cầu
thấp hơn. Tuy nhiên, vì hầu hết các nhà phát triển chính sử dụng chíp đóng vỏ
40 chân với hai hàng chân DIP nên ta chỉ tập chung mô tả phiên bản này.

Hình 1.2. Sơ đồ chân của 8051
Từ hình 1.2. ta thấy trong 40 chân có 32 chân dùng cho các cổng
P0, P1, P2, P3 với mỗi cổng có 8 chân. Các chân còn lại dành cho nguồn
Vcc, đất GND, các chân dao động XTAL1 và XTAL2, khởi động lại RST
9


cho phép chốt địa chỉ ngoài

EA, cho ngắt cất chương trình PSEN . Trong 8

chân này thì 6 chân Vcc, GND, XTAL1, XTAL2, RST và EA được các họ 8031
và 8051 sử dụng. Hay nói cách khác là chúng phải được nối để cho hệ thống
làm việc mà không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031.
Còn chân PSEN và chân ALE được sử dụng trong các hệ thống dựa trên 8031.
 Chân Vcc và chân GND tương ứng với chân số 40 và chân số 20 cung
cấp nguồn (+5V) và nối mass.
 Chân XTAL1 (chân 19) và XTAL2 (chân 18): 8051 có bộ dao động trên
chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy nó. Bộ dao
động thạch anh được nối với XTAL1 và XTAL2 cùng hai tụ điện có giá
trị 30pF. Một phía tụ được nối xuống đất như hình 1.3.
Cần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051. Tốc
độ được coi như là tần số cực đại của bộ giao động được nối tới chân
XTAL. Ta có thể sử dụng một nguồn tần số khác dao động thạch anh
chẳng hạn như bộ dao động TTL thì nó sẽ được nối tới chân XTAL1 còn
chân XTAL2 để hở như hình 1.4.

C2

XTAL2

C1
XTAL1
3 pF
0

GND

Hình 1.3. XTAL nối với 8051

NC
EXTERRNAL
OSCILLATAOR
SIGNAL

XTAL2
XTAL1
GND

Hình 1.4. XTAL nối với dao đông

ngoài

10


 Chân RST: Chân số 9 là chân tái lập RESET. Nó là chân đầu vào có


mức tích cực cao. Khi cấp xung cao tới chân này thì bộ vi điều
khiển sẽ tái lập và kết thúc mọi hoạt động. Nó có thể coi như sự tái
bật nguồn.

Muốn mạch RESET làm việc có hiệu quả thì nó phải có tối
thiểu 2 chu kì máy. Hay nói cách khác, xung cao phải kéo dài tối
thiểu 2 chu kì máy trước khi nó xuống thấp.

11


như 8751, 89C51 hoặc DS5000 thì chân EA được nối với nguồn Vcc.
Trường hợp không có ROM trên chíp như 8031 và 8051 thì mã chương
trình được lưu cất ở bộ nhớ ngoài, khi đó chân

EA được nối đất. Như

vậy chân này không bao giờ được để hở.
 Chân PSEN là chân có chức năng cho phép lưu chương trình. Ở hệ
thống 8031, khi chương trình cất ở bộ nhớ ROM ngoài thì chân này được
nối tới chân OE của ROM.
 ALE cho phép chốt địa chỉ là chân có mức tích cực cao. Khi nối 8031 tới
bộ nhớ ngoài thì cổng 0 cũng được cấp địa chỉ và dữ liệu. Hay nói cách
khác, 8031 dồn địa chỉ và dữ liệu qua cổng 0 để tiết kiệm số chân. Chân
ALE được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối tới
chân G của của chíp 73LS373.
 Nhóm chân cổng vào ra I/O: bốn cổng P0, P1, P2, P3 đều có 8 chân và
tạo thành cổng 8 bít. Tất cả các cổng khi RESET đều được cấu hình làm
cổng ra. Để làm đầu vào thì cần được lập trình.

Các cổng bình thường là cổng ra. Cổng P0 có thể vừa làm đầu ra,
vừa làm đầu vào cổng P0 từ chân 32 đến 39 phải được nối với điện trở
kéo 10K bên ngoài. Cổng P1 cũng có 8 chân, từ chân 1 đến chân 8, và có
thể sử dụng làm đầu vào hoặc ra. Khác với cổng P0, cổng P1 không cần
đến điện trở kéo bên ngoài vì nó đã có điện trở kéo bên trong. Cổng P2
cũng có 8 chân từ chân 21đến 28, và có thể sử dụng làm đầu vào hoặc ra.
Cũng giống như cổng P1, cổng P2 không cần điện trở kéo vì bên trong
đã có các điện trở kéo. Cổng P3 có 8 chân từ chân 10 đến chân 17. Cổng
này có thể sử dụng làm đầu vào hoặc ra. Cũng như chân P1và P2, cổng
P3 cũng không cần điện trở kéo.

12


Bảng 1.2. Chức năng các chân cổng P3.
Bít cổng P3
Chức năng
P3.0
Nhận dữ liệu (RXD)
P3.1
Phát dữ liệu (TXD)
P3.2
Ngắt 0(INT0)
P3.3
Ngắt 1(INT1)
P3.4
Bộ định thời 0 (TO)
P3.5
Bộ định thời 1(T1)
P3.6

Ghi (WR)
P3.7
Đọc (RD)

Chân số
10
11
12
13
14
15
16
17

Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
1.2. Bộ vi điều khiển 8052

13


Bộ vi điều khiển 8052 là thành viên khác của họ 8051, 8052 có tất cả các đặc
tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời
nữa. Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời, nó cũng
có 8K byte ROM trên chíp thay vì 4K byte như 8051. Bảng 1.3. So sánh các

đặc tính của các thành viên họ 8051. đúng.
Một thành viên khác của 8051 là chíp 8031. Chíp này không có ROM
trên chíp nên để sử dụng chíp này ta phải bổ sung ROM ngoài cho nó, ROM
ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. So với 8051 mà
chương trình được chứa trong ROM trên chíp bị giới hạn bởi 4K byte, còn

ROM ngoài chứa chương trình được gắn vào 8031 thì có thể lớn đến 64K byte.
Khi bổ xung cổng, như vậy chỉ còn lại hai cổng để thao tác. Để giải quyết vấn
đề này ta có thể bổ xung cổng vào ra cho 8031 bằng cách phối ghép 8031 với

14


bộ nhớ và cổng vào ra chẳng hạn với chíp 8255. Ngoài ra còn có các phiên bản
khác nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau.
Bảng 1.4. Các phiên bản của 8051 từ Atmel
Số linh kiện ROM
AT89C51
4K
AT89LV51
4K
AT89C1051
1K
AT89C2051
2K
AT89C52
8K
AT89LV52
8K

RAM
128
128
64
128
128

128

Chân I/O Timer
32
2
32
2
15
1
15
2
32
3
32
3

Ngắt
6
6
3
6
8
8

Vcc Đóng vỏ
5V
40
3V
40
3V

20
3V
20
5V
40
3V
40

Chương 2.

VI ĐIỀU KHIỂN PIC16F877A
Ngày nay, các bộ điều khiển đang có ứng dụng rộng rãi trong các lĩnh
vực khoa học kỹ thuật và đời sống xã hội, đặc biệt là trong tự động hoá và điều
khiển. Giờ đây với nhu cầu chuyên dụng hoá, tối ưu hoá về thời gian không
gian giá thành, bảo mật, tính chủ động trong công việc, ... ngày càng đòi hỏi
khắt

khe.

Và dòng vi
điều khiển
Pic đã đáp
ứng tốt các
yêu cầu đó.
2.1. Tổng
về thiết bị

quan

15



2.1.1. Hình dạng và bố trí chân của Pic16F877A

Hình 2.1. Hình dạng Pic16F877A
2.1.2. Đặc tính nổi bật của bộ xử lý.


Sử dụng công nghệ tích hợp cao RICSC CPU




Người sử dụng có thể lập trình với các câu lệnh đơn giản
Tất cả các câu lệnh thực hiện trong 1 chu kì ngoại trừ một số lệnh rẽ

nhánh thực hiện trong 2 chu kì.


Tốc độ hoạt động là : - Xung đồng hồ vào la DC-20MHz
- Chu kì lệnh thực hiện trong 200ns



Bộ nhớ chương trình Flash 8Kx14 Words



Bộ nhớ Ram 368x8 bytes




Bộ nhớ EFPROM 256x8 bytes.

2.1.3. Sơ đồ khối bộ vi điều khiển Pic16F877A

16


Hình 2.2. Sơ đồ khối của Pic16F877A
2.2. Mô tả các chân chức năng của Pic16F877A
Bảng 2.1. Bảng chân chức năng của Pic16F877A
Tên chân
Chân số
Chức năng của chân
OSC1/CLKIN

13

I

Đầu vào của dao động thạch anh/ngõ vào
xung clock ngoại.

17


OSC2/CLKOUT

14


O

Đầu ra của bộ dao động thạch anh. Nối
với thạch anh hay cộng hưởng trong chế
độ dao động của thạch anh. Trong chế độ
RC, ngõ ra của chân OSC2

MCLRNgõ
/VPP
vào của Master1 Clear (Reset)
I/P
hoặc
ngõ vào điện thế đƣợc lập trình. Chân
này cho phép tín hiệu RESET thiết bị tác
động ở mức thấp.
PORTA là port vào ra hai chiều.
RA0/AN0

2

I/O

RA0 có thể làm ngõ vào tương tự thứ 0.

RA1/AN1

3

I/O


RA2/AN2/VREF –

4

I/O

RA3/AN3/VREF +

5

I/O

RA4/T0CKI

6

I/O

RA1 có thể làm ngõ vào tương tự thứ 1.
RA2 có thể làm ngõ vào tương tự thứ 2
hoặc điện áp chuẩn tương tự âm. RA3
có thể làm ngõ vào tương tự thứ 3 hoặc
điện áp chuẩn tương tự dương. RA4 có
thể làm ngõ vào xung clock cho bộ định
thời Timer0. Hoặc làm đầu ra. RA5 có
thể làm ngõ vào tương tự thứ 4 hoặc làm
đầu ra.

RA5/ SS /AN4


7

I/O

PORTB là port vào ra hai chiều.

18


RB0/INT

33

I/O

RB1

34

I/O

RB2

35

I/O

RB3/PGM


36

I/O

RB4

37

I/O

RB5

38

I/O

RB6/PGC

39

I/O

RB7/PGD

40

I/O

RB0 có thể làm chân ngắt ngoài.


PORTC là port vào ra hai chiều.
RC0/T1OSO/T1C

15

I/O

KI

RC0 có thể là ngõ ra của bộ dao động
Timer1 hoặc ngõ vào xung clock cho
Timer1.

16

I/O

RC1/T1OSI/CCP2

RC1 có thể là ngõ vào của bộ dao động
Timer1 hoặc ngõ vào Capture2/ngõ ra
compare2/ngõ ra PWM2.

17

I/O

RC2/CCP1

RC2 có thể là ngõ vào Capture1/ngõ ra

compare1/ngõ vào PWM1.

18

I/O

RC3/SCK/SC

RC3 có thể là ngõ vào xung clock đồng
bộ nối tiếp/ngõ ra trong cả hai chế độ SPI
và I2C.

23

I/O

RC4/SDI/SDA

độ SPI) hoặc dữ liệu I/O (chế độ I2C).
24

I/O

RC5/SDO

RC5 có thể là dữ liệu ngoài SPI (chế độ
SPI).

25
RC6/TX/CK


RC4 có thể là dữ liệu bên trong SPI (chế

I/O

RC6 có thể là chân truyền không đồng bộ
USART hoặc đồng bộ với xung đồng

19


hồ.
26

I/O

RC7 có thể là chân nhận không đồng bộ
USART hoặc đồng bộ với dữ liệu.

RD0/PSP0

19

I/O

RD1/PSP1

20

I/O


RD2/PSP2

21

I/O

PORT là port vào ra hai chiều hoặc là
parallel slave port khi giao tiếp với bus
của bộ vi xử lý.

RD3/PSP3

22

I/O

RD4/PSP4

27

I/O

RD5/PSP5

28

I/O

RD6/PSP6


29

I/O

RD7/PSP7

30

I/O

RC7/RX/DT

RE2 có thể

điều

PORTE là port vào 8ra hai chiều.
RE0/ RD/AN5
I/O
RE0 có thể điều khiển việc đọc parallel
slave port hoặc là ngõ vào tƣơng tự thứ
5.
RE1/WR /AN6
9
I/O
RE1 có thể điều khiển việc ghi parallel
slave port hoặc là ngõ vào tƣơng tự thứ
6.
RE2/CS /AN7


10

I/O
khiển việc chọn parallel slave port hoặc là
ngõ vào tương tự thứ

VSS

12,31

P

VDD

11,32

P

Các kí hiệu:

I: input

O: output

7.
mass
Cung cấp nguồn dương cho các mức logic
và những chân I/O.


I/O:input/output

P: power

2.3. Tổ chức bộ nhớ
20


Pic16F877A có 3 khối bộ nhớ: Bộ nhớ chương trình Flash, bộ nhớ dữ
liệu RAM, bộ nhớ EEPROM.
2.3.1. Tổ chức bộ nhớ chương trình Flash
Vi điều khiển Pic16F877A có bộ nhớ chương trình 13 bit và có 8Kx14 từ
mã của bộ nhớ chương trình Flash, được chia thành 4 trang mỗi trang 2Kx14 từ
mã.
Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, vector ngắt bắt đầu từ
0004h.
Stack có 8 mức dùng để lưu địa chỉ lệnh thực hiện tiếp theo sau lệnh
CALL và khi xẩy ra ngắt.

21


PC<12:0>

Stack level 1

Stack level 2

Stack level 8


Reset vector

erput vector

0000H

Int
0004H
0005H

Page0
07FFH

Page1

0800H

0FFFH

Page2
17FFH

Page3

1800H
1FFFH

22



Hình 2.3. Bản đồ bộ nhớ chương trình và các ngăn xếp
2.3.2. Tổ chức bộ nhớ dữ liệu RAM
RAM là bộ nhớ có thể đọc/ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ
RAM của Pic16F877A có 4 Bank, mỗi Bank có dải địa chỉ 0-7FH (128 byte) trên
các Bank những thanh ghi đa mục đích, nó hoạt động như một RAM tĩnh và những
thanh ghi chức năng đặc biệt ở vùng địa chỉ thấp.

Hình 2.4. Hình ảnh các Bank

23


Các Thanh ghi đa mục đích (General Purpose Register), các thanh ghi
này được truy cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR,
tổng cộng có 368 bytes.
Các thanh ghi chức năng đặc biệt: các thanh ghi này được dùng bởi CPU
và các khối ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị. Các
thanh ghi này có thể phân loại vào bộ phận trung tâm (CPU) và ngoại vi.
Các thanh ghi trạng thái STATUS: có 4 thanh ghi trạng thái trên 4 dãy,
tại các địa chỉ 03h, 83h, 103h, 108h. Các thanh này cho biết trạng thái của phần
tử logic toán học ALU, trạng thái Reset, trạng thái của các bít lựa chọn dãy
thanh ghi cho bộ nhớ dữ liệu.
Thanh ghi trạng thái có thể là kết quả của một số lệnh như là với một số
thanh ghi khác. Nếu thanh ghi trạng thái là kết quả bởi một lệnh mà tác động
đến các bít Z, DC, C thì việc ghi vào các bit này là không thể.
Các thanh ghi lựa chọn OPTION_REG: có hai thanh ghi lựa chọn tai các
địa chỉ 81h và 181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều
bits điều khiển khác nhau để xác định hệ số định trước TMR0, hệ số định sau
WDT, ngắt ngoài INT, TMR0, các điện áp treo cổng B.
Các thanh ghi INTCON: có 4 thanh ghi INTCON tại địa chỉ 0Bh, 8Bh,

10Bh, 18Bh, các thanh ghi này có thể đọc và ghi, nó chứa đựng nhiều sự cho
phép và các bits cờ cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB
và chân ngắt ngoài RB0/INT.
Thanh ghi PIE1: tại địa chỉ 8Ch chứa đựng các bít cho phép riêng lẻ cho
các ngắt ngoại vi CCP2, ngắt xung đột tuyến SSP và EEPROM ghi các hoạt
động ngắt.
Thanh ghi PCON (Power Control): chứa bít cờ cho phép phân biệt giữa
việc Reset hệ thống (POR) để Reset MCLR ngoại với Reset WDT.
24


Hình 2.5. Hình ảnh nạp PCLATH tới PC
PLC và PCLATH: chương trình đếm chỉ rõ địa chỉ của lệnh tiếp theo
được thực hiện. PC có độ rộng 13 bit, byte thấp được gọi là thanh ghi PLC,
thanh ghi này có thể đọc hoặc ghi toàn bộ sự cập nhật của nó thông qua thanh
ghi PCLATH.
2.3.3. Bộ nhớ dữ liệu EEPROM
Các bộ nhớ này có thể đọc và ghi trong khi các hoạt động vẫn diễn ra một
cách bình thường. Bộ nhớ dữ liệu không trực tiếp sắp xếp dữ liệu trên các
thanh ghi dữ liệu còn trống. Thay vì đó là ghi các địa chỉ gián tiếp qua các
thanh ghi chức năng đặc biệt. Có 6 thanh ghi SFR dùng để đọc và ghi bộ nhớ
chương trình và bộ nhớ dữ liệu EEPROM đó là các thanh ghi:
EECON 1

EEDATH

EECON 2

EEADR


EEDATA
EEADRH
Bộ nhớ dữ liệu EEPROM cho phép đọc và ghi các byte. Khi có tác động
tới khối bộ nhớ dữ liệu. Thanh ghi EEDATA giữ 8 bít dữ liệu để đọc/ghi và

25


×