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

ĐỀ TÀI: THIẾT KẾ BỘ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN DÙNG PIC 16F877A

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 (4.11 MB, 150 trang )

Đồ án tốt nghiệp

Lời nói đầu

LỜI NÓI ĐẦU
Trong công cuộc xây dựng chủ nghĩa xã hội và quá trình thực hiện công nghiệp
hoá, hiện đại hoá đất nước, Tự Động Hóa giữ vai trò rất quan trọng là yếu tố quan
trọng thúc đẩy nền khoa học công nghệ đất nước phát triển.
Từ những năm 80 của thế kỷ 20 đến nay, công nghệ chế tạo linh kiện bán dẫn
ngày càng phất triển không ngừng. Với mức tích hợp ngày càng cao, công suất tiêu tán
bé, thông minh hơn nó đã giúp làm thay đổi hẳn nền khoa học công nghệ của thế giới.
Bước vào đầu thế kỷ 21 kỹ thuật điện tử, vi điện tử, công nghệ bán dẫn, đặc biệt là
công nghệ Nano, hệ thống nhúng sẽ là “Chiếc chìa khóa kỹ thuật” cho các nước trên
thế giới bước vào kỷ nguyên mới, kỷ nguyên của công nghệ Vi xử lý và công nghệ
Nano.
Ở Việt Nam kĩ thuật vi xử lí cũng như vi điều khiển đang phát triển mạnh mẽ
được thể hiện như ở sân chơi Robocon được tổ chức hàng năm. Tại trường ĐẠI HỌC
BÁCH KHOA ĐÀ NẴNG các công nghệ ấy đã được đưa vào tiếp cận đến từng sinh
viên từ lí thuyết cho tới mô phỏng bằng phần mềm nhưng sinh viên chưa được thực
hành và thí nghiệm trên bo mạch thực.Và nhu cầu bức thiết bây giờ là những lý thuyết
đó phải được đưa vào thực hành thí nghiệm để nắm bắt được các tính chất đặc điểm
thực tế của vi điều khiển cũng như các linh kiện điện tử chuyên dùng.Xuất phát từ nhu
cầu thực tiến ấy dưới sự hướng dẫn tận tình của T.s : Nguyễn Hoàng Mai chúng tôi đã
thực hiện đề tài “THIẾT KẾ BỘ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN DÙNG
PIC 16F877A” để thực hiện khóa luận tốt nghiệp của mình.
Do kiến thức còn hạn chế, kinh nghiệm ít ỏi bên cạnh đó thời gian có hạn nên
không thể tránh những thiếu sót, chúng em kính mong quý Thầy cô trong Bộ môn Tự
Động Hóa vui lòng bỏ qua và đóng góp ý kiến để chúng em ngày càng hoàn thiện hơn.
Đà Nẵng, tháng 06 năm 2011

Sinh viên thực hiện



Lê Tất Thắng
Nguyễn Như Thiết

SVTH: Lê Tất Thắng – Nguyễn Như Thiết


Đồ án tốt nghiệp

SVTH: Lê Tất Thắng – Nguyễn Như Thiết

Mục lục


Đồ án tốt nghiệp

CHƯƠNG 1: TỔNG QUAN VỀ VI ĐIỂU KHIỂN
1.1. Lịch sử phát triển của bộ vi xử lí và bộ vi điều khiển
Sự ra đời và phát triển nhanh chóng của kĩ thuật vi điện tử mà đặc trưng là kĩ
thuật vi xử lí đã tạo ra một bước ngoặt quan trọng trong sự phát triển của khoa học tính
toán , điều khiển và xử lí thông tin.Kĩ thuật vi xử lí đóng vai trò rất quan trọng trong
tất cả các lĩnh vực của cuộc sống và khoa học kĩ thuật đặc biệt là lĩnh vực Tin học và
Tự động hóa.
Năm 1971, hãng Intel cho ra đời bộ vi xử lí (Microprocessor) đầu tiên trên thế
giới với tên gọi Intel-4004/4 bit ,nhằm đáp ứng nhu cầu bức thiết của một công ty kinh
doanh là hãng truyền thông BUSICOM.Intel-4004 là kết quả của một ý tưởng quan
trọng trong kĩ thuật vi xử lí số.Đó là một kết cấu logic mà có thể thay đổi được chức
năng của nó bằng chương trình ngoài chứ không phát triển theo hướng tạo ra một cấu
trúc cứng chỉ thực hiện một số chức năng nhất định như trước đây.
Sau đó, các bộ vi xử lí mới liên tục được đưa ra trên thị trường và ngày càng

