- Cổng xuất nhập:+ Port A và thanh ghi TRISA: * Cổng A có 6 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISA * Việc đặt 1 bi
Trang 11.1 Tổng quan về PIC
1.2 Vi điều khiển PIC 16f877A
1.3 Ngôn ngữ lập trình ASM
Trang 2Một số đặc tính của PIC:
- Có các cổng xuất nhập (I/O pin)
- Có timer 8/16 bit
- Có các bộ chuyển đổi ADC 10/12 bit
- Có khối tạo xung PWM
- Tất cả các lệnh được thực thi trong 1 chu kỳ máy, trừ lệnh gọi chương trình con là 2 chu kỳ
- Tần số thạch anh tối đa 20MHz Công thức tính chu kỳ máy:
2 PIC 16F877A
Trang 3a Tổng quan:
Trang 4PIC 16F877A có 40 chân với cấu trúc như sau:
- Có 5 port xuất nhập: A, B, C, D, E
- Có 3 Timer
- Có 15 nguồn ngắt
- Có 2 kênh tạo xung PWM
- Có 8 kênh chuyển đổi A/D
4 PIC 16F877A
Trang 5Chức năng của các chân như sau:
- Các chân nguồn:
+ Chân 11 và 32 (chân Vdd): cấp nguồn +5V
+ Chân 12 và 31 (chân Vss): cấp nguồn 0V
Trang 6- Mạch dao động: 2 chân 13 và 14 có nhiệm vụ tạo dao động cho 16F877A
6 PIC 16F877A
Trang 7- Chân reset: chân 1, được tác động mức thấp (ngược với 8051)
Trang 8- Cổng xuất nhập:
+ Port A và thanh ghi TRISA:
* Cổng A có 6 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISA
* Việc đặt 1 bit trong TRISA lên 1 đồng nghĩa với việc đặt chân tương ứng của cổng A là chân nhập
dữ liệu
* Việc đặt 1 bit trong TRISA về 0 đồng nghĩa với việc đặt chân tương ứng của cổng A là chân xuất dữ liệu
8 PIC 16F877A
Trang 9+ Port B và thanh ghi TRISB:
Cổng B có 8 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISB
+ Port C và thanh ghi TRISC:
Cổng C có 8 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISC
Trang 10+ Port D và thanh ghi TRISD:
Cổng D có 8 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISD
+ Port E và thanh ghi TRISE:
Cổng E có 3 bit thực hiện chức năng xuất nhập 2 chiều, việc xác định hướng vào ra được thực hiện thông qua thanh ghi TRISE
10 PIC 16F877A
Trang 12b Tổ chức bộ nhớ
- Bộ nhớ chương trình:
Khi PIC bị reset thì chương trình sẽ được thực hiện từ vùng nhớ 0000H
12 PIC 16F877A
Trang 13Mỗi Bank có 128 byte: các ô địa chỉ thấp là các thanh ghi chức năng đặc biệt, còn lại là các thanh ghi
đa dụng – được xem là bộ nhớ RAM
Trang 1414 PIC 16F877A
Trang 15Thanh ghi W: là thanh ghi công tác (rất quan trọng của PIC), lưu trữ dữ liệu và các kết quả tính toán
Trang 16a Các quy ước:
Một dòng lệnh ASM gồm các thành phần như sau:
[nhãn] LỆNH tham_số_1,tham_số_2
CALL Câu lệnh có thể có hoặc không có nhãn
16 PIC 16F877A
Trang 17- Quy ước các ký hiệu trong tập lệnh
x Không quan tâm là 0 hay 1
d Lựa chọn nơi nhận dữ liệu
- d = 0: lưu kết quả vào thanh ghi W
- d = 1: lưu kết quả vào thanh ghi f Mặc định d = 1
Trang 27- Lệnh: RLF f,d
+ Thực thi: nội dung thanh ghi f được xoay trái 1 bit qua cờ C Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f
+ 0 ≤ f ≤ 127, d = [0,1]
Trang 31- Lệnh: XORWF f,d
+ Thực thi: giá trị trong thanh ghi W được XOR với giá trị trong thanh ghi f Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f
+ 0 ≤ f ≤ 127, d = [0,1]
Trang 32MOVLW 0x8FMOVWF PORTB
loop GOTO loop
END
32 PIC 16F877A
Trang 33Thanh ghi