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

TÀI LIỆU THÍ NGHIỆM KỸ THUẬT VI ĐIỀU KHIỂN VÀ VI XỬ LÝ

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 (1.74 MB, 54 trang )

TRƯỜNG ðẠI HỌC BÁCH KHOA ðÀ NẴNG
KHOA ðIỆN TỬ VIỄN THÔNG
BỘ MÔN KỸ THUẬT MÁY TÍNH
o0o







TÀI LIỆU THÍ NGHIỆM
KỸ THUẬT VI ðIỀU KHIỂN
VÀ VI XỬ LÝ



























ðÀ NẴNG 2009
THÍ NGHIỆM KỸ THUẬT VI ðIỀU KHIỂN VÀ VI XỬ LÝ
THỜI LƯỢNG: 15 TIẾT
KẾ HOẠCH THÍ NGHIỆM:
BUỔI 1: CHƯƠNG 1,2,3
BUỔI 2: CHƯƠNG 4,5
BUỔI 3: CHƯƠNG 6,7












































MỤC LỤC

1. MỤC ðÍCH VÀ YÊU CẦU CHUNG
• MỤC ðÍCH THÍ NGHIỆM
• YÊU CẦU THÍ NGHIỆM
2. GIỚI THIỆU HỌ VI ðIỀU KHIỂN PIC
• GIỚI THIỆU VI XỬ LÝ VÀ VI ðIỀU KHIỂN
• GIỚI THIỆU PICF16F877A
3. GIỚI THIỆU KIT PICDEM 2 PLUS VÀ MPLAB TOOLS
• GIỚI THIỆU PICDEM2 PLUS
• GIỚI THIỆU MPLAB TOOLS
4. BÀI THÍ NGHIỆM SỐ 1
• MỤC ðÍCH
• YÊU CẦU
• SƠ ðỒ KHỐI
• XÂY DỰNG GIẢI THUẬT
• VIẾT CHƯƠNG TRÌNH
• KIỂM TRA KẾT QUẢ
5. BÀI THÍ NGHIỆM SỐ 2
• MỤC ðÍCH
• YÊU CẦU
• SƠ ðỒ KHỐI
• XÂY DỰNG GIẢI THUẬT
• VIẾT CHƯƠNG TRÌNH
• KIỂM TRA KẾT QUẢ
6. BÀI THÍ NGHIỆM SỐ 3
• MỤC ðÍCH
• YÊU CẦU
• SƠ ðỒ KHỐI
• XÂY DỰNG GIẢI THUẬT
• VIẾT CHƯƠNG TRÌNH
• KIỂM TRA KẾT QUẢ

7. BÀI THÍ NGHIỆM SỐ 4
• MỤC ðÍCH
• YÊU CẦU
• SƠ ðỒ KHỐI
• XÂY DỰNG GIẢI THUẬT
• VIẾT CHƯƠNG TRÌNH
• KIỂM TRA KẾT QUẢ





1. MỤC ðÍCH VÀ YÊU CẦU CHUNG
• MỤC ðÍCH THÍ NGHIỆM
• YÊU CẦU THÍ NGHIỆM
================================================================

1.1. Mục ñích thí nghiệm:
- Tiếp xúc, làm việc thực tế với vi ñiều khiển, vi xử lý thông qua các công cụ có
sẵn tại phòng thí nghiệm.
- Rà soát và kiểm chứng lại các kiến thức ñã học trong các môn kỹ thuất vi xử lý
và vi ñiều khiển.
- Bước ñầu làm quen với các hệ thống vi xử lý thực sự và biết cách làm việc với
nó.
1.2. Yêu cầu thí nghiệm:
Dựa vào các thiết bị có sẵn tại phòng thí nghiệm cụ thể là Board PICDEM 2
PLUS và các công cụ kèm theo, sinh viên tham gia thí nghiệm phải:
- Nắm vững lý thuyết trước khi ñi vào thí nghiệm cụ thể là làm việc trực tiếp với
dụng cụ thí nghiệm
- Sử dụng các công cụ thí nghiệm một cách cơ bản.

- Hoàn thành các bài thí nghiệm.
Sau khi hoàn thành thí nghiệm yêu cầu:
- Lập trình cơ bản cho PIC16F877A
- Sử dụng ñược các công cụ hỗ trợ cho PIC có trong phòng thí nghiệm
- Nắm cơ bản về cấu trúc PIC16F877A
























2. GIỚI THIỆU HỌ VI ðIỀU KHIỂN PIC