được phát triển, hoàn thiện hơn trong các thế hệ sau:
Vào năm 1972, hãng Intel đưa ra bộ vi xử lí 8-bit đầu tiên với tên Intel8008/8bit.
Từ năm 1974 đến 1975, Intel chế tạo các bộ vi xử lí 8-bit 8080 và 8085A.
Cũng vào khoảng thời gian này, một loạt các hãng khác trên thế giới cũng đã
cho ra đời các bộ vi xử lí tương tự như : 6800 của Motorola với 5000
tranzitor,Signetics 6520, 1801 của RCA, kế đếm là 6502 của hãng MOS Technology
và Z80 của hãng Zilog.
Vào năm 1976 Intel giới thiệu bộ Vi điều khiển (Microcontroller) 8748, một
chíp tương tự như các bộ vi xử lí và là chíp đầu tiên trong họ vi điều khiển MCS-48.
8748 là một vi mạch chứa trên 17000 transistor, bao gồm một CPU, 1K byte EPROM,
64 byte RAM,27 chân xuất nhập và một bộ định thời 8-bit.IC này và các IC khác tiếp
theo của họ MCS-48 đã nhanh chóng trở thành chuẩn công nghiệp trong các ứng dụng
hướng điều khiển(control-oriented application).

SVTH: Nguyễn Như Thiết

1


Đồ án tốt nghiệp
Năm 1978 xuất hiện Intel 8086 là loại bộ vi xử lí 16 bit với 29.000 tranzitor,
Motorola 68000 tích hợp 70.000 tranzitor, APX 432 chứa 120.000 tranzitor.Bộ vi xử lí
của Hewlet Pakard có khoảng 450.000 tranzitor.Từ năm 1974 đến 1984 số tranzitor
tích hợp trong một chíp tăn khoảng 100 lần.
Năm 1983, Intel đưa ra bộ vi xử lí 80286 dùng trong các máy vi tính họ
AT(Advanced Technology). 80286 sử dụng I/O 16 bit, 24 đường địa chỉ và không gian
nhớ địa chỉ thực 16MB.Năm 1987,Intel đưa ra bộ vi xử lí 80386/32 bit. Năm 1989
xuất hiện bộ vi xử lí Intel 80486 là cải tiến của Intel 80386 với bộ nhớ ẩn và mạch tính
phép toán đại số dấu phẩy động.
Năm 1992, xuất hiện Intel 80586 còn gọi là Pentium 64bit chứa 4 triệu

tranzitor.
Độ phức tạp và gọn nhẹ về kích thước và khả năng của các bộ vi điều khiển
được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi
điều khiển đầu tiên của họ vi điều khiển MCS-51.So với 8048 chíp 8051 chứa trên
60.000 tranzitor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, 1 port
nối tiếp và 2 bộ định thời 16 bit –một số mạch đáng chú ý trong một IC đơn.
1.2.Giới thiệu về các họ vi xử lí và các họ vi điều khiển thông dụng
1.2.1.Giới thiệu về họ vi điều khiển MCS-51
Họ vi điều khiển MCS-51 được hãng Intel cho ra đời vào năm 1980 với bộ vi
điều khiển đầu tiên của nó là chíp 8051.
Nhìn sơ đồ hình 1.2 ta thấy 32 chân trong tổng số 40 chân của 8051 có tác dụng
xuất nhập, hình thành 4 port 8-bit. Với các thiết kế yêu cầu một mức tối thiểu bộ nhớ
ngoài hoặc các thành phần bên ngoài khác, ta có thể sử dụng các port này làm nhiệm
vụ xuất/nhập, 8 đường cho mỗi port có thể xử lí như là một đơn vị giao tiếp với các
thiết bị song song như : máy in, bộ biến đổi D/A,v.v… hoặc mỗi đường có thể hoạt
động độc lập giao tiếp với một thiết bị đơn bit như chuyển mạch, LED, tranzitor, cuộn
dây, động cơ,…

SVTH: Nguyễn Như Thiết

2


Đồ án tốt nghiệp

Hình 1.1 : Sơ đồ khối của chíp 8051

Hình 1.2 : Sơ đồ chân của 8051

SVTH: Nguyễn Như Thiết


3


Đồ án tốt nghiệp
1.2.2.Giới thiệu về họ vi điều khiển 8 bit của Motorola
Các họ vi điều khiển của Motorola được kí hiệu bắt đầu bởi chữ cái MC. Vì cố
gắng giữ lại phần mềm các nhà chế tạo linh kiện bán dẫn thường duy trì sự tương thích
với các bộ vi xử lí đầu đời.Hãng Motorola đưa ra bộ vi điều khiển M6801 đầu tiên của
hãng trên thị trường thế giới vào năm 1978 và bộ vi điều khiển này được chế tạo trên
cơ sở sử dụng bộ vi xử lí M6800. Bộ vi điều khiển M6801 có bộ nhớ ROM và RAM
ngoài lớn nhất lên đến 64KB với mạch dao diện vào/ra, truyền thông nối tiếp không
đồng bộ đã bắt đầu phổ biến trong hệ thống điều khiển ô tô.
Sau đó vào năm 1985 Motorola đã phát triển bộ vi điều khiển 68HC11 tương
thích với bộ vi xử lí M6800. Bộ vi điều khiển MC68HC11 tiêu thụ ít công suất hơn và
cho phép tín hiệu nhiễu cao hơn so với các bộ vi xử lú đầu đời.MC68HC11 có nhiều
phiên bản, ví dụ MC68HC11A8 và MC68HC11E9. Một số hãng như Misubishi,
Toshiba cũng sản xuất các bộ vi điều khiển này theo công nghệ của Motorola.
Bảng dưới đây liệt ke các đặc điểm cơ bản của một số chíp vi điều khiển trong
họ 68HC11:
MC

