Nghiên cứu khảo sát bộ vi điều khiển 8 bit PIC16F877

1. Giới thiệu bộ vi điều khiển 8 bít

Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi trong

các lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá

và điều khiển từ xa. Giờ đây với nhu cầu chuyên dụng hoá, tối ưu (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. Việc đưa ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để

đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao.

1.1. Khái niệm về bộ vi điều khiển

Để hiểu khái niệm về bộ vi điều khiển, ta có thể làm phép so sánh nó với bộ

vi xử lý công dụng chung như sau:

Ta biết rằng, các bộ vi xử lý công dụng chung như họ Intel x86 (8086,

80286, 80386, 80486 và Pentium) hoặc họ Motorola 680x0(6800, 68010, 68020,

68030, 68040 vv.) không có RAM, ROM và không có các cổng ra vào trên

chip. Với lý do đó mà chúng được gọi là các bộ vi xử lý công dụng chung.

Một nhà thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng

hạn như Pentium hay 68040 sẽ phải bổ xung thêm RAM, ROM, các cổng vào ra

và các bộ định thời ngoài để làm cho chúng hoạt động được. Mặc dù việc bổ

xung các RAM, ROM, các cổng vào ra sẽ làm cho hệ thống cồng kềnh lên

nhưng nó lại có ưu điểm khi sử dụng các bộ vi xử lý này là rất linh hoạt. Chẳng

hạn như người thiết kế có thể quyết định về số lượng RAM, ROM, và các cổng

vào ra cần thiết sao cho phù hợp với khả năng, mục đích sử dụng của hệ thống.

Điều này không thể có đối với các bộ vi điều khiển. Bởi vì, một bộ vi điều

khiển đã có một CPU (một bộ vi xử lý) cùng với một số lượng RAM, ROM, các

cổng vào ra và một bộ định thời trên cùng một chíp. Hay nói cách khác là bộ vi

xử lý, RAM, ROM, các cổng vào ra và một bộ định thời cùng được nhúng trên

một chip. Do vậy người thiết kế không thể bổ xung thêm bộ nhớ ngoài, số các

cổng vào ra hoặc bộ định thời cho nó. Với số lượng RAM, ROM và số các cổng

vào ra cố định như vậy là một mặt hạn chế (kém linh hoạt) xong nó lại thật sự lý

tưởng đối với những ứng dụng mang tính chuyên biệt, tối ưu về giá thành, tối ưu

về không gian.

Hiện nay trên thị truờng có các bộ vi điều khiển 8 bít chính là. 6811 của

Motorola, 8051 của Intel, Z8 của Xilog và Pic16x của Microchip Technology.

Mỗi loại trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nên chúng

đều không tương thích lẫn nhau. Cũng có những bộ vi điều khiển 16 bít và 32 bít

được sản xuất ra bởi các hãng sản xuất chíp khác nhau.

 

pdf 37 trang yennguyen 2240
Bạn đang xem 20 trang mẫu của tài liệu "Nghiên cứu khảo sát bộ vi điều khiển 8 bit PIC16F877", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Nghiên cứu khảo sát bộ vi điều khiển 8 bit PIC16F877

Nghiên cứu khảo sát bộ vi điều khiển 8 bit PIC16F877
Nghiờn cứu khảo sỏt bộ vi điều 
khiển 8 bit PIC16F877 
Copyright (c) IRF Group 
 Nghiên cứu khảo sát 
bộ vi điều 8 bit PIC16F877 
1. Giới thiệu bộ vi điều khiển 8 bít 
Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi trong 
các lĩnh vực kỹ thuật và đời sống xã hội, đặc biệt là trong kỹ thuật tự động hoá 
và điều khiển từ xa. Giờ đây với nhu cầu chuyên dụng hoá, tối −u (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. Việc đ−a ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để 
đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao. 
1.1. Khái niệm về bộ vi điều khiển 
Để hiểu khái niệm về bộ vi điều khiển, ta có thể làm phép so sánh nó với bộ 
vi xử lý công dụng chung nh− sau: 
Ta biết rằng, các bộ vi xử lý công dụng chung nh− họ Intel x86 (8086, 
80286, 80386, 80486 và Pentium) hoặc họ Motorola 680x0(6800, 68010, 68020, 
68030, 68040 vv...) không có RAM, ROM và không có các cổng ra vào trên 
chip... Với lý do đó mà chúng đ−ợc gọi là các bộ vi xử lý công dụng chung. 
Một nhà thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng 
hạn nh− Pentium hay 68040 sẽ phải bổ xung thêm RAM, ROM, các cổng vào ra 
và các bộ định thời ngoài để làm cho chúng hoạt động đ−ợc. Mặc dù việc bổ 
xung các RAM, ROM, các cổng vào ra sẽ làm cho hệ thống cồng kềnh lên 
nh−ng nó lại có −u điểm khi sử dụng các bộ vi xử lý này là rất linh hoạt. Chẳng 
hạn nh− ng−ời thiết kế có thể quyết định về số l−ợng RAM, ROM, và các cổng 
vào ra cần thiết sao cho phù hợp với khả năng, mục đích sử dụng của hệ thống. 
Điều này không thể có đối với các bộ vi điều khiển. Bởi vì, một bộ vi điều 
khiển đã có một CPU (một bộ vi xử lý) cùng với một số l−ợng RAM, ROM, các 
cổng vào ra và một bộ định thời trên cùng một chíp. Hay nói cách khác là bộ vi 
xử lý, RAM, ROM, các cổng vào ra và một bộ định thời cùng đ−ợc nhúng trên 
một chip. Do vậy ng−ời thiết kế không thể bổ xung thêm bộ nhớ ngoài, số các 
cổng vào ra hoặc bộ định thời cho nó. Với số l−ợng RAM, ROM và số các cổng 
vào ra cố định nh− vậy là một mặt hạn chế (kém linh hoạt) xong nó lại thật sự lý 
t−ởng đối với những ứng dụng mang tính chuyên biệt, tối −u về giá thành, tối −u 
về không gian... 
Hiện nay trên thị truờng có các bộ vi điều khiển 8 bít chính là. 6811 của 
Motorola, 8051 của Intel, Z8 của Xilog và Pic16x của Microchip Technology. 
Mỗi loại trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nên chúng 
đều không t−ơng thích lẫn nhau. Cũng có những bộ vi điều khiển 16 bít và 32 bít 
đ−ợc sản xuất ra bởi các hãng sản xuất chíp khác nhau. 
1.2. Những yêu cầu để lựa chọn một bộ vi điều khiển là: 
Copyright (c) IRF Group 
9 Đáp ứng 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, (khả dĩ). 
9 Có sẵn các công cụ phát triển phần mềm chẳng hạn nh− các trình biên 
dịch trình hợp ngữ và gỡ rối. 
9 Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy. 
1.3. Các tiêu chuẩn lựa chọn một bộ vi điều khiển: 
Tiêu chuẩn đầu tiên và tr−ớc hết trong lựa chọn một bộ vi điều khiển là nó 
phải đáp ứng nhu cầu bài toán về mặt công suất tính toán, giá thành và hiệu quả. 
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 tr−ớc hết phải biết là bộ vi điều khiển nào là 8 bít, 16 bít hay 32 bít có thể đáp 
ứng tốt nhất nhu cầu tính toán của bài toán một cách hiệu quả nhất. 
• Những tiêu chuẩn đ−ợc đ−a ra để cân nhắc là: 
9 Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu. 
9 Kiểu đóng vỏ: Đó là kiểu 40 chân DIP hay QFP hay là kiểu đóng vỏ khác. 
Đây là điề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. 
9 Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với những sản phẩm 
dùng pin, ắc quy. 
9 Dung l−ợng bộ nhớ RAM và ROM trên chíp. 
9 Số chân vào – ra, bộ định thời, số ngắt trên chíp. 
9 Khả năng dễ dàng nâng cấp cho hiệu suất cao hoặc giảm công suất tiêu 
thụ. 
9 Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành cuối 
cùng của sản phẩm mà một bộ vi điều khiển đ−ợc sử dụng. 
2. Bộ Vi điều khiển 8 bit PIC16F877 
2.1. Đặc tính nổi bật của bộ vi xử lí. 
+ Sử dụng công nghệ tích hợp cao RISC CPU. 
+ Ng−ời sử dụng có thể lập trình với 35 câu lệnh đơn giản. 
+ Tất cả các câu lệnh thực hiện trong một chu kì lệnh ngoại trừ một số câu 
lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh. 
+ Tốc độ hoạt động là: - Xung đồng hồ vào là 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 256x 8 bytes 
 Khả năng của bộ vi xử lí này 
+ Khả năng ngắt ( lên tới 14 nguồn ngắt trong và ngắt ngoài ) 
+ Ngăn nhớ Stack đ−ợc phân chia làm 8 mức 
+ Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp. 
+ Nguồn khởi động lại (POR) 
+ Bộ tạo xung thời gian (PWRT) và bộ tạo dao động (OST) 
Copyright (c) IRF Group 
+ Bộ đếm xung thời gian (WDT) với nguồn dao động trên chíp (nguồn dao 
động RC ) hoạt động đáng tin cậy. 
+ Có mã ch−ơng trình bảo vệ. 
+ Ph−ơng thức cất giữ SLEEP 
+ Có bảng lựa chọn dao động. 
+ Công nghệ CMOS FLASH /EEPROM nguồn mức thấp ,tốc độ cao. 
+ Thiết kế hoàn toàn tĩnh . 
+ Mạch ch−ơng trình nối tiếp có 2 chân. 
+ Xử lý đọc /ghi tới bộ nhớ ch−ơng trình . 
+ Dải điện thế hoạt động rộng : 2.0V đến 5.5V 
+ Nguồn sử dụng hiện tại 25 mA 
+ Dãy nhiệt độ công nghiệp và thuận lợi . 
+ Công suất tiêu thụ thấp: 
 < 0.6mA với 5V, 4MHz 
 20à A với nguồn 3V, 32 kHz 
 < 1 à A nguồn dự phòng. 
 Các đặc tính nổi bật của thiết bị ngoại vi trên chip 
+ Timer0: 8 bít của bộ định thời, bộ đếm với hệ số tỷ lệ tr−ớc 
+ Timer1: 16 bít của bộ định thời, bộ đếm với hệ số tỷ lệ tr−ớc, có khả năng 
tăng trong khi ở chế độ Sleep qua xung đồng hồ đ−ợc cung cấp bên ngoài. 
+ Timer 2: 8 bít của bộ định thời, bộ đếm với 8 bít của hệ số tỷ lệ tr−ớc, hệ số 
tỷ lệ sau 
+ Có 2 chế độ bắt giữ, so sánh, điều chế độ rộng xung(PWM). 
+ Chế độ bắt giữ với 16 bít, với tốc độ 12.5 ns, chế độ so sánh với 16 bít, tốc 
độ giải quyết cực đại là 200 ns, chế độ điều chế độ rộng xung với 10 bít. 
+ Bộ chuyển đổi tín hiệu số sang t−ơng tự với 10 bít . 
+ Cổng truyền thông nối tiếp SSP với SPI ph−ơng thức chủ và I2C(chủ/phụ) 
+ Bộ truyền nhận thông tin đồng bộ, dị bộ(USART/SCL) có khả năng phát 
hiện 9 bít địa chỉ. 
+ Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR và CS điều 
khiển. 
Copyright (c) IRF Group 
 Sơ đồ các chân PIC16F87X. 
Copyright (c) IRF Group 
 Sơ đồ khối bộ vi điều khiển PIC16F87X 
2.2. So sánh với bộ vi điều khiển 8051 
*Bộ vi điều khiển 8051 là bộ VĐK đầu tiên thuộc họ VĐK x51 đ−ợc sản 
xuất bởi công ty Intel, Siemens, Advanced Micro Devices, Fujitsu, Philips. 
Các đặc điểm chung của bộ VĐK này: 
• 4KB ROM 
• 128 B RAM 
• 4 cổng I/O 8 bit 
• 2 Timer 16 bit 
• Có khả năng quản lý đ−ợc 64 KB bộ nhớ mã ch−ơng trình ngoài (ROM 
ngoài). 
• Có khả năng quản lý đ−ợc 64 KB bộ nhớ dữ liệu ngoài (RAM ngoài) 
• Có bộ xử lý logic riêng (thao tác trên các bit) 
• Có thể thao tác trực tiếp đ−ợc 210 bit (các bit này đã đ−ợc địa chỉ hoá) 
• Có 5 ngắt 
• Dùng nguồn dao động ngoài 
Copyright (c) IRF Group 
• Dùng điện áp 5V để cho chip hoạt động 
 *Cổng P0: Có dạng cực máng hở và có 8 chân (8 bit) là cổng vào/ra hoặc 
là cổng chuyển dữ liệu và địa chỉ. 
 *Cổng P1: Là cổng vào/ra có 8 chân (8 bit). 
 *Cổng P2: Có 8 chân (8 bit) là cổng vào/ra hoặc là cổng chuyển dữ liệu và 
địa chỉ. 
*Cổng P3: Có 8 chân, cổng này có thể là cổng vào/ra 8 bit hay còn có các 
chức năng quan trọng khác nh− phục vụ cho ngắt, các bộ định thời, việc truyền 
nhận dữ liệu truyền thông nối tiếp, đọc và ghi các bộ nhớ ngoài 
 Sơ đồ khối của VĐK 8051: 
CPU
Registers
RAM128
bytes
ROM
4 KInterupt
control
Bus
I / O Ports Serial port
Timer 0
Timer 1
Timer 0
Serial Ports
P0 P2 P1 P3 TxD RxD
GND
0Int
1Int
Timer 1
T0
T1
Oscilator
Nh− vậy có thể thấy đặc điểm đầu tiên mà PIC16F877 đem lại và nổi bật so 
với VĐK 8051 là dòng PIC16F877 những đặc tính kĩ thuật hơn hẳn so với bộ 
VĐK 8051 thể hiện ở những điểm sau: 
 VĐK8051 VĐK PIC16F877 
 Đặc tính Số l−ợng Đặc tính Số l−ợng 
ROM trên chíp 
RAM 
Bộ định thời 
Các chân vào ra 
Cổng nối tiếp 
Nguồn ngắt 
4K byte 
128 byte 
2 
32 
1 
6 
ROM trên chíp 
RAM 
Bộ định thời 
Các chân vào ra 
Cổng nối tiếp 
Nguồn ngắt 
8K 
368 byte 
3 
40 
2 
14 
Ngoài những đặc tính trên thì bộ vi điều khiển PIC16F877 còn có một đặc 
điểm hơn hẳn so với 8051 là có 10 bít chuyển đổi A/D trên chíp điều này sẽ giúp 
chúng ta không phải mất một bộ chuyển đổi (sẽ dẫn đến kết nối dây trở nên phức 
tạp). 
Một đặc điểm nữa là bộ vi điều khiển PIC16F877 có bộ tạo dao động chủ 
trên chíp điều này sẽ tránh đ−ợc những sai số không cần thiết trong việc tạo 
Copyright (c) IRF Group 
xung dao động, vi điều khiển PIC16F877 có khả năng tự Reset bằng bộ WDT, và 
có thêm 256 byte EEPROM. 
2.3. Sự tổ chức bộ nhớ Pic16F877. 
Pic16F877 có 3 khối bộ nhớ. Bộ nhớ ch−ơng trình PLASH, bộ nhớ dữ liệu 
RAM, bộ nhớ EEPROM. 
2.3.1. Sự tổ chức bộ nhớ ch−ơng trình FLASH và Stack nhớ. 
Vi điều khiển PIC16F877 có một bộ đếm 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 
0004h. 
Stack có 8 mức dùng để l−u địa(PC) chỉ lệnh thực hiện tiếp theo sau lệnh 
CALL và khi xẩy ra ngắt. 
 Bản đồ bộ nhớ ch−ơng trình và các ngăn xếp. 
2.3.2. Sự tổ chức bộ nhớ dữ liệu RAM 
RAM là bộ nhớ có thể đọc và ghi, nó không l−u dữ liệu khi mất điện, bộ 
nhớ RAM của PIC16F877 có 4 bank, mỗi bank có dải địa chỉ 0-7FH(128byte) 
trên các bank những thanh ghi đa mục đích, nó hoạt động nh− một RAM 
Copyright (c) IRF Group 
tĩnh.(General purpose register), và nh−ng thanh ghi chức năng đặc biệt(Special 
function registers) ở vùng địa chỉ thấp. Bít RP1(Status ) và bit RP0(Status 
) dùng để lụa chọn bank làm việc. 
RP1:RP0 Bank 
00 0 
01 1 
10 2 
11 3 
 Hình ảnh các bank nh− sau: 
 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 byte. 
 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ị. 
Copyright (c) IRF Group 
Các thanh ghi này có thể đ−ợc phân loại vào hai bộ phận trung tâm (CPU) và 
ngoại vi. 
Sau đây là một số thanh ghi đặc biệt quan trọng. 
* 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, 183h. Các thanh ghi này cho biết trạng thái của 
phần tử lôgic toán học ALU, trạng thái RESET, trạng thái của các bit 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 bit 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 tại 
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 bit đ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 trên cổng B 
 * Các thanh ghi INTCON: Có 4 thanh ghi INTCON tại các đị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 bit cờ cho việc tràn thanh ghi TMR0, các ngắt thay đổi cổng RB 
và chân các ngắt ngoàI RB0/INT. 
 * Thanh ghi PIE1: Tại địa chỉ 8Ch, chứa đựng các bit cho phép riêng lẻ 
cho các ngắt ngoại vi. 
 * Thanh ghi PIR1: Tại địa chỉ 0Ch, chứa đựng các bit cờ riêng lẻ cho các 
ngắt ngoại vi. 
 * Thanh ghi PIE2: Tại địa chỉ 8Dh, chứa đựng các bit 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 PIE2: Tại địa chỉ 8Dh, chứa đựng các cờ bit 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 bit 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. 
* PCL 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 PCL, thanh 
ghi này có thể đọc hoặc ghi. Byte cao đ−ợc gọi là thanh ghi PCH, nó chứa các bit 
PC và không trực tiếp đọc hoặc ghi mà toàn bộ sự cập nhập của nó thông 
qua thanh ghi PCLATH. Khi reset 5 bit PCLATH nạp tới PCH, khi thực 
hiện các lệnh CALL, GOTO 11 bit Ofcode và 2 bit PCLATH tạo 
thành 13 bit nạp vào PC. Do vậy khi dùng lệnh CALL, GOTO chú đến hai bit 
PCLATH đó cũng chính là hai bit chỉ các trang của bộ nhớ ch−ơng trình. 
Hình ảnh sự nạp PCLATH tới PC 
Copyright (c) IRF Group 
2.3.3. Các trang bộ nhớ ch−ơng trình. 
PIC16F877 có 8Kx14 PLASH các lệnh CALL, GOTO chỉ cung cấp 11 bit 
địa chỉ cho phép rẽ nhánh đ−ợc 2k211-1>của một trang bộ nhớ ch−ơng trình 
2 bit cao đ−ợc cung cấp bởi 2 bit 3,4 của PCLATH do vậy tuỳ việc thiết 
lập các bit 3,4 của PCLATH tr−ớc khi lệnh CALL, GOTO thực hiện cho phép rẽ 
nhánh tới các trang bộ nhớ khác nhau. 
 Chú ý các lệnh RETURN, RETFIE không làm thay đổi PCLATH 
 Ví dụ từ trang 0 gọi chuơng trình con ở trang 1 nh− sau 
 ORG 0000h 
 Goto main 
 main 
 BSF PCLATH,3 
 BCF PCLATH,4 
 CALL SUB1 
 BCF PCLATH,3 
 BCF PCLATH,4 
 LOOP 
 GOTO LOOP 
 ORG 0X800H 
SUB1 
Copyright (c) IRF Group 
RETURN 
END 
2.3.4. Truy cập bộ nhớ RAM bằng địa chỉ trực tiếp, gián tiếp. 
 * Ví dụ đọc ô nhớ 0xE0 bằng địa chỉ trực tiếp 
 BSF STATUS,RP0 ;chọn bank 1 
 BCF STATUS,RP1 
 MOVF 0XE0,W ;copy ô nhớ 0xE0(ở bank 1) tới W 
 BCF STATUS,RP0 ;chọn bank0 
 BCF STATUS,RP1 
 MOVF 0X30,W ;copy ô nhớ 0x30(ở bank 0) tới W 
* Truy cập RAM bằng địa chỉ gián tiếp 
Thanh ghi FSR chỉ ra địa chỉ(0->0XFF) ô nhớ cần truy cập, thanh ghi 
INDF cho nội dung ô nhớ truy cập, bit IRP thanh ghi STATUS chỉ ra 
bank truy cập 
ví dụ xoá các ô nhớ từ địa chỉ 0x20-0xFF 
MOVLW 0X1A 
MOVWF FSR 
BCF STATUS,IRP ;bank 0 
Copyright (c) IRF Group 
LOOP 
INCF FSR, F 
CLRF INDF 
MOVF FSR, W 
XORLW 0XFF 
BTFSS STATUS, ZR 
 GOTO LOOP 
2.3.5. Bộ nhớ dữ liệu EEPROM và bộ nhớ ch−ơng trình FLASH. 
Các bộ nhớ này có thể đọc và ghi trong khi các hoạt động vẫn diễn ra 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à đánh 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: 
 EECON1 EEDATH 
 EECON2 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 bit dữ liệu để đọc/ghi và thanh 
ghi EEADR giữ địa chỉ vị trí của EEPROM đ−ợc truy cập. Các thanh ghi 
EEDATH và EEADRH không đ−ợc sử dụng để truy cập dữ liệu EEPROM. Các 
thiết bị này có tới 256 byte của dữ liệu EEPROM ... hể ngắt hoạt động của nó bằng việc đặt bít RCIE 
của thanh ghi PIE1. Cờ bít RCIF chỉ dùng để đọc, nó đ−ợc xóa trong phần cứng. 
Nó sẽ đ−ợc xoá khi thanh ghi RCREG đ−ợc đọc là trống. Thanh ghi này là một 
thanh ghi có bộ đệm đôi. Nó có khả năng nhận 2 byte dữ liệu và truyền tới thanh 
ghi RCREG FIFO và khi đó byte thứ 3 đi vào thanh ghi RSR. Nếu phát hiện bít 
STOP mà thanh ghi RCREG vẫn đầy thì bít báo lỗi OERR sẽ đ−ợc đặt. Bít báo 
Copyright (c) IRF Group 
lỗi chỉ đ−ợc xoá trong phần mềm. Nếu bít OERR đ−ợc đặt thì việc truyền dữ liệu 
từ thanh ghi RSR tới thanh ghi RCREG bị ngăn cấm và không có dữ liệu đ−ợc 
nhận. Cấu trúc của bít báo lỗi FERR đ−ợc đặt khi bít STOP đ−ợc phát hiện đã 
đ−ợc xoá. Bít FERR và bít thứ 9 là các bộ đệm giống nh− ph−ơng pháp bộ đệm. 
Trong khi đang đọc thanh ghi RCREG nó sẽ nạp giá trị mới cho bít RX9D và 
FERR 
2.6.3. Truyền thông đồng bộ chế độ chủ 
Trong chế dộ này dữ liệu đ−ợc truyền nhận duới dạng bán song công (việc 
truyền và nhận dữ liệu không thể tiến hành đồng thời cùng một lúc). Khi đang 
truyền dữ liệu thì việc nhận dữ liệu bị ngăn cấm. việc chọn chế độ truyền thông 
đồng bộ đ−ợc xác lập bằng việc đặt bít SYNC của thanh ghi TXSTA, ngoài ra bít 
SPEN còn đ−ợc đặt để định dạng các chân RC6/TX/CKvà RC7/RX/DT để cho 
chân xung đồng hồ và chân truyền dữ liệu. Chế độ chủ còn đ−ợc xác lập bằng 
việc đặt bit CSRC của thanh ghi TXSTA. 
Việc nhận dữ liệu trong chế độ truyền thông đồng bộ chủ. T−ơng tự nh− 
truyền thông dị bộ, nó phải có thanh ghi TSR. thanh ghi này đọc và viết dữ liệu 
thông qua bộ đêm là thanh ghi TXREG. Thanh ghi này đ−ợc nạp dữ liệu trong 
phần mềm. Thanh ghi TSR sẽ không đ−ợc nạp giá tị cho tới tận thi đã truyền hết 
bít cuối cùng của lần truớc đó. Khi đã truyền hết bít cuối cùng, thì thanh ghi TSR 
sẽ nạp giá trị mới từ thanh ghi TXREG. Thanh ghi TXREG rỗng thì bít cờ ngắt 
TXIF sẽ đ−ợc đặt. Cờ ngắt này có thể quy định hoạt động hoặc không hoạt động 
bằng việc đặt hoặc xoá bít TXIE của thanh ghi PIE1. Trong khi cờ bít TXIF cho 
biết trạng thái của thanh ghi TXREG, thì bít TRMT cho biết trạng thái của thanh 
ghi TSR. Bít trạng thái TRMT chỉ dùng để đọc, nó đ−ợc đặt khi thanh ghi TSR 
rỗng. 
Việc truyền dữ liệu hoạt động bằng việc đặt bít TXEN của thanh ghi 
TXSTA, bít dữ liệu đầu tiền sẽ đ−ợc di chuyển trên xung đi lên của xung clock 
trên chân CLK. Việc truyền dữ liệu đ−ợc bắt đầu bằng thanh ghi TXREG và đặt 
bít TXEN. Ưu điểm ở đây là tốc độ thấp có thể đ−ợc lựa chọn. Tốc độ truyền 
đ−ợc giữ nguyên trong khi RESET khi xoá 3 bít TXEN, CREN, SREN. Việc 
truyền dữ liệu đ−ợc bắt đầu lần đầu tiên khi thanh ghi TSR rỗng, khi chuyển dữ 
liệu tới thanh ghi TXREG nó ngay lập túc chuyển tới thanh ghi TSR và kết quả 
là thanh ghi TXREG rỗng. Xoá bít TXEN Trong khi đang truyền dữ liệu là lí do 
việc truyền dữ liệu bị gián đoạn và nó phải dừng lại, và nếu bít CREN hoặc bít 
SREN đ−ợc đặt trong khi đang truyền cũng là nguyên nhân gây ra việc truyền dữ 
liệu bị gián đoạn. 
Với mục đích truyền 9 bít dữ liệu thì bít TX9 của thanh ghi TXSTA phải 
đ−ợc đặt và bít thứ 9 này phải đ−ợc viết tới bít TX9D. Bít thứ 9 này phải đ−ợc 
viết tr−ớc khi viết 8 bít dữ liệu tới thanhghi TXREG. Bởi vì dữ liệu đ−ợc viết tới 
thanh ghi TXREG ngay lập tức đ−ợc chuyển tới thanh ghi TSR, nếu thanh ghi 
này rỗng. Nếu thanh ghi TSR rỗng và thanh ghi TXREG đ−ợc viết tr−ớc khi viết 
giá trị mới tới bít TX9D, thì hiện tại nó sẽ nạp giá trị cũ ở trong bít TX9D. 
Copyright (c) IRF Group 
Việc nhận dữ liệu ở chế độ đồng bộ chủ: chế độ nhận dữ liệu ở chế độ đồng 
bộ chủ đ−ợc chọn bằng việc đặt bít SREN hoặc bít CREN của thanh ghi RCSTA. 
Dữ liệu đ−ợc đ−a ở chân RC/RX/DT ở trên cạnh xuống của xung đồng hồ. Nếu 
bít SREN đ−ợc đặt thì chỉ có 1 từ đ−ợc nhận. nếu bít CREN đ−ợc đặt thì việc 
nhận cứ tiếp diễn cho tới tận khi bít này đ−ợc xoá mới thôi. Cả hai bít này đều 
đ−ợc đặt thì bít CREN đ−ợc −u tiên tr−ớc rồi theo thứ tự đó. Sau khi dữ liệu đã 
đ−ợc nhận vào trong thanh ghi RSR nó sẽ chuyển tới thanh ghi RCREG. Khi 
việc chuỷên dịch này hoàn thành thì cờ bít RCIF của thanh ghi PIR1 sẽ đ−ợc đặt. 
Hoạt động của cờ này có thể có hoặc không nhờ việc đặt hoặc xoá bít RCIE của 
thanh ghi PIE1. RCREG là 1 thanh ghi có 2 bộ đệm là 2 thanh ghi. Nó có khả 
năng nhận 2 byte dữ liệu để chuyển tới thanh ghi RCREG FIFO và byte thứ ba 
bắt đầu chuyển tới thanh ghi RSR. Trong khi rời bít cuối cùng của byte thứ ba 
mà thanh ghi RCREG vẫn đầy thì bít báo lỗi OERR sẽ đ−ợc đặt va từ ở trong 
thanh ghi RSR sẽ bị lỗi. Bít OERR đ−ợc xóa trong phần mềm. Nếu bít này đ−ợc 
đặt thì việc chuyển dữ liệu từ thanh ghi RSR tới thanh ghi RCREG bị ngăn cấm. 
Việc nhận bít thứ 9 cũng t−ơng tự nh− việc nhận bít dữ liệu. Trong khi thanh ghi 
RCREG đang đọc nó sẽ nạp giá trị mới cho bít RX9D. Đó là đIều cần chú ý khi 
ng−ời sử dụng dùng truyền thông chín bít dữ liệu 
2.6.4. Truyền thông đồng bộ chế độ phụ 
Truyền thông đồng bộ chế độ phụ khác với truyền thông đồng bộ chế độ 
chính trong tr−ờng hợp xung đồng hồ bên ngoài cung cấp tại chân RC6/ TX / 
CK. Nó có thể cho phép thiết bị nhận hoặc truyền dữ liệu trong chế độ SLEEP. 
Chế độ phụ đ−ợc tiến hành bằng việc xoá bít CSRC của thanh ghi TXSTA. 
*Truyền dữ liệu trong chế độ truyền thông phụ: Hoạt động của chế độ 
truyền thông đồng bộ chính và truyền thông đồng bộ phụ hoàn toàn giống nhau, 
chỉ khác là chế độ truyền thông phụ có thể hoạt động ở chế độ SLEEP. Nếu hai 
từ đ−ợc viết tới thanh ghi TXREG và lệnh SLEEP đựơc tiến hành thì nó sẽ tồn 
tại những điểm sau : 
 +Từ đầu truyền tới thanh ghi TSR và nó chuyển đi ngay lập tức 
 +Từ thứ hai đ−ợc chứa trong thanh ghi TXREG 
+Cờ bit TXIF sẽ không đ−ợc đặt 
+Khi từ đầu tiên đ−ợc chuyển ra khỏi thanh ghi TSR. Thanh ghi TXREG 
sẽ chuyển từ thứ hai vào thanh ghi TSR và bây giờ cờ bít TXIF sẽ đ−ợc đặt 
+Nếu bít TXIE đ−ợc đặt ngắt sẽ đ−ợc gọi từ SLEEP và ngắt tính toàn cầu 
của ngắt sẽ đ−ợc gọi. 
Khi thiết lập Truyền thông đồng bộ ở chế độ phụ ta có những b−ớc sau: 
+ Để thiết lập chế độ cổng truyền thông đồng bộ phụ thì ta phải đặt bít 
SYNC và Bít SPEN và xoá bít CSRC 
+ Xoá bít CREN và SREN 
+ Nếu ngắt có thể hoạt động, thì phải đặt bít TXIE 
+ Nếu truyền thông chín bít thì phảI đặt bít TX9 
+Việc truyền thông có thể thiết lập TXEN 
Copyright (c) IRF Group 
+ Nếu việc truyền thông chín bit đ−ợc thiết lập thì bít thứ chín phảI đ−ợc 
nạp tới bít TX9D 
+Khi mới bắt đầu truyền thì dữ liệu đ−ợc nạp tới thanh ghi TXREG 
+ Nếu sử dụng ngắt thì phảI chắc chắn rằng bít GIE và bít PEIE đã đ−ợc 
đặt 
*Nhận dữ liệu ở chế độ truyền thông đồng bộ phụ: Hoạt động của chế độ 
truyền thông đồng bộ chế độ phụ và truyền thông đồng bộ chế độ chính hoàn 
toàn giống nhau, nh−ng ở chế độ phụ nó có thể hoạt động ở lệnh SLEEP. Bít 
SREN không đ−ợc sử dụng ở chế độ này. 
Nếu việc nhận dữ liệu đ−ợc hoạt động bằng việc đặt bít CREN tr−ớc khi 
lệnh SLEEP đ−ợc thực hiện. Từ đ−ợc nhận trong khi SLEEP, khi việc nhận dữ 
liệu hoàn thành, thì thanh ghi RSR sẽ chuyển dữ liệu tới thanh ghi RCREG Và 
nếu bít RCIE đ−ợc đặt, thì ngắt có thể gọi từ lệnh SLEEP. 
2.7. Bộ chuyển đổi t−ơng tự sang số : 
 Bộ chuyển đổi t−ơng tự sang số có 8 kênh đối Pic16F877. 
Tín hiệu t−ơng tự đ−ợc nạp vào bộ nạp điện và giữ điện dung. Tín hiệu ra điển 
hình và giữ điện dung duy trì là đầu vào bộ chuyển đổi. Bộ chuyển đổi A/D phát 
ra kết quả số 10 bít. Bộ chuyển đổi A/D có sự chuyển điện thế cao và thấp đầu 
vào đ−ợc lựa chọn trong phần mềm để có sự kết hợp của VDD, VSS, RA2, RA3. 
 Bộ chuyển đổi A/D có đặc tr−ng duy nhất có thể hoạt động trong khi thiết bị 
là trong trạng thái SLEEP. Để hoạt động trong ph−ơng thức này A/D phải đ−ợc 
lấy từ nguồn đồng hồ bên trong mạch dao động RC. 
 Bộ chuyển đổi A/D có 4 thanh ghi. Đó là những thanh ghi: 
 A/D thanh ghi kết quả cao(ADRESH) 
 A/D thanh ghi kết quả thấp(ADRESL) 
 Thanh ghi điều khiển chuyển đổi A/D ( ADCON0) 
 Thanh ghi điều khiển chuyển đổi A/D ( ADCON1) 
 Thanh ghi ADCON0 trình bày trong thanh ghi 8.1 điều khiển hoạt động của 
bộ chuyển đổi A/D. Thanh ghi ADCON1 trình bày trong hình 8.2 định dạng hàm 
của chân cổng. Chân cổng có thể sắp xếp nh− là tín hiệu vào t−ơng tự hoặc nh− 
là đầu vào ra số. 
*Thanh ghi 8.1: Thanh ghi ADCON0 ( địa chỉ 1Fh) 
Bít 7-6: ADCS1:ADCS0 Những bít lựa chọn đồng hồ chuyển đổi A/D 
 00=FOSC/2 
 01= FOSC/8 
 10= FOSC/32 
 11= FRC(đồng hồ xuất phát từ bên trong bộ chuyển đổi A/D dao động 
RC) 
Bít 5-3:CHS2:CHS0 Bít chọn kênh t−ơng tự. 
 000=kênh 0( RA0/AN0) 
 001=kênh 1 (RA1/AN1) 
 010=kênh 2 (RA1/AN2) 
Copyright (c) IRF Group 
 011=kênh 3 (RA3/AN3) 
 100=kênh 4 (RA5/AN4) 
 101=kênh 5 ( RE0/AN5) 
 110=kênh 6 (RE1/AN6) 
 111=kênh 7( RE2/AN7) 
 Bít 2 :GO/DONE bít trạng thái chuyển đổi A/D 
 Nếu ADON=1 
 1=chuyển đổi A/D đang thực hiện (đặt bít này để bắt đầu quá trình 
chuyển đổi) 
 0=chuyển đổi A/D không trong qua trình thực hiện(Bít này sẽ tự động 
xoá bởi phần cứng sau khi quá trình chuyển đổi A/D hoàn thành.) 
 Bít 1: Bít ng−ời dùng định nghĩa . 
 Bít 0: ADON:bít bật chuyển đổi. 
1= Bộ chuyển đổi A/D hoạt động 
0=Bộ chuyển đổi A/D tắt và ngừng hoạt động. 
*Thanh ghi 8.2 thanh ghi ADCON1(địa chỉ 9Fh) 
 Bít 7 : ADFM : bít lựa chọn kết quả định dạng . 
 Bít 6-4 : ng−ời dùng định nghĩa . 
 Bít 3-0 : Bít điều khiển sắp xếp cổng chuyển đổi A/D. 
Thanh ghi ADRESH:ADRESL chứa đựng 10 bít kết quả của chuyển đổi 
A/D. Khi chuyển đổi A/D là hoàn thành kết quả đ−ợc nạp vào thanh ghi kết quả 
chuyển đổi A/D. Bít GO/DONE (ADCON0) đ−ợc xoá và bít cờ ngắt chuyển 
đổi A/D là ADIF đ−ợc đặt. 
Sau đó bộ chuyển đổi A/D đ−ợc sắp xếp nh− mong muốn. Lựa chọn kênh 
phải đạt đ−ợc tr−ớc khi chuyển đổi bắt đầu. Kênh vào t−ơng tự phải có bít TRIS 
t−ơng ứng đ−ợc lựa chọn nh− là đầu vào. 
Những b−ớc cần làm theo khi thực hiện chuyển đổi A/D : 
1. lựa chọn cấu hình A/D 
+Đặt cấu hình t−ơng tự cho chân vào A/D 
+Lựa chọn kênh vào chuyển đổi A/D (ADCON0) . 
+Lựa chọn đồng hồ chuyển đổi A/D . 
+Bật bộ chuyển đổi A/D (ADCON0) . 
2. Lựa chọn cấu hình ngắt cho A/D 
+Xoá bít ADIF. 
+Đặt bít ADIE. 
+Đặt bít PEIE. 
+Đặt bít GIE 
3. Đợi phụ thuộc thời gian đạt đ−ợc. 
4. Bắt đầu chuyển đổi: 
+Đặt bít GO/DONE(ADCON0). 
5. Đợi cho chuyển đổi A/D hoàn thành bởi : 
+Thăm dò bít GO/DONE để xoá (với thực hiện ngắt) hoặc đợi cho ngắt 
chuyển đổi A/D. 
Copyright (c) IRF Group 
6. Đọc kết quả chuyển đổi cặp thanh ghi (ADRESH:ADRESL) xoá bít 
ADIF nếu quy định . 
7. Cho chuyển đổi kế tiếp, thực hiện b−ớc 1 hoặc b−ớc 2 theo quy 
định.Tốc độ chuyển đổi A/D qui định nh− là chu kì TAD. Giá trị nhỏ nhất đợi của 
2 chu kì là đ−ợc quy định tr−ớc khi bắt đầu kế tiếp. 
2.7.1. Lựa chọn tốc độ chuyền đổi : 
 Tốc độ chuyển đổi là đ−ợc định nh− là TAD. Quy định thời gian chuyển đổi 
A/D nhỏ nhất 12TAD cho 10 bít chuyển đổi. Nguồn của thời gian chuyển đổi lựa 
chọn trong phần mềm. Có thể chọn một trong 4 ở bảng lựa chọn. 
2TOSC , 8TOSC, 32TOSC, Dao động RC trong bộ chuyển đổi A/D.(2đến 6à s). 
Để cho việc chuyển đổi đúng ,thời gian chuyển đổi TADphải đ−ợc lựa chọn để 
chắc chắn TADnhỏ nhất 1.6à s. 
Bảng 11-1 trình bày giá trị thời gian TAD nhận đ−ợc từ thiết bị phát tần số và lựa 
chọn nguồn đồng hồ . 
Chú ý: 
1>Nguồn RC có thời gian chu kì TAD4 à s nh−ng có thể trong khoảng 2ữ6 à s. 
2>Khi tần số thiết bị lớn hơn 1MHz bộ chuyển đổi A/D nguồn đồng hồ khởi tạo 
cho SLEEP hoạt động. 
2.8. Các ngắt của PIC16F877 
 PIC16F877 có 14 nguồn ngắt, thanh ghi INTCON là thanh ghi điều khiển 
các ngắt, mỗi ngắt có một bit cờ ngắt và một bit cho phép hoặc cấm ngắt. Bit 
GIE (INTCON) điều khiển chung cho 14 ngắt khi bit này set thì các ngắt 
mới có tác dụng, khi bit GIE xoá thì tất cả các ngắt bị cấm. 
 Bit GIE bị xoá khi reset. Khi bit cờ ngắt thiết lập bit GIE thiết lập và bit 
PEIE thiết lập với ngắt ngoại vi đồng thời bit cho phép ngắt của ngắt đó cho phép 
thì ngắt đó xẩy ra. 
 Khi một ngắt xẩy ra bộ đếm ch−ơng trình PC đ−ợc nạp giá trị 0004h và bit 
GIE bị xoá để cấm sự chồng ngắt, khi chỉ lệnh RETFIE thực hiện trả lại địa chỉ 
cho PC nơi xẩy ra ngắt, đồng thời thiết lập lại bit GIE. 
 Khi xẩy ra ngắt PC luôn đ−ợc nạp giá trị 0004h vì các ngắt đ−ợc phân biệt 
bởi bit cờ ngắt của ngắt đó. 
 Ngắt ngoài từ chân RB0/INT, và ngắt từ sự thay đổi trạng thái các chân 
RB4:RB7 có thể đánh thức bộ xử lý từ chế độ SLEEP. 
 Các thanh ghi PIE1, PIR1, PIE2, PIR2 điều khiển các ngắt ngoại vi 
Sơ đồ các bit điều khiển ngắt: 
Copyright (c) IRF Group 
Khi một ngắt xẩy ra chỉ có PC đ−ợc l−u trong stack do đó ng−ời sử dụng 
phải l−u các thanh ghi W, STATUS, PCLATH, khi xẩy ra ngắt. 
 ví dụ thực hiệ điều này: 
 ORG 0000h 
 ... 
 ORG 0004h 
 MOVWF W_TEM ;L−u W 
 MOVF STATUS,W 
 CLRF STATUS ;chon bank 0 
 MOVWF STATUS_TEM ;L−u STATUS 
 MOVF PCLATH,W 
 MOVWF PCLATH_TEM ;L−u PCLATH 
 CLRF PCLATH ;chọn trang 0 
 ... 
 ;ch−ơng trình phục vụ các ngắt 
 ... 
 ;Khôi phục các thanh ghi 
 CLRF STATUS 
 MOVF PCLATH_TEM,W 
 MOVWF PCLATH 
Copyright (c) IRF Group 
 MOVF STATUS_TEM,W 
 MOVWF STATUS 
 MOVF W_TEM,W 
 RETFIE 
 Chú ý biến W_TEM phải đ−ợc định nghia ở tất cả các bank hoặc ở vùng 
địa địa chung cho các bank(ở PIC16F877 là địa chỉ 70h-7Fh), các biến 
PCLATH_TEM, STATUS chỉ định nghĩa ở bank 0. 
2.9. Mô tả tập lệnh của PIC16F877. 
 PIC16F877 có 35 lệnh hầu hết các lệnh thực hiện trong một chu kỳ máy 
trừ một số lệnh rẽ nhánh. Mỗi lệnh luôn có độ dài cố định 14 bit. 
 Quy −ớc 
 f: địa chi ô nhớ từ 0-7fh 
 d: bit định h−ớng dữ liệu kết quả 
 +d=1 kết quả l−u trong f 
 +d=0 l−u trong W 
 b: chỉ ra bit thứ b trong f, 0=<b<=7 
 k: hằng số từ 0-ffh 
 Bảng tập lệnh PIC16F877. 
Tên lệnh gợi 
nhớ 
Mô tả lệnh Số chu 
kỳ lệnh 
Trạng thái cờ 
ảnh h−ởng 
ADDWF f,d Cộng W với f 1 C,DC,Z 
ANDWF f,d AND W và f 1 Z 
CLRF f Xoá ô nhớ,thanh ghi f 1 Z 
CLRW Xoá W 1 Z 
COMF f,d Lấy bù 1 của f 1 Z 
DECF f,d Giảm f một đơn vị 1 Z 
DECFSZ f,d Giảm f một đơn vị, skip if 0 1(2) 
INCF f,d Tăng f một đơn vị 1 Z 
INCFSZ f,d Tăng f một đơn vị, skip if 0 1(2) 
IORWF f,d Or W và f 1 Z 
MOVF f,d Copy f tới W hoặc chính f 1 Z 
MOVWF f Copy W tới f 1 
NOP Không làm gì 1 
RLF f,d Quay trái f qua cờ nhớ C 1 C 
RRF f,d Quay phải f qua cờ nhớ C 1 C 
SUBWF f,d Trừ f cho W 1 Z,DC,C 
SWAPF f,d Hoán vị 4 bit thấp của f cho 
4 bit cao của f 
1 
XORWF f,d Xor W và f 1 Z 
BCF f,b Xoá bit b của f 1 
BSF f,b Set bit b của f 1 
Copyright (c) IRF Group 
BTFSC f,b Test bit b của f, Skip if clear 1(2) 
BTFSS f,b Test bit b của f, Skip if set 1(2) 
ADDLW k W=Cộng k và W 1 Z,DC,C 
ANLW k W=WAnd k 1 Z 
CALL k Gọi thủ tục con ở địa chỉ k 
là số 11 bit 
2 
CLRWDT Reser WDT 1 TO , PD 
GOTO k Nhảy tới địa chỉ k là số 11 
bit 
2 
IORLW k W=W or k 1 Z 
MOVLW k W=k 1 
RETFIE Trở về từ ngắt 2 
RETLW k Trở về từ thủ tục con và 
W=k 
2 
RETURN Trở về từ thủ tục con 2 
SLEEP Nhảy tới chế độ ngủ 1 TO , PD 
SUBLW k W=k-W 1 Z,DC,C 
XORLW k W=W xor k 1 Z 
Skip if 0: Nếu kết quả =0 thì bỏ qua một lệnh ngay sau lệnh này 
 Skip if clear: bit này xoá thi bỏ một lệnh ngay sau lệnh này 
 Skip if set: bit này set thi bỏ một lệnh ngay sau lệnh này 
 Nguyễn Văn Xuân 
 Mail: nvxuan@irfvn.com 

File đính kèm:

  • pdfnghien_cuu_khao_sat_bo_vi_dieu_khien_8_bit_pic16f877.pdf