• GIỚI THIỆU VI XỬ LÝ VÀ VI ðIỀU KHIỂN.
• GIỚI THIỆU PICF16F877A
================================================================
2.1. Máy tính là gì?
Một máy tính ñược kết hợp từ phần cứng và phần mềm. Phần cứng của một máy tính
bao gồm 4 thành phần:
• Bộ xử lý. Bộ xử lý chịu trách nhiệm thực hiện tất cả các hoạt ñộng tính toán và
phối hợp việc sử dụng tài nguyên của máy tính. Một hệ thống máy tính có thể gồm
1 hoặc nhiều bộ xử lý. một bộ xử lý có thể sử dụng tính toán ña dụng hoặc tính
toán chuyên dụng, như là việc thực hiện ñồ họa, việc in ấn, hay là xử lý mạng.
• Các thiết bị nhập. Một máy tính ñược thiết kế ñể thực hiện chương trình ñiều khiển
dữ liệu nào ñó. Các thiết bị vào là cần thiết ñể nhập chương trình ñược thực hiện
và dữ liệu ñược xử lý vào máy tính. Các thiết bị vào rất ña dạng: bàn phím, bàn
phím số, máy quét, ñầu ñọc mã vạch, bộ cảm biến, và nhiều nữa.
• Các thiết bị xuất. Không có vấn ñề gì nếu người dùng sử dụng máy tính ñể chỉ ñể
tính toán hay ñể tìm kiếm thông tin từ Internet hay một cơ sở dữ liệu, kết quả cuối
cùng phải ñược hiển thị hoặc in ra giấy ñể người dùng có thể thấy. Một số phương
tiện truyền thông và thiết bị có thể ñược sử dụng ñể hiển thị thông tin: màn hình
CRT, màn hình phẳng, bộ hiển thị 7 doạn, máy in, diode phát quang, và nhiều nữa.
• Các thiết bị nhớ: Chương trình ñược ñiều khiển và dữ liệu ñược xử lý phải chứa
trong thiết bị nhớ ñể bộ xử lý có thể sẵn sàng truy cập chúng.
2.1.1. Bộ xử lý.
Một bộ xử lý còn ñược gọi là ñơn vị xử lý trung tâm(CPU). Bộ xử lý gồm ít nhất 3
thành phần:
• Các thanh ghi. Một thanh ghi là một vùng lưu trữ trong CPU. Nó ñược sử dụng ñể
giữ dữ liệu và là một ñịa chỉ nhớ trong khi quá trình thi hành lệnh. Bởi vậy các
thanh ghi rất gần với CPU, nó có thể thực hiện truy cập nhanh các toán hạng ñể
thực hiện chương trình. Số lượng thanh ghi thay ñổi thay ñổi nhiều từ những bộ xử
lý này ñến những bộ xử lý khác.
• ðơn vị logic số học (ALU). ALU thực hiện tất cả các tính toán bằng số và sự ước

lượng bằng logic cho bộ xử lý. ALU nhận dữ liệu từ bộ nhớ, thực hiện các công
việc, và, nếu cần, ghi kết quả trở lại bộ nhớ. Siêu máy tính ngày nay có thể thực
hiện hàng ngàn tỷ công việc trên 1 giây. ALU và các thanh ghi cùng ñược mệnh
danh như là ñường dữ liệu của bộ xử lý.
• ðơn vị ñiều khiển. ðơn vị ñiều khiển chứa chỉ dẫn logic phần cứng. ðơn vị ñiều
khiển giải mã và giám sát sự ñiều khiển của các chỉ dẫn. ðơn vị ñiều khiển cũng
làm việc như một bộ trọng tài của hệ thống máy tính phân chia sự thay ñổi dưới
dạng cạnh tranh của những tài nguyên CPU. Các hoạt ñộng của CPU ñược ñồng bộ
hóa bởi ñồng hồ hệ thống. Tốc ñộ của ñồng hồ của những bộ vi xử lý ñời mới ñã
vượt quá 3.0GHz tại thời ñiểm này.
1GHz=1 tỷ chu kỳ trên 1 giây.
Chu kỳ của 1 tín hiệu ñồng hồ 1GHz là 1ns(10
-9
giây). ðơn vị ñiều khiển chỉ khai
thác một thanh ghi gọi là bộ ñếm chương trình (PC) ñể giữ vết ñịa chỉ của lệnh tiếp theo
ñể thực hiện. Trong lúc thực thi lệnh, tràn xảy ra, một số nhớ ñược thêm vào, một số trừ
ñược mượn, và nhiều nữa ñược ñánh dấu bằng cờ bởi hệ thống và ñược lưu trong thanh
ghi khác gọi là thanh ghi trạng thái. Kết quả xảy ra của các cờ ñược sử dụng bởi lập trình
viên cho việc ñiều khiển trình tự và quyết ñịnh sự làm việc của chương trình.
2.1.2. Bộ vi xử lý
Sự tiến bộ của công nghệ bán dẫn cho phép hệ mạch của bộ xử lý ñầy ñủ ñược ñặt
trong một mạch tích hợp( còn gọi là chip). Một bộ vi xử lý là một bộ xử lý gọn trong một
mạch tích hợp ñơn. Một máy vi tính là một máy tính sử dụng một bộ vi xử lý làm CPU
của nó. Một máy tính cá nhân(PC) là một máy vi tính. Các máy vi tính ñời cũ rất chậm.
Tuy nhiên, các máy tính cá nhân ngày nay chạy với tốc ñộ cao hơn 3.0GHz và nhanh hơn
các siêu máy tính của vài năm trước.
Việc phụ thuộc vào số bit mà một bộ vi xử lý có thể ñiều khiển trong một công
việc, một bộ vi xử lý ñược quy về là 4-bit, 8-bit,16-bit, 32-bit, hoặc 64-bit. Con số này là
ñộ dài từ ( hoặc ñộ dài ñường dữ liệu) của bộ vi xử lý. Hiện nay, bộ vi xử lý 8-bit hầu như
ñược dùng rộng rãi.