ROM

RAM

EEPROM

ADC


I/O

68HC11A8

8KB

256byte

512 bytes

8 channels

38 pins

68HC811E2

0

256 bytes

2 KB

-

-

68HC11F1

0


1 KB

-

-

-

68HC11E9

12KB

512 bytes

512 bytes

-

-

68HC11B8

8 KB

256 bytes

512 bytes

-


-

68HC11B0

0

256 bytes

0

-

-

68HC11B1

0

256 bytes

512 bytes

-

-

68HC11D3

4 KB


192 bytes

-

-

40 pins

68HC11A0

0

256 bytes

0

-

22 pins

Bảng 1.1 : Một số chíp vi điều khiển trong họ 68HC11
1.2.3.Giới thiệu về họ vi điều khiển ARM và chíp ARM cortex A8
1.2.3.1 Họ chíp ARM
ARM(viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lý
32-bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng.Do có đặc điểm tiết

SVTH: Nguyễn Như Thiết

4



Đồ án tốt nghiệp
kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di độngnơi mà việc tiêu tán công suất thấp là mục tiêu thiết kế quan trọng nhất.
Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến cấu
trúc 32-bit được sản xuất nhiều nhất trên thế giới. CPU ARM có ở khắp nơi trong các
sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện thoại di động, máy đa
phương tiện, máy trò chơi cầm tay, và máy tính cầm tay) cho tới các thiết bị ngoại vi
máy tính (ổ đĩa cứng, bộ định tuyến để bàn)
Các đặc tính thiết kế:
ARM được biết đến với thiết kế gọn, đơn giản và nhanh theo kiểu nối cứng
không có vi chương trình, giống với bộ vi xử lý 8-bit 6502 đã từng được dùng trong
các máy vi tính trước đó của hãng Acorn.
Cấu trúc ARM bao gồm các đặc tính của RISC như sau:
-

Cấu trúc nạp/lưu trữ.

-

Không cho phép truy xuất bộ nhớ không thẳng hàng (bây giờ đã cho
phép trong lõi Arm v6)

-

Tập lệnh trực giao

-

File thanh ghi lớn gồm 16 x 32-bit


-

Chiều dài mã máy cố định là 32 bit để dễ giải mã và thực hiện pipeline,
để đạt được điều này phải chấp nhận giảm mật độ mã máy.

-

Hầu hết các lệnh đều thực hiện trong vòng một chu kỳ đơn.

So với các bộ vi xử lý cùng thời như Intel 80286 và Motorola 68020, trong
ARM có một số tính chất khá độc đáo như sau:
-

Hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện, điều này làm
giảm việc phải viết các tiêu đề rẽ nhánh cũng như bù cho việc không có
một bộ dự đoán rẽ nhánh.

-

Trong các lệnh số học, để chỉ ra điều kiện thực hiện, người lập trình chỉ
cần sửa mã điều kiện

-

Có một thanh ghi dịch đóng thùng 32-bit mà có thể sử dụng với chức
năng hoàn hảo với hầu hết các lệnh số học và việc tính toán địa chỉ.

-

Có các kiểu định địa chỉ theo chỉ số rất mạnh


SVTH: Nguyễn Như Thiết

5


Đồ án tốt nghiệp
-

Có hệ thống con thực hiện ngắt hai mức ưu tiên đơn giản nhưng rất
nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi.

1.2.3.2. ARM cortex A8:

Hình 1.3 : Chíp ARM cortex A8
Các Cortex-A8 thế hệ thứ bảy là một thiết kế lõi CPU ARM được cấp phép bởi
một loạt các nhà sản xuất. Đại đa số các điện thoại thông minh, trò chơi cầm tay và các
thiết bị di động khác sử dụng bộ vi xử lý ARM: Các Cortex-A8 - mô tả như là hiệu
năng cao nhất của ARM, thiết kế công suất thấp nhất được - mục tiêu điện thoại di
động, các máy nghe nhạc, và các thiết bị di động khác, nhưng cũng có thể mang lại
cho ARM vào các mục thiết bị mới, bao gồm bộ mã hóa truyền thông.

SVTH: Nguyễn Như Thiết

6


Đồ án tốt nghiệp

Hình 1.4 : Các thế hệ ARM


1.2.3.3 Sơ đồ cấu trúc và tính năng của chip ARM Cortex A8
Các bộ vi xử lý ARM Cortex-A8 ™ dựa trên kiến trúc ARMv7 và có khả năng
quy mô ở tốc độ từ 600MHz đến lớn hơn 1GHz. Bộ vi xử lý Cortex-A8 có thể đáp ứng
các yêu cầu về điện năng tối ưu hóa thiết bị di động cần phải hoạt động trong ít hơn
300MW; và hiệu suất tối ưu hóa các ứng dụng đòi hỏi người tiêu dùng 2000 Dhrystone
MIPS.

SVTH: Nguyễn Như Thiết

7


Đồ án tốt nghiệp

Hình 1.5 :The A8 sports media, security, and Java engines