Mặc dù tốc ñộ ñồng hồ của bộ vi xử lý ñã tăng ñột biến, sự cải tiến về thời gian
truy cập ( hay nói ñơn giản là tốc ñộ) của các chip bộ nhớ dung lượng cao (nhất là các
chip DRAM ñược dùng rộng rãi ñược bàn trong mục 1.2.4) ñược ñiều tiết ở mức tốt nhất.
Bộ vi xử lý có thể hoàn thành 1 hoạt ñộng tính toán trong một chu kỳ ñồng hồ; tuy nhiên,
nó có thể lấy nhiều chu kỳ ñồng hồ ñể truy cập dữ liệu từ chip nhớ. Sự chênh lệch tốc ñộ
này làm cho tốc ñộ ñồng hồ cao của bộ vi xử lý ñơn vô ích trong việc thực hiện trao ñổi
tốc ñộ cao. Giải pháp ñược ñưa ra là thêm vào một bộ nhớ tốc ñộ cao nhỏ vào chip CPU.
Bộ nhớ trên chip này ñược gọi là bộ nhớ cache. CPU có thể truy cập dữ liệu từ bộ nhớ
cache trên chip trong 1 hay 2 chu kỳ ñồng hồ bởi vì nó rất gần với ALU. Bộ nhớ cache là
có ích trong việc cải thiện thời gian truy cập bộ nhớ trung bình bởi vì CPU giải thích ñược
vị trí hành vi truy cập nó. Trong thời gian một chu kỳ ngắn, CPU tiến ñến truy cập một
vùng nhỏ trong bộ nhớ tái lập. Một ñoạn chương trình hoặc dữ liệu ñược ñưa vào trong bộ
nhớ cache, nó sẽ ñược truy xuất nhiều lần. Các kết quả trong thời gian truy cập bộ nhớ
trung bình rất gần với thời gian truy cập bộ nhớ cache.
Bộ vi xử lý và thiết bị nhập/xuất(I/O) có ñặc tính và tốc ñộ khác nhau. Một bộ vi
xử lý không ñược thiết kế ñể giải quyết thiết bị I/O trực tiếp. Thay vào ñó, các chip ngoại
vi( còn gọi là các chip giao tiếp) là cần thiết ñể tạo ra sự khác biệt giữa bộ vi xử lý và các
thiết bị I/O. Ví dụ, i8255 của Intel ñã ñược thiết kế ñể giao tiếp với bộ vi xử lý 8-bit 8080
từ Intel, và M6821 ñã ñược thiết kế ñể giao tiếp với 6800 8-bit từ Motorola với các thiết
bị I/O.
Các bộ vi xử lý ñược sử dụng trong nhiều ứng dụng từ khi chúng ñược phát minh
ra. Tuy nhiên, có vài hạn chế trong việc thiết kế bộ vi xử lý ban ñầu ñã dẫn ñến sự phát
triển của bộ vi ñiều khiển:
• Các chip nhớ ngoài là cần thiết ñể giữ chương trình và dữ liệu bởi vì các bộ vi xử
lý cũ không có bộ nhớ trên chip.
• Glue logic( như là bộ giải mã ñịa chỉ và các chip bộ ñệm) ñược yêu cầu ñể giao
tiếp với các chip nhớ.
• Các chip ngoại vi là cần thiết ñể giao tiếp với thiết bị I/O.
Bởi vì các hạn chế trên, một sản phẩm ñược thiết kế với các bộ vi xử lý không thể gọn
hơn mà có lẽ ñang ñược chờ ñón. Việc phát triển các bộ vi ñiều khiển không chỉ loại

trừ hầu như các vấn ñề trên, mà còn kích thích việc thiết kế các sản phẩm trên cơ sở bộ
vi xử lý giá thành thấp.
2.1.3. Vi ñiều khiển:
Một bộ vi ñiều khiển, hoặc MCU, là một máy tính ñược thực hiện trên một mạch
ñơn tích hợp quy mô rất lớn(VLSI). Thêm vào các thành phần ñược chứa trong
một bộ vi xử lý, một MCU còn chứa vài thành phần ngoại vi sau:
• Bộ nhớ
• Các bộ ñịnh thời, gồm ñếm sự kiện, thu thập ngõ vào, so sánh ngõ ra, ngắt thời
gian thực, và bộ ñịnh thời watchdog.
• ðiều chế ñộ rộng xung(PWM)
• Bộ chuyển ñổi tương tự sang số(ADC)
• Bộ chuyển ñổi số sang tương tự(DAC)
• Giao tiếp song song I/O
• Giao tiếp truyền thông nối tiếp bất ñồng bộ(UART)
• Giao tiếp truyền thông nối tiếp ñồng bộ (SPI, I
2
C, và CAN)
• Bộ ñiều khiển truy cập bộ nhớ trực tiếp(DMA)
• Hệ mạch giao tiếp thành phần bộ nhớ
• Phần mềm sửa lỗi hỗ trợ phần cứng.
Thảo luận về chức năng và ứng dụng của các thành phần này là một ñề tài của mục
này.Hầu hết các chức năng ñược thảo luận chi tiết ở các chương sau.
Từ lời giới thiệu của họ, các MCU ñã ñược sử dụng trong hầu hết mọi ứng dụng
ñòi hỏi nhất ñịnh về trí tuệ. Chúng ñược sử dụng làm bộ ñiều khiển cho hiển thị, in ấn,
bàn phím, modem, thẻ trả tiền ñiện thoại, máy tính cầm tay, và ñồ gia dụng, như là tủ
lạnh, máy giặt, và lò vi sóng. Chúng còn ñược sử dụng ñể ñiều khiển hoạt ñộng của ñộng
cơ và máy móc trong nhà máy. Một trong số ứng dụng quan trọng nhất của MCU có lẽ là
ñiều khiển ô tô. Ngày nay, một ô tô sang trọng có thể sử dụng hơn 100 MCU. Ngày nay,
hầu hết gia ñình có ñồ gia dụng ñiện xài 1 hoặc nhiều MCU ñể ñiều khiển. Trong các ứng
dụng này, mọi nguời chỉ ñể ý ñến chức năng của sản phẩm cuối cùng hơn là ñến MCU

ñược sử dụng ñể thực hiện chức năng ñiều khiển. Những sản phẩm mang ñặc tính này
thường ñược gọi là Hệ thống nhúng.
2.1.4. Bộ nhớ
Chương trình và dữ liệu ñược lưu trữ trong bộ nhớ trong một hệ thống máy tính.
Một máy tính có thể gồm bộ nhớ bán dẫn, từ, quang. Chỉ bộ nhớ bán dẫn là ñược thảo
luận trong ñoạn này bởi vì bộ nhớ từ và quang hiếm khi sử dụng trong các ứng dụng
MCU 8 bit. Bộ nhớ bán dẫn có thể phân loại thành 2 loại chủ yếu: bộ nhớ truy cập ngẫu
nhiên RAM( random-access memory) và bộ nhớ chỉ ñọc ROM(Read-Only Memory).
Bộ nhớ truy cập ngẫu nhiên RAM(Random-Access Memory)
Bộ nhớ truy cập ngẫu nhiên thay ñổi ñược theo nghĩa không thể giữ ñược dữ liệu
khi bị mất nguồn. RAM còn ñược gọi là bộ nhớ ñọc/ghi bởi vì nó cho phép bộ xử lý ñọc
từ nó và ghi vào nó. Cả ñọc và ghi ñều truy cập RAM cùng một thời gian. Cùng lúc bật
nguồn, bộ vi xử lý có thể viết dữ liệu vào vùng RAM và ñọc trở lại giống nội dung cũ.
Việc ñọc bộ nhớ là không làm hỏng nó. Khi bộ vi xử lý viết dữ liệu ñến bộ nhớ, dữ liệu
cũ ñược viết ñè lên và mất ñi.
Có 2 loại công nghệ RAM: RAM tĩnh(SRAM) và RAM ñộng(DRAM). SRAM sử
dụng từ 4 ñến 6 transistor ñể lưu thông tin của một bit. Cùng lúc bât nguồn, thông tin lưu
trong SRAM sẽ không bị mất. RAM ñộng sử dụng một transistor và một tụ ñể lưu thông
tin của một bit. Thông tin ñược lưu trong tụ dưới dạng nạp ñiện. Việc nạp vào tụ sẽ thoát
hết sau một thời gian, vì vậy mỗi chu kì hoạt ñộng làm tươi ñược yêu cầu ñể bảo trì nội
dung của DRAM.
RAM chủ yếu ñể dùng ñể lưu dữ liệu và chương trình thay ñổi. Người sử dụng
máy tính thường muốn chạy nhiều chương trình khác nhau trên cùng một máy tính, và các
chương trình ñó thường hoạt ñộng trên những tổ hợp khác nhau của dữ liệu. Các chương
trình và dữ liệu vì thế mà ñược nạp vào RAM từ ñĩa cứng hoặc bộ lưu trữ thứ cấp khác,
và vì lý do này nên chúng ñược gọi là ñộng
Bộ nhớ chỉ ñọc ROM(Read-Only-Memory)
ROM là loại “không bốc hơi”. Nếu nguồn cấp cho ROM bị ngắt và sau ñó ñược
cấp lai, dữ liệu gốc sẽ vấn còn ở ñó. Như tên gọi của nó bao hàm, dữ liệu ROM chỉ có thể
ñược ñọc. Cái này không chính xác lắm. ða số công nghệ ROM yêu cầu giải thuật ñặc