Hình 1.6 : Cấu trúc tổng quan ARM cortex A8
1.2.3.4 Control flow - điều khiển dòng dữ liệu

SVTH: Nguyễn Như Thiết

8


Đồ án tốt nghiệp
Theo ARM, A8 có các tính năng tiên tiến một đường dẫn superscalar rằng có thể
thực hiện hướng dẫn nhiều và đồng thời, để cung cấp "hơn 2,0 DMIPS mỗi MHz."

Hình 1.7 : Control flow


Instruction Fetch: Lấy chỉ thị
Instruction Decode: Giải mã chỉ thị

Hình 1.8 : Instruction Decode
Instruction Execution: Thực thi chỉ thị

SVTH: Nguyễn Như Thiết

9


Đồ án tốt nghiệp

Hình 1.9 : Instruction Execution

1.2.3.5 Memory system on Cortex A8 – Bộ nhớ hệ thống trong Cortex A8
Cấu trúc Harvard Cấp 1 - 32KByte ,4 cách thiết lập liên kết
- Hướng dẫn VIPT lưu trữ;
VIPT lưu trữ với bí danh phát hiện-cấp lưu trữ dữ liệu 1 là ngăn chặn
- Non-Neon đọc nhớ lưu trữ phát lại ở chỉ dẫn tiếp theo
- Hạn chế sự phức tạp trong giai đoạn dẫn sau đó
- Tốt cho nguồn điện và tần số đồng hồ
- Neon dữ liệu không được phân bố ở L1
(nhưng sẽ đọc/ cập nhật trong L1 nếu cần thiết)
Hợp nhất 2 cấp lưu trữ
- PIPT, 8 cách thiết lập liên kết
- Đầy đủ pipelined và non-blocking lên đến 9 bộ nhớ giao dịch
- Dòng gia công cho đơn vị Neon; lên đến 16GByte băng thông/s 64
hoặc 128 bit AMBA AXI kết nối vào bộ nhớ.

- Split giao dịch dựa trên giao thức bùng nổ

SVTH: Nguyễn Như Thiết

10


Đồ án tốt nghiệp
- Hỗ trợ nhiều giao dịch bộ nhớ nổi bật để giảm thiểu bộ nhớ latencies

Memory system

Hình 1.10 : Memory system
LS pipeline - Kênh LS
- Địa chỉ được chia nhỏ và sử dụng để dự đoán cách cache
- Tiết kiệm điện năng và cải thiện thời gian
- Tải dữ liệu chuyển tiếp tại E3 đến tất cả các nguồn quan trọng
- Một chu kỳ tải sử dụng dành cho ALU
- Lưu trữ dữ liệu không bắt buộc tới E3

BIU pipeline - Kênh BIU
- 9-chu kỳ tối thiểu độ trễ truy cập đến bộ đệm L2
- L2 RAM tiêu chuẩn sử dụng trình biên dịch (64k-2MB)
- Giao diện 64/128bit AXI bus L3 hỗ trợ lên đến 9 giao dịch nổi bật.
1.2.3.6 NEON interface: giao diện NEON
A8 là thế hệ đầu tiên của bộ xử lý của ARM thiết kế riêng để tích hợp nó Neon - số nguyên và điểm đường ống nổi cho phương tiện truyền thông và xử lý tín
hiệu. Khi ARM Neon công bố vào tháng Mười năm 2004, nó cho biết các chip hỗ trợ

SVTH: Nguyễn Như Thiết


11


Đồ án tốt nghiệp
hướng dẫn có thể giải mã Neon một dòng MP3 trong 8-10MHz ,giúp A8 cung cấp một
cải tiến bốn lần trên mỗi chu kỳ đồng hồ trên phương tiện truyền thông khả năng xử lý
trong bộ xử lý ARM9-class - một khả năng có thể dẫn đến độ phân giải lớn hơn, màn
hình VGA và WVGA trên các thiết bị dựa trên ARM phát lại video

Hình 1.11 : NEON interface
Nghiêng về cuối đường dẫn, các điểm dừng
-Làm giảm giao diện phức tạp xử lý ngoại lệ không cần thiết,
tách riêng hàng đợi từ máy số nguyên
-Loại bỏ việc sử dụng tải tác động tiêu cực NEON
-> ARM chuyểnnonblocking file đăng ký ARM giúp ẩn độ trễ
Dẫn tới và từ hệ thống bộ nhớ L2
-Lên đến 8 giao dịch nổi bật
-Có thể nhận được 128 bit / chu kỳ
-Có thể nhận được dữ liệu từ hệ thống bộ nhớ L1 hoặc L2
1.2.3.7 NEON media engine unit: Đơn vị truyền thông NEON
Instruction issue - Đưa ra chỉ dẫn
Tạo lập chương trình tĩnh với cháy nổ và bỏ qua
1 LS + 1 NINT / NFP có thể phát hành mỗi chu kỳ
Execution pipelines- Thực thi
Tất cả các đường dẫn là 64-bit SIMD

SVTH: Nguyễn Như Thiết

12



Đồ án tốt nghiệp
Điểm nổi MAC thực hiện bằng cách sử dụng cả hai đường dẫn FADD và
FMUL