biệt và ñiện áp ñể ghi dữ liệu vào chip. Việc không sử dụng giải thuật và ñiện áp ñặc biệt,
bất kì sự cố gắng nào ñể ghi vào bộ nhớ ROM sẽ không thành công. Có vài dạng khác
biệt của công nghệ ROM sử dụng ngày nay:
Bộ nhớ chỉ ñọc lập trình hóa mặt nạ MROM(Masked-programmed read-only
memory) là loại của ROM ñược lập trình khi nó ñược chế tạo. Nhà sản xuất bán dẫn ñặt
dữ liệu nhị phân vào bộ nhớ theo như ñặc tả kỹ thuật của khách hàng. ðể hiệu quả về chi
phí, hàng ngàn chip bộ nhớ MROM, mỗi bộ chứa cùng một bản sao dữ liệu (hoặc chương
trình), ñã ñược bán. Mọi người gọi MROM ñơn giản là ROM.
Bộ nhớ chỉ ñọc lập trình ñược PROM( Programable Read-Only Memory) là một
loại bộ nhớ chỉ ñọc có thể ñược lập trình trong lĩnh vực (thường là do người dùng cuối) sử
dụng thiết bị gọi là bộ lập trình PROM hoặc bộ xóa PROM. Một khi PROM ñược lập
trình, nội dung của nó không thể thay ñổi ñược. PROM dựa trên cơ sở làm ngắt mạch,
nghĩa là người dùng lập trình ngắt mạch ñể cấu hình nội dung bộ nhớ.
Bộ nhớ chỉ ñọc lập trình ñược xóa ñược EPROM(Erasable programmable read-
only memory) là loại bộ nhớ chỉ ñọc có thể bị xóa bằng việc bắt nó phải chịu ánh sáng tia
tử ngoại mạnh. Mạch thiết kế của EPROM yêu cầu người dùng xóa nội dụng của một
vùng trước khi giá trị mới có thể ñược viết vào nó. Một cửa sổ thạch anh trên mặt của
mạch tích hợp EPROM cho phép ánh sáng tử ngoại có thể chiếu trực tiếp vào bên trong
chip silicon. Một lần chip ñược lập trình, cửa sổ thạch anh có thể ñược bao bọc bởi băng
tối ñể ngăn dữ liệu bị xóa ñi dần dần. Nếu cửa sổ thạch anh không ñược cung cấp, chip
EPROM trở thành chỉ lập trình ñược một lần OTP(one-time programmable). EPROM
thường ñược dùng trong các máy tính dùng thử nơi mà phần mềm có thể ñược sửa lại vài
lần cho ñến khi nó ñược hoàn thiện. EPROM không cho phép xóa ñi nội dung của một vị
trí riêng lẻ. Chỉ có một cách ñể thay ñổi nó là xóa toàn bộ chip EPROM và lập trình lại
nó. Việc lập trình một chip EPROM làm bằng ñiện bởi việc sử dụng một thiết bị gọi là bộ
lập trình EPROM. Ngày nay, ña số các bộ lập trình là phổ biến theo nghĩa chúng có thể
lập trình cho một số loại thiết bị khác nhau bao gồm EPROM, EEPROM, bộ nhớ Flash,
và thiết bị logic lập trình ñược.
Bộ nhớ chỉ ñọc lập trình ñược xóa ñược bằng ñiện EEPROM (electrically erasable
programmable read-only memory) là một loại bộ nhớ không bốc hơi có thể xóa ñược và

lập trình lại bởi tín hiệu ñiện. Giống với EPROM, mạch thiết kế của EEPROM cũng ñòi
hỏi người dùng xóa nội dung của một vi trí bộ nhớ trước khi ghi một giá trị mới vào nó.
EEPROM cho phép mỗi vị trí riêng lẻ bị xóa và lậ trình lại. Khác với EPROM, EEPROM
có thể bị xóa và lập trình sử dụng cùng bộ lập trình. Tuy nhiên, EEPROM trả giá cho sự
mềm dẻo trong cách thức xóa của nó. Giá của chip EEPROM là cao hơn nhiều so với chip
EPROM có thể so sánh ñược về tỷ trọng.
Bộ nhớ Flash ñã ñược phát minh ñể hợp nhất những lợi thế và loại bỏ những hạn
chế của hai công nghệ EPROM và EEPROM. Bộ nhớ Flash có thể bị xóa và lập trình lại
trong hệ thống không sử dụng bộ lập trình chuyên dụng. Nó ñạt ñược tỷ trọng của
EPROM, nhưng nó không ñòi hỏi cửa sổ cho việc xóa. Giống với EEPROM, bộ nhớ
Flash có thể ñược lập trình và xóa bằng ñiện. tuy nhiên, nó không cho phép xóa một vị trí
bộ nhớ riêng lẻ - người dùng có thể chỉ xóa một nhóm tách biệt hoặc toàn bộ chip. Ngày
nay, càng ngày càng nhiều MCU tích hợp bộ nhớ flash trên chip cho việc lưu trữ chương
trình và dữ liệu. MCUs PIC16 trên cơ sở bộ nhớ Flash cho phép bạn xóa một khối 64 byte
một lúc.
2.2. Giới thiệu PIC16F877A
2.2.1. PIC là gì?
PIC ñầy ñủ là “Programable Intelligent Computer”, tạm dịch là “máy tính thông
minh khả trình” do hãng Genenral Instrument ñặt tên cho vi ñiều khiển ñầu tiên của họ:
PIC1650 ñược thiết kế ñể dùng làm các thiết bị ngoại vi cho vi ñiều khiển CP1600. Vi
ñiều khiển này sau ñó ñược nghiên cứu phát triển thêm hình thành nên dòng vi ñiều khiển
PIC ngày nay.
2.2.2. ðại cương PIC16F877A
2.2.2.1. Sơ ñồ chân

Hình 1. Sơ ñồ chân PIC16F877A
2.2.2.2. Các thông số ñáng quan tâm
- Vi ñiều khiển PIC16F877A với tập lệnh gồm 35 lệnh có ñộ dài 14 bit. Mỗi lệnh
ñều ñược thực thi trong một chu kì xung clock. Tốc ñộ hoạt ñộng tối ña cho phép là 20
MHz với một chu kì lệnh là 200ns.

- Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ
liệu EEPROM với dung lượng 256x8 byte.
- Số PORT I/O là 5 với 33pin I/O.
-Các ñặc tính ngoại vi bao gồmcác khối chức năng sau:
+ Timer0: bộ ñếm 8 bit với bộ chia tần số 8 bit.
+ Timer1: bộ ñếm 16 bit với bộ chia tần số, có thể thực hiện chức năng ñếm dựa
vào
xung clock ngoại vi ngay khi vi ñiều khiển hoạt ñộng ở chế ñộ sleep.
+ Timer2: bộ ñếm 8 bit với bộ chia tần số, bộ postcaler.
+ Hai bộ Capture/so sánh/ñiều chế ñộ rông xung.
+ Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
+ Chuẩn giao tiếp nối tiếp USART với 9 bit ñịa chỉ.
+ Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân ñiều khiển RD,
WR,
CS ở bên ngoài.
- Các ñặc tính Analog:
+ 8 kênh chuyển ñổi ADC 10 bit.
+ Hai bộ so sánh.
- Vài ñặc tính khác:
+ Bộ nhớ flash với khả năng ghi xóa ñược 100.000 lần.
+ Bộ nhớ EEPROM với khả năng ghi xóa ñược 1.000.000 lần.
+ Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
+ Khả năng tự nạp chương trình với sự ñiều khiển của phần mềm.
+ Nạp ñược chương trình ngay trên mạch ñiện ICSP (In Circuit Serial
Programming) thông qua 2 chân.
+ Watchdog Timer với bộ dao ñộng trong.
+ Chức năng bảo mật mã chương trình.
+ Chế ñộ Sleep.
+ Có thể hoạt ñộng với nhiều dạng Oscillator khác nhau.














2.2.2.3. Sơ ñồ khối


Hình 2. Sơ ñồ khối PIC16F877A






2.2.2.4. Tổ chức bộ nhớ
Hình 3. BẢN ðỒ BỘ NHỚ CHƯƠNG TRÌNH

- Tổ chức bộ nhớ chương trình:
VÀ NGĂN XẾP STACK PIC16F876/877A

Các thiết bị PIC16F87XA có bộ ñếm
chương trình 13 bit có khả năng ñịnh ñịa chỉ

8K từ x 14 bit không gian bộ nhớ chương
trình. Thiết bị PIC16F876A/877A có 8K từ x
14 bit bộ nhớ chương trình Flash. Việc truy
nhập một vị trí phía trên ñịa chỉ thực thi theo
quy luật tự nhiên sẽ gây ra một vòng tiếp.
Vector Reset tại 0x0000 và vector ngắt tại
0x0004.
- Tổ chức bộ nhớ dữ liệu
Bộ nhớ dữ liệu ñược phân chia thành
nhiều dãy bank chứa các thanh ghi mục ñích
chung (GPRs) và các thanh ghi chức năng ñặc
biệt (SFRs). Các bit RP1 (STATUS<6>) và
RP0 (STATUS<5>) là các bit lựa chọn bank.
Mỗi bank mở rộng lên ñến 0x7F (128 byte).
Các vị trí thấp của mỗi bank ñược dành riêng
cho các thanh ghi chức năng ñặc biệt. Phía
trên các thanh ghi chức năng ñặc biệt là các
thanh ghi mục ñích chung, làm việc như RAM
tĩnh. Tất cả các bank làm việc ñều chứa các thanh ghi chức năng ñặc biệt. Một số thanh
ghi chức năng ñặc biệt ñược sử dụng thương xuyên từ một bank này có thể ñược ánh xạ
trong một bank khác ñể rút gọn mã và truy cập nhanh hơn.
- Tệp thanh ghi mục ñích chung
Tệp thanh ghi có thể ñược truy cập hoặc trực tiếp, hoặc gián tiếp, thông qua thanh
ghi chọn lựa tệp (FSR).


Hình 2-3: BẢN ðỒ TỆP THANH GHI PIC16F877A

- Các thanh ghi chức năng ñặc biệt
Các thanh ghi chức năng ñặc biệt là các thanh ghi ñược dùng bởi CPU và các

module ngoại vi cho việc ñiều khiển các hoạt ñộng mong muốn của thiết bị. Các thanh ghi
này ñược sử dụng như RAM tĩnh. Bảng 1 liệt kê các thanh ghi này. Các thanh ghi chức
năng ñặc biệt có thể ñược nhóm vào 2 tập hợp: lõi(CPU) và ngoại vi. Các thanh ghi kết
hợp với các chức năng lõi ñược trình bày chi tiết trong mục này. Các thanh ghi liên quan
ñến hoạt ñộng của các tính năng ngoại vi ñược trình bày chi tiết trong mục các tính năng
ngoại vi.
Bảng 1: BẢNG TÓM TẮT THANH GHI CHỨC NĂNG ðẶC BIỆT


Bảng 1: BẢNG TÓM TẮT THANH GHI CHỨC NĂNG ðẶC BIỆT(tiếp)










Bảng 1: BẢNG TÓM TẮT THANH GHI CHỨC NĂNG ðẶC BIỆT(tiếp)

2.2.2.5.Tập lệnh
Hệ lệnh PIC16 là loại trực giao cao và gồm 3 loại cơ bản:
• Nhóm lệnh thanh ghi ñịnh hướng Byte
• Nhóm lệnh thanh ghi ñịnh hướng Bit
• Nhóm lệnh ñiều khiển và literal
Mỗi lệnh PIC16 là một từ 14 bit ñược ñưa vào trong mã lệnh chỉ rõ loại lệnh và một
hoặc nhiều toán hạng sau ñó chỉ rõ hoạt ñộng của lệnh. Khuôn dạng của mỗi loại ñược
trình bày ở hình 3, các trường mã lệnh khác ñược tóm tắt ở bảng 2.