Hình 1.12 : NEON media engine unit
1.2.3.8 Tính năng khác
Một tính năng mới trong A8 là một chỉ dẫn "Jazelle-RCT" đặt cho Java. A8 hỗ
trợ Jazelle-RCT, được thiết kế để làm việc với phía trước-của-thời gian biên dịch của
các công nghệ như Java Nó cũng có. Có thể hỗ trợ NET, hoặc perl, kết hợp. Với JIT
(just-in-time) hoặc DAC (năng động, thích ứng biên soạn) trình biên dịch cung cấp bởi
Sun, Applix, Esmertec hoặc những người khác Jazelle-RCT cung cấp xử lý rất hiệu
quả trong một dấu chân rất nhỏ -. trong một dấu chân càng gần bytecode càng tốt ".
Thêm vào đó, ARM sẽ cung cấp một loạt các phát triển và gỡ rối các công cụ,
công nghệ mô hình hóa, và các thư viện di động thể chất để hỗ trợ các kỹ sư thiết kế
bán dẫn silicon trên bộ vi xử lý A8. Chúng bao gồm:
Kiến trúc RealView với hàng loạt các ESL (hệ thống điện tử cấp) các công cụ
để tạo mẫu nhanh và thăm dò kiến trúc, và để mô phỏng một mục tiêu trước khi phần
cứng có sẵn AMBA thiết kế tự động hóa công cụ thiết kế, dựa trên MaxSim công
nghệ, cung cấp tự động hóa thiết kế cho dòng chảy tiên tiến AMBA kết nối hệ thống
phụ RealView phát triển hàng loạt, bao gồm phát triển RealView Suite, bao gồm công

SVTH: Nguyễn Như Thiết

13


Đồ án tốt nghiệp
cụ sinh mã với Cortex-A8 cải tiến bộ vi xử lý cụ thể. Các công cụ hỗ trợ tất cả các
tính năng xử lý A8, bao gồm các phương tiện truyền thông Neon và tín hiệu mở rộng

chế biến (Neon tuân thủ các tiêu chuẩn OpenMAX Nhóm Khronos, và do đó nên hỗ
trợ các công cụ phù hợp với tiêu chuẩn đó cũng) CoreSight debug công nghệ - các A8
bao gồm Embedded Trace Macrocell công nghệ và thực hiện các giao diện ARMv7
debug kiến trúc phù hợp. An CoreSight sẵn DK-A8 thiết kế bộ mở rộng khả năng gỡ
lỗi và dấu vết để che toàn bộ hệ thống-trên-chip bao gồm nhiều bộ xử lý ARM, DSP,
và thiết bị ngoại vi thông minh, yêu cầu ARM. Artisan Advantage-CE thư viện cho
phép hoạt động tốc độ cao và tiêu thụ điện năng thấp tĩnh và động. Bao gồm hơn một
ngàn tế bào, rất nhiều thiết kế đặc biệt cho A8, ARM nói. Giảm rò rỉ điện là đạt được
thông qua điện Gating MT-CMOS tế bào và duy trì flip-flops để hỗ trợ các chế độ ngủ
và chế độ chờ. Với bộ xử lý Cortex-A8, ARM đã thể hiện cam kết của mình để tạo
điều kiện cho thế hệ kế tiếp của điện thoại di động tiên tiến, các máy nghe nhạc và các
thiết bị di động mới đòi hỏi phải xử lý tín hiệu số mạnh mẽ và khả năng kiểm soát.
1.2.4. Giới thiệu về họ vi điều khiển Pic của microchip
PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer” ( Máy
tính khả trình thông minh) là sản phẩm của hãng General Instrument đặt cho dòng sản
phẩm đầu tiên của họ là PIC 1650. Lúc này Pic dùng để giao tiếp với các thiết bị ngoại
vi cho máy chủ 16 bit CP1600, vì vậy người ta gọi PIC với tên là “ Peripheral
Interface Controller” ( bộ điều khiển giao tiếp ngoại vi) .
Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và chủ sở hữu
mới (Microchip Technology) huỷ bỏ hầu hết các dự án – lúc đó đã quá lỗi thời. Tuy
nhiên PIC được bổ sung EEPROM để tạo thành một bộ điều khiển vào ra khả trình.
Ngày nay có rất nhiều dòng PIC được sản xuất với hàng loạt các modul ngoại vi được
tích hợp sẵn ( như :USART, PWM, ADC…) với bộ nhớ chương trình từ 512 word đến
32k word.
PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh 12 Bit ví dụ
PIC12Cxxx) và mid-range (độ dài mã lệnh 14 bit , ví dụ PIC16Fxxx), tập lệnh bao
gồm khoảng 35 lệnh, và 70 lệnh đối với dòng PIC high-end( có độ dài mã lệnh 16bit
PIC18Fxxxx). Tập lệnh bao gồm các lệnh tính toán trên các thanh ghi, và các hằng số,
hoặc các vị trí ô nhớ, cũng như có các lệnh điều kiện, nhảy/ gọi hàm, và các lệnh quay
14

SVTH: Nguyễn Như Thiết


Đồ án tốt nghiệp
trở về, nó cũng có các chức năng phần cứng khác như ngắt hoặc sleep( chế độ hoạt
động tiết kiệm điện ). Microchip cung cấp môi trường lập trình MPLAB0, nó bao gồm
phần mềm mô phỏng và trình dịch ASM.
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng
chúng ta có thể điểm qua một vài nét như sau :
 8/16/24/32 bit CPU, xây dựng theo kiến trúc Harvard
 Flash và Rom có thể tuỳ chọn 256 byte đến 256 kbybe
 Bộ nhớ nội EEPROM - có thể ghi/ xoá lên tới hàng triệu lần
 Các cổng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 0 và
1, dòng khoảng vài chục mA)
 8/16 bit timer
 Modun giao tiếp ngoại vi nối tiếp không đồng bộ: USART
 Modun giao tiếp ngoại vi song song (kiểu máy in)
 Bộ chuyển đổi ADC 10 bit nội gồm 8 kênh đầu vào
 Module ngoại vi MSSP dùng cho các giao tiếp I2C, SPI
 Modul CCP có chức năng
o Comparator (so sánh)
o Capture
o PWM: dùng trong điều khiển động cơ
Một số dòng vi điều khiển PIC hỗ trợ thêm:
 Hỗ trợ điều khiển động cơ 3 pha, 1 pha
 Hỗ trợ giao tiếp USB
 Hỗ trợ điều khiển Ethernet
 Hỗ trợ giao tiếp CAN
 Hỗ trợ giao tiếp LIN
 Hỗ trợ giao tiếp IRDA

 DSP những tính năng xử lý tín hiệu số

SVTH: Nguyễn Như Thiết

15


Đồ án tốt nghiệp
CHƯƠNG 2: LẬP TRÌNH CHO VI ĐIỀU KHIỂN
2.1 Tập lệnh của vi điều khiển PIC 16F877A
PIC là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction Set
Computer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
Nhóm lệnh thao tác trên bit.
Nhóm lệnh thao tác trên byte.
Nhóm lệnh điều khiển.
+ Đối với dòng vi điều khiển PIC16Fxxx, mỗi lệnh được mã hóa thành 14 bit
word, bao gồm các bit opcode (dùng để xác định lệnh nào được mã hóa) và các bit mô
tả một hay vài tham số của lệnh.
+ Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte
cần thao tác) và d (xác định nơi chứa kết quả thực thi lệnh). Nếu d = 0, kết quả sẽ được
đưa vào thanh ghi W. Nếu d = 1, kết quả được đưa vào thanh ghi được mô tả bởi tham
số f.
+ Đối với nhóm lệnh thao tác trên bit,ta có hai tham số b (xác định bit cần thao
tác) và f (xác định địa chỉ byte dữ liệu cầnthao tác).
+ Đối với nhóm lệnh điều khiển chỉ có một tham số duy nhất là k (k có thể là 8
bit trong trường hợp các lệnh bình thường hay 11 bit trong trường hợp là lệnh CALL
và lệnh GOTO) dùng để mô tả đối tượng tác động của vi điều khiển (một label, một
hằng số nào đó).
+ Mỗi lệnh sẽ được vi điều khiển thực thi xong trong vòng một chu kì lệnh,
ngoại trừ các lệnh làm thay đổi giá trị bộ đếm chương trình PC cần 2 chu kì lệnh. Một

chu kì lệnh gồm 4 xung clock của oscillator. Ví dụ ta sử dụng oscillator có tần số 4
MHz thì tần số thực thi lệnh sẽ là 4MHz/4 = 1 MHz, như vậy một chu kì lệnh có thời
gian 1 uS.
+ Các lệnh thao tác trên một thanh ghi bất kì đều thực hiện cơ chế ReadModify-Write,tức là thanh ghi sẽ được đọc, dữ liệu được thao tác và kết quả được đưa
vào thanh ghi chứa kết quả (nơi chứa kết quả tùy thuộc vào lệnh thực thi và tham số
d). Ví dụ như khi thưc thi lệnh “CLRF PORTB”, vi điều khiển sẽ đọc giá trị thanh ghi
PORTB, xóa tất cả các bit và ghi kết quả trở lại thanh ghi PORTB.

SVTH: Nguyễn Như Thiết

16


Đồ án tốt nghiệp

1- Lệnh ADDLW
Cú pháp: ADDLW k (0 ≤ k≤255)
Tác dụng: cộng giá trị k vào thanh ghi W,kết quả được chứa trong thanh ghi W.
Bit trạng thái: C, DC, Z
2- Lệnh ADDWF
Cú pháp: ADDWF f,d (0≤f≤255, d∈[0,1]).

SVTH: Nguyễn Như Thiết

17


Đồ án tốt nghiệp
Tác dụng: cộng giá trị hai thanh ghi W và thanh ghi f. Kết quả được chứa trong
thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d =1.