Bảng 3 liệt kê các lệnh ñược nhận dạng bởi bộ hợp dịch MPASM. Với các lệnh thanh
ghi ñịnh hướng byte, ‘f’ là một thanh ghi tệp ñược chỉ ñịnh và ‘d’ mô tả một vị trí ñích
ñược chỉ ñịnh. Thanh ghi tệp ñược chỉ ñịnh rõ là thanh ghi ñược sử dụng trong lệnh. Vị trí
ñích ñược chỉ ñịnh rõ là nơi mà kết quả của công việc ñược ñặt vào. Nếu ‘d’ là 0, kết quả
ñược ñặt vào thanh ghi W. Nếu ‘d’ là 1, kết quả ñược ñặt vào thanh ghi ñược chỉ rõ ở
trong lệnh. Với các lệnh thanh ghi ñịnh hướng bit, ‘b’ mô tả một trường bit ñược chỉ ñịnh
lựa chọn bit ñược tác ñộng bởi công việc, trong khi ‘f’ mô tả ñịa chỉ của tệp ở nơi mà bit
ñược xác ñịnh. Với các lệnh ñiều khiển và literal, ‘k’ mô tả một giá trị tức thời hoặc hằng
số 8 hay 11 bit. Một vòng lệnh gồm 4 chu kỳ dao ñộng; cho tần số bộ dao ñộng là 4MHz,
thời gian thực hiện một lệnh bình thường là 1 µs. Tất cả các lệnh ñược thực hiện trong
vòng một vòng lệnh ñơn, trừ lệnh kiểm tra ñiều kiện ñúng, hoặc bộ ñếm chương trình bị
thay ñổi do kết quả của một lệnh khác. Khi xảy ra trường hợp này, việc thực hiện lấy 2
vòng lệnh với vòng thứ hai ñược thực hiện như là một lệnh NOP.
Tất cả các ví dụ lệnh sử dụng khuôn dạng ‘0xhh’ ñể mô tả số hexadecimal, ở ñây
‘h’ là kí hiệu của một chữ số hexadecimal.
HOẠT ðỘNG ðỌC-CHỈNH SỬA-GHI
Các lệnh chỉ rõ thanh ghi tệp như là một phần của lệnh thực hiện hoạt ñộng ñọc -
chỉnh sửa – ghi (R-M-W). Thanh ghi ñược ñọc, dữ liệu ñược chỉnh sửa, kết quả ñược lưu
trữ tùy theo lệnh hoặc ñích ñược chỉ ñịnh ‘d’. Một hoạt ñộng ñọc ñược thực hiện trên
thanh ghi cho dù lệnh viết ñến thanh ghi ñó.
Ví dụ, lệnh “CLRF PORTB” sẽ ñọc portB, xóa tất cả các bit dữ liệu, sau ñó ghi kết
quả trở lại portB. Ví dụ này có kết quả không tính trước ñiều kiện làm cho cờ RBIF bị
xóa.
Bảng 2: Mô tả trường mã lệnh
Trường

Mô tả
f ðịa chỉ tệp thanh ghi(0x00->0x7F)
W Thanh ghi làm việc (Bộ tích lũy)
b ðịa chỉ bit trong thanh ghi tệp 8 bit

k Trường số thực, dữ liệu hằng hoặc nhãn

Hình 3: Dạng ñầy ñủ cho các lệnh
* Nhóm lệnh thanh ghi ñịnh hướng byte