Bit trạng thái: C, DC, Z
3-Lệnh ANDLW
Cú pháp: ANDLW k (0≤k≤255)
Tác dụng: thực hiện phép toán AND giữa thanh ghi W và giá trị k, kết quả được
chứa trong thanh ghi W.
Bit trạng thái: Z
4- Lệnh ANDWF
Cú pháp: ANDWF f,d (0≤f≤127, d ∈[0,1]).
Tác dụng: thực hiện phép toán AND giữa W &F Kết quả được đưa vào thanh
ghi W nếu d=0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: Z
5- Lệnh BCF
Cú pháp: BCF f,b (0≤f≤127, 0≤b≤7)
Tác dụng: xóa bit b trong thanh ghi f về giá trị 0.
Bit trạng thái: không có.
6- Lệnh BSF
Cú pháp: BSF f,b (0≤f≤127, 0≤b≤7)
Tác dụng: set bit b trong trong thanh ghi f.
Bit trạng thái: không có
7- Lệnh BTFSS
Cú pháp: BTFSS f,b (0≤f≤127, 0≤b≤7)
Tác dụng: kiểm tra bit b trong thanh ghi f.Nếu bit b bằng 0, lệnh tiếp theo được
thực thi. Nếu bit b bằng 1, lệnh tiếp theo đượcbỏ qua và thay vào đó là lệnh NOP.
Bit trạng thái: không có
8- Lệnh BTFSC
Cú pháp: BTFSC f,b (0≤f≤127, 0≤b≤7)
Tác dụng: kiểm tra bit b trong thanh ghi f. Nếu bit b bằng 1, lệnh tiếp theo
được thực thi. Nếu bit b bằng 0, lệnh tiếp theo được bỏ qua và thay vào đó là lệnh
NOP.


SVTH: Nguyễn Như Thiết

18


Đồ án tốt nghiệp
Bit trạng thái: không có
9- Lệnh CALL
Cú pháp: CALL k (0≤k≤2047) Tác dụng: gọi một chương trình con. Trước hết
địa chỉ quay trở về từ chương trình con (PC+1) được cất vào trong Stack, giá trị địa
chỉ mới được đưa vào bộ đếm gồm 11 bit của biến k và 2 bit PCLATH<4:3>.
Bit trạng thái: không có
10- Lệnh CLRF
Cú pháp CLRF f (0≤f≤127)
Tác dụng: xóa thanh ghi f và bit Z được set.
Bit trạng thái: Z
11- Lệnh CLRW
Cú pháp CLRW
Tác dụng: xóa thanh ghi W và bit Z được set.
Bit trạng thái: Z
12- Lệnh CLRWDT
Cú pháp: CLRWDT
Tác dụng: reset Watchdog Timer, đồng thời prescaler cũng được reset, các bit
và được set lên 1.
Bit trạng thái:TO,PD
13- Lệnh COMF
Cú pháp: COMF f,d (0≤f≤127, d∈[0,1]).
Tác dụng: đảo các bit trong thanh ghi f.Kết quả được đưa vào thanh ghi W nếu
d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z

14- Lệnh DECF
Cú pháp: DECF f,d (0≤f≤127, d∈[0,1]).Tác dụng: giá trị thanh ghi f được giảm
đi 1 đơn vị. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: Z
15- Lệnh DECFSZ
Cú pháp: DECFSZ f,d (0≤f≤127, d∈[0,1])

SVTH: Nguyễn Như Thiết

19


Đồ án tốt nghiệp
Tác dụng: gía trị thanh ghi f được giảm 1 đơn vị. Nếu kết quả sau khi giảm khác
0,lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo không được thực thi
và thay vào đó là lệnh NOP. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh
ghi f nếu d = 1.
Bit trạng thái: không có
16- Lệnh GOTO
Cú pháp: GOTO k (0≤k≤2047)
Tác dụng: nhảy tới một label được định nghĩa bởi tham số k và 2 bit PCLATH
<4:3>.
Bit trạng thái: không có.
17- Lệnh INCF
Cú pháp: INCF f,d (0≤f≤127, d ∈[0,1])
Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị. Kết quả được đưa vào thanh ghi
W nếu d = 0 hoặc thanh ghi f nếu d = 1.
Bit trạng thái: Z
18- Lệnh INCFSZ
Cú pháp: INCFSZ f,d (0≤f≤127, d∈[0,1])

Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị. Nếu kết quả khác 0, lệnh tiếp
theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo được thay bằng lệnh NOP. Kết
quả sẽ được đưa vào thanh ghi f nếu d=1 hoặc thanh ghi W nếu d = 0.
Bit trạng thái: không có.
19- Lệnh IORLW
Cú pháp: IORLW k (0≤k≤255)
Tác dụng: thực hiện phép toán OR giữa thanh ghi W và giá trị k. Kết quả được
chứa trong thanh ghi W.
Bit trạng thái: Z
20- Lệnh IORWF
Cú pháp: IORWF f,d (0≤f≤127, d∈[0,1])
Tác dụng: thực hiện phép toán OR giữa hai thanh ghi W và f. Kết quả được
đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z

SVTH: Nguyễn Như Thiết

20


Đồ án tốt nghiệp
21- Lệnh RLF
Cú pháp: RLF f,d (0≤f≤127, d∈[0,1])
Tác dụng: dịch trái các bit trong thanh ghi f qua cờ carry. Kết quả được lưu
trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: C
22- Lệnh RETURN
Cú pháp: RETURN
Tác dụng: quay trở về chương trình chính từ một chương trình con
Bit trạng thái:không có

23- Lệnh RRF
Cú pháp: RRF f,d (0≤f≤127, d∈[0,1])
Tác dụng: dịch phải các bit trong thanh ghi f qua cờ carry. Kết quả được lưu
trong. thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: C
24- Lệnh SLEEP
Cú pháp: SLEEP
Tác dụng: đưa vi điều khiển về chế độ sleep
25- Lệnh SUBLW
Cú pháp: SUBLW k
Tác dụng: lấy giá trị k trừ giá trị trong thanh ghi W. Kết quả được chứa trong
thanh ghi W.
Bit trạng thái: C, DC, Z
26- Lệnh SUBWF
Cú pháp: SUBWF f,d (0≤f≤127, d∈[0,1])
Tác dụng: lấy giá trị trong thanh ghi f đem trừ cho thanh ghi W. Kết quả được
lưu trong thanh ghiaW nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: C, DC, Z
27- Lệnh SWAP
Cú pháp: SWAP f,d (0≤f≤127, d∈[0,1])
Tác dụng: đảo 4 bit thấp với 4 bit cao trong thanh ghi f. Kết quả được chứa
trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

SVTH: Nguyễn Như Thiết

21


Đồ án tốt nghiệp
Bit trạng thái: không có

28- Lệnh XORLW
Cú pháp: XORLW k (0≤k≤255) Tác dụng: thực hiện phép toán XOR giữa giá
trị k và giá trị trong thanh ghi W. Kết quả được lưu trong thanh ghi W.
Bit trạng thái: Z
29- Lệnh XORWF
Cú pháp: XORWF f,d Tác dụng: thực hiện phép toán XOR giữa hai giá trị
chứa trong thanh ghi W và thanh ghi f. Kết quả được lưu vào trong thanh ghi W nếu
d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái: Z
30- Lệnh #DIFINE
Cú pháp: #DEFINE <text1> <text2>
Tác dụng: thay thế một chuỗi kí tự này bằng một chuỗi kí tự khác, có nghĩa là
mỗi khi chuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay
thế chuỗi kí tự đó bằng chuỗi kí tự <text2>.
31- Lệnh INCLUDE
Cú pháp: #INCLUDE <filename> hoặc #INCLUDE “filename”
Tác dụng: đính kèm một file khác vào chương trình, tương tự như việc ta copy
file đó vào vị trí xuất hiện lệnh INCLUDE. Nếu dùng cú pháp <filename> thì file đình
kèm là file hệ thống , nếu dùng cú pháp “filename” thì file đính kèm là file của người
sử dụng. Thông thường chương trình được đính kèm theo một “header file” chứa các
thông tin định nghịa các biến (thanh ghi W, thanh ghi F,..) và các địa chỉ cảu các
thanh ghi chức năng đặc biệt trong bộ nhớ dữ liệu. Nếu không có header file, chương
trình sẽ khó đọc và khó hiểu hơn.
32- Lệnh CONSTANT
Cú pháp: CONSTANT <name>=<value>
Tác dụng: khai báo một hằng số, có nghĩa là khi phát hiện chuỗi kí tự “name”
trong chương trình, trình biên dịch sẽ tự động thay bằng chuỗi kí tự bằng giá trị
“value” đã đượcđịnh nghĩa trước đó.
33- Lệnh VARIABLE
Cú pháp: VARIABLE <name>=<value>


SVTH: Nguyễn Như Thiết

22


Đồ án tốt nghiệp
Tác dụng: tương tự như lệnh CONSTANT, chỉ có điểm khác biệt duy nhất là
giá trị “value” khi dùng lệnh VARIABLE có thể thay đổi được trong quá trình thưc thi
chương trình còn lệnh CONSTANT thì không.
34- Lệnh SET
Cú pháp: <name variable> SET <value>
Tác dụng: gán giá trị cho một tên biến. Tên của biến có thể thay đổi được trong
quá trình thực thi chương trình.
35- Lệnh EQU
Cú pháp: <name constant> EQU <value>
Tác dụng: gán giá trị cho tên của tên của hằng số. Tên của hằng số không thay
đổi trong quá trình thực thi chương trình.
36- Lệnh ORG
Cú pháp: ORG <value>
Tác dụng: định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình
của vi điều khiển.
37- Lệnh END
Cú pháp: END
Tác dụng: đánh dấu kết thúc chương trình.
38- Lệnh __CONFIG
Cú pháp: __CONFIG
Tác dụng: thiết lập các bit điều khiển các khối chức năng của vi điều khiển
được chứa trong bộ nhớ chương trình (Configuration bit).
39- Lệnh PROCESSOR

Cú pháp: PROCESSOR
Tác dụng: định nghĩa vi điều khiển nào sử dụng chương trình.
2.2.Tập lệnh của vi điều khiển 8051
Các lệnh của 8051 được chia làm 5 nhóm :
-Nhóm lệnh số học.
-Nhóm lệnh logic.
-Nhóm lệnh di chuyển dữ liệu.
-Nhóm lệnh xử lý bit.

SVTH: Nguyễn Như Thiết

23


×