OPCODE d f(File #)
d = 0 cho ñích là W
d = 1 cho ñích là f
f = 7 bit ñịa chỉ thanh ghi
* Nhóm lệnh thanh ghi ñịnh hướng bit

OPCODE b(BIT#)

f(File #)
b = 3 bit ñịa chỉ bit
f = 7 bit ñịa chỉ thanh ghi
* Nhóm lệnh ñiều khiển và literal
ðầy ñủ

OPCODE k(literal)
k = giá trị tức thời 8 bit
Chỉ dùng cho lệnh GOTO và CALL

OPCODE k(literal)
k = giá trị tức thời 11 bit


x Vị trí không cần lưu ý(= 0 hoặc 1)
d
Chọn ñích ñến; d=0: lưu kết quả trong W, d=1: lưu

kết quả trong thanh ghi tệp f.Mặc ñịnh là d=1
PC Bộ ñếm chương trình
TO Bit Time-out
PD Bit Power-down
13

8

7

6

0

13 9

7

6

0

10
13 8

7

0

13 11 10 0


Bảng 3: Hệ lệnh PIC 16F877A
* Nhóm lệnh thanh ghi ñịnh hướng byte
Mã lệnh 14 bit Mnemonic,
toán hạng
Mô tả
Chu
kỳ
Msb Lsb
Ảnh hưởng
trạng thái
Chú
ý
ADDWF f,d Cộng w và f 1 00 0111 dfff ffff C,DC,Z 1.2
ANDWF f,d And w và f 1

00 0101 dfff ffff Z 1,2
CLRF f Xóa f 1 00 0001 1fff ffff Z 2
CLRW - Xóa w 1 00 0001 0xxx xxxx Z

COMF f Bù f (ñảo f) 1 00 1001 dfff ffff Z 1,2
DECF f,d Giảm f 1 00 0011 dfff ffff Z 1,2
DECFSZ f,d Giảm f, nhảy cách nếu = 0 1(2) 00 1011 dfff ffff

1,2,3
INCF f,d Tăng f 1 00 1010 dfff ffff Z 1,2
INCFSZ f,d Tăng f, nhảy cách nếu = 0 1(2) 00 1111 dfff ffff

1,2,3
IORWF f,d Phép OR w và f 1


00 0100 dfff ffff Z 1,2
MOVF f,d Sao chép f 1 00 1000 dfff ffff Z 1,2
MOVWF f Sao chép w vào f 1 00 0000 1fff ffff

NOP - Không làm gì cả 1 00 0000 0xx0 0000

RLF f,d Quay trái f qua cờ C(carry) 1

00 1101 dfff ffff

C 1,2
RRF f,d Quay phải f qua cờ C 1 00 1100 dfff ffff C 1,2

SUBWF f,d Trừ w cho f 1 00 0010 dfff ffff

C,CD,Z 1,2
SWAPF f,d Hoán ñổi các nibble trên f 1 00 1110 dfff ffff

1,2
XORWF f,d

XOR w với f

1

00 0110 dfff ffff Z

1,2
* Nhóm lệnh thanh ghi ñịnh hướng bit

Mã lệnh 14 bit Mnemonic,
toán hạng
Mô tả
Chu
kỳ
Msb Lsb
Ảnh hưởng
trạng thái
Chú
ý
BCF f,d Xóa bit f 1 01 00bb bfff ffff 1.2
BSF f,d ðặt bit f 1 01 01bb bfff ffff 1,2
BTFSC f,b Kiểm tra bit,nhảy nếu bị xóa 1(2) 01 10bb bfff ffff 3
BTFSS f,b Kiểm tra bit,nhảy nếu ñược ñặt 1(2) 01 11bb bfff ffff 3



* Nhóm lệnh ñiều khiển và giá trị thực
Mã lệnh 14 bit Mnemonic,
toán hạng
Mô tả
Chu
kỳ
Msb Lsb
Ảnh hưởng
trạng thái
Chú
ý
ADDLW k Cộng giá trị tức thời vào w 1 11 111x kkkk kkkk C,DC,Z
ANDLW k AND giá trị tức thời vào w 1 11 1001 kkkk kkkk Z

CALL k Gọi chương trình con 2 10 0kkk kkkk kkkk
CLRWDT - Xóa bộ ñịnh thời watchdog 1 00 0000 0110 0100 TO’, PD’
GOTO k Nhảy ñến ðịa chỉ 2 10 1kkk kkkk kkkk
IORLW k OR giá trị tức thời với w 1 11 1000 kkkk kkkk Z
MOVLW k Sao chép giá trị tức thời vào w 1 11 00xx kkkk kkkk
RETFIE - Trở về từ ngắt 2 00 0000 0000 1001
RETLW k Trả về giá trị tức thời trong w 2 11 01xx kkkk kkkk
RETURN - Trở về từ chương trình con 2 00 0000 0000 1000
SLEEP - ði vào chế ñộ nghỉ 1 00 0000 0110 0011 TO’,PD’
SUBLW k Trừ w cho giá trị tức thời 1 11 110x kkkk kkkk C,DC,Z
XORLW k XOR giá trị tức thời với w 1 11 1010 kkkk kkkk Z























3. GIỚI THIỆU KIT PICDEM 2 PLUS VÀ MPLAB TOOLS
• GIỚI THIỆU PICDEM2 PLUS
• GIỚI THIỆU MPLAB TOOLS
=====================================================================
3.1. Giới thiệu PICDEM2 PLUS
3.1.1. PICDEM2 PLUS BOARD


Hình 4: PICDEM 2 BOARD
- The PICDEM 2 Plus Demonstration Board has the following hardware features:
• 1. 18, 28 and 40-pin DIP sockets. (Although three sockets are provided, only one
• device may be used at a time.)
• 2. On-board +5V regulator for direct input from 9V, 100 mA AC/DC wall adapter
or
• 9V battery, or hooks for a +5V, 100 mA regulated DC supply.
• 3. RS-232 socket and associated hardware for direct connection to an RS-232
• interface.
• 4. In-Circuit Debugger (ICD) connector.
10

2
2
3

4

6


18

12

14

11

5

8

17

1

15

16

13

7

9

• 5. 5 KΩ potentiometer for devices with analog inputs.
• 6. Three push button switches for external stimulus and Reset.
• 7. Power-on indicator LED.

• 8. Four LEDs connected to PORTB.
• 9. Jumper J6 to disconnect LEDs from PORTB.
• 10. 4 MHz canned crystal oscillator.
• 11. Unpopulated holes provided for crystal connection.
• 12. 32.768 kHz crystal for Timer1 clock operation.
• 13. Jumper J7 to disconnect on-board RC oscillator (approximately 2 MHz).
• 14. 32K x 8 Serial EEPROM.
• 15. LCD display.
• 16. Piezo buzzer.
• 17. Prototype area for user hardware.
• 18. Microchip TC74 thermal sensor.
3.1.2. PIC KIT 2 PROGRAMMER
Step 1: Tìm trên Desktop hoặc từ Start\All Program\Microchip và chọn biểu tượng

Step 2: Chương trình sau khi ñược khởi ñộng sẽ hiển thị một cửa sổ như sau:

×