Tìm hiều chung về PIC (Pic16f877a)
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
BÁO CÁO ĐỒ ÁN I
Tìm hiều chung về PIC
(Pic16f877a) (Tuần 30)
Giáo viên hướng dẫn : TS Cung Thành Long Sinh viên thực hiện : Vũ Văn Đại (nhóm trưởng) - 20101333
Lương Hữu Long - 20101800 Nguyễn Văn Phong - 20101984 Nguyễn Bảo việt - 20102781
1
Hà Nội, 3/2013
Trang 2ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trong đó, PIC16F877 thuộc về một họ của microcontrollers 8- bít của kiến trúc RISC
Trang 3ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
3
MỤC LỤC
I kiến trúc chung của PIC 3
II Các cổng ra vào của PIC 16F877A.
Trang 4ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
4
I kiến trúc chung của PIC
Tổ chức của PIC được thiết kế theo kiến trúc Havard còn được gọi là vi điều khiển RISC ( reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn
Trang 5ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
5
II Các cổng ra vào của PIC 16F877A.
Trang 6ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 7ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
7
II Các cổng ra vào của PIC 16F877A.
2 PORT B.
PORT B (RPB) gồm 8 I/O pin Thanh ghi điều khiển xuất nhập tương ứng là TRISB
PORT B còn được sử dụng trong quá trình nạp quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORT B còn liên quan đến ngắt ngoại
vi và bộ Timer0 PORT B còn được tích hợp chức năng điện trờ kéo lên được điều khiển bởi chương trình
Trang 8ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
8
II Các cổng ra vào của PIC 16F877A.
3 PORT C.
PORT C (RPC) gồm 8 I/O pin Thanh ghi điều khiển xuất nhập tương ứng là TRISC
PORT C chứa các chân chắc năng của :
Trang 9ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
9
II Các cổng ra vào của PIC 16F877A.
4 PORT D.
PORT D (RPD) gồm 8 chân I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISD
PORT D là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel slave Port)
Trang 10ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 11ĐẠI HỌC BÁCH KHOA HÀ NỘI
+ 8 bit
+ Có khả năng đọc và viết
+ Có thể dung đòng hồ trong hoặc ngoài
+ Có thể chọn cạnh xung của xung đồng hồ
+ Có hệ số chia cho xung đầu vào và có thể lập trình lại bằng phần mềm.+ Ngắt tràn
Trang 12ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
12
III TIMER 1.Timer 0 Hoạt động của timer 0:
Bit 5: TOCS :lựa chọn nguồn clock 1=Clock ngoài từ chân TOCKI 0=Clock trong Focs/4
Bit 4: TOSE :lựa chọn sườn sung cloxk 1=Timer 0 khi chân Tock từ cao xuống thấp 0=Timer 0 khi chân Tock từ thấp lên caoBit 3: PSA bít gắn bộ chia xung đầu vào
1=gán bộ chia Prescaler cho WDT 0=gán bộ chia cho Timer 0
RBP0 INTEDG TOCS TOSE PSA PS2 PS1 PS0
Trang 13ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
13
III TIMER 1.Timer 0
Bit2:0 PS2:PS1 lựa chọn hệ số chia xung vào theo bảng sau
Ngắt trong Timer 0 :Ngắt trong Timer 0 xảy ra khi thanh ghi TMR0 bị tràn tức
là từ FFh quay về 00h Khi đó bit TOIF của thanh ghi INTCON<2> sẽ được đặt Bít này phải được xóa bằng phần mềm nếu cho phép ngắt bít TOIE của thanh ghi INTCON<5> được set Timer ) bị dừng hoạt động ở chế độ SLEEP ngắt Timer 0 không đánh thức được bộ vi xử lí ở chế độ SLEEP
Trang 14ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
14
III TIMER
2 Timer 1
Timer 1 có thể là bộ đếm hoặc là bộ định thời:
+ 16bit :gồm 2 thanh ghi TMR1H ,TMR1H+ Có khả năng đọc và viết
+ Có thể chọ xung đồng hồ trong hoặc ngoài+ Có thể ngắt khi tràn
Timer 1 có 1 thanh ghi điều khiển là T1CON Bộ Timer 1 có hoạt động hay không là do việc đặt hay xóa bít TMR1ON(T1CON<0>)
Thanh ghi T1CON
U-O U-O R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
Trang 15ĐẠI HỌC BÁCH KHOA HÀ NỘI
1:1 1:2
0=có đồng bộ clock ngoài Bit 1: TMR1CS: lựa chọn nguồn xung clock vào 1=clock từ chân RCO/T1OSO/T1CKI (sườn lên) 0=clock trong Fosc/4
Bit 0: bật tắt Timer 1= enable 0= disable
Trang 16ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
16
III TIMER
2 Timer 1
Trang 17ĐẠI HỌC BÁCH KHOA HÀ NỘI
CS (T1CON<1>)
+ Chế độ bộ định thời: đầu vào là clock trong Fosc/4, bit đồng bộ T1SYNC(T1CON<2>) không có tác dụng vì xung trong clock luôn đồng bộ
+ Chế độ bộ đếm đồng bộ: xung vào xóa bit T1SYNC(T1CON<2>): tăng mỗi khi sườn lên ở chân RCO hoặc RC1 nếu bit T1OSCEN xóa và xung vào đồng bộ với clock trong, bộ đếm không tăng trong trạng thái sleep
Trang 18ĐẠI HỌC BÁCH KHOA HÀ NỘI
- Dao động trong Timer 1: mạch dao động được xây dựng giữa 2 chân T1OSI và T1OSO Khi mạch được cung cấp với công suất thấp thì tần số cực đại sẽ là 200kHz và trong chế độ SLEEP là 32kHz
- Ngắt trong Timer 1: Cặp thanh ghi TMR1H và TMR1L tăng từ giá trị 0000h đến FFFFh, nếu tiếp tục tăng thì sẽ tràn và quay lại 0000h Và ngắt xuất hiện khi tràn quá giá trị FFFFh, lúc này cờ ngắt TMR1IF sẽ được đặt Ngắt có thể hoạt động hoặc không hoạt động nhờ việc đặt hoặc xoa bit TMR11E
Trang 19ĐẠI HỌC BÁCH KHOA HÀ NỘI
Chế độ SSP dung đầu ra của TMR2 để tạo xung clock Timer 2 có thanh ghi điều khiển là T2CON Timer 2 có thể tắt bằng việc xóa bit TMR2CON của thanh ghi T2CON
Thanh ghi T2CON
U-O R/W-O R/W-O R/W-O R/W-O R/W-O R/W-O R/W-O - TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
Trang 20ĐẠI HỌC BÁCH KHOA HÀ NỘI
0001=1:2 0010=1:3 ….
1111=1:16 Bit 2 TMR2ON bit bật tắt hoạt động Timer 2 1=enable
0=disable Bit 1-0 T2CKPS1 : T2CKPS0 chọ hệ chia đầu vào
00 = 1:1
01 = 1:4 1x = 1:16
Trang 21ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
21
III TIMER
3 Timer 2
Trang 22ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
22
III TIMER
3 Timer 2
+ Hoạt động của Timer 2: chủ yếu ở phần điều chế xung của bộ CCp, thanh ghi
TMR2 có hkar năng đọc và viết, nó có thể xóa bằng việc reset lại thiết bị Đầu vào của xung có thể chọ các tỉ lệ sau 1:1, 1:2, 1:16 việc chọn các tỉ lệ điều khiển bởi bít T2CKPS1 và T2CKPS2
+ Ngắt của Timer 2: Bộ Timer 2 có thanh ghi 8 bit PR2 Timer 2 tăng từ 00h đến
khớp với PR2 thì sẽ seset lại giá trị 00h và lệnh kế tiếp thực hiện Thanh ghi PR2 bắt đầu từ giá trị đầu ra của TMR2 là đường dẫ truyền thông của cổng đồng bộ, nó được dung để phát các xung đồng bộ
Trang 23ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
23
IV Các nguồn ngắt trong PIC:
IE :là cho phép kích hoạt một loại ngắt nào đó xảy ra hay không
IF :là các cờ ngắt
Trang 24ĐẠI HỌC BÁCH KHOA HÀ NỘI
Các ngắt ngoại vi hoạt động, trước tiên chúng ta phải cho phép ngắt ngoại
vi, tức là bật bit PIElên Còn cụ thể muốn cho ngắt ngoại vi nào hoạt động, thì chúng ta bật ngắt
đó lên Trên sơ đồcác bạn cũng thấy rõ thông qua các cổng AND và OR
+ Ngắt phổ thông : Khi muốn dùng các nguồn ngắt phổ thông, chúng ta chỉ việc bật các bit IE của nguồn ngắt này Tất nhiên, cuối cùng, chúng ta phải bật ngắt toàn cục GIE thì ngắt mới được phép xảy ra (kể
cả ngắt ngoại vi và ngắt phổ thông Khi đó, PIE được coi là một nguồn ngắt phổ thông
Trang 25ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
25
IV Các nguồn ngắt trong PIC:
2 Vector ngắt
+ Vectơ ngắt của PIC nằm ở vị trí 0x0004h
+ Sau khi thực hiện ngắt xong thì chương trình sẽ trở về trạng thái trước khi ngắt và tiếp tục công việc
Trang 26ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
26
V TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
CHƯƠNG TRÌNH SOẠN THẢO BẰNG ASSEMBLY
A Tổng quan
PIC là vi điều khiển có tập lệnh rút gọn RISC ( Reduced Instuction Set
Computer), gồm 35 lệnh và chia thành 3 nhóm:
- Nhóm lệnh thao tác trên bit
Đố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ả đcược đưa vào thanh ghi được mô tả bởi tham số f
- Nhóm lệnh thao tác trên byte
Đối với nhóm lênh thao tác trên bit, ta có hai tham số b (xác định bit nào cần thao tác) và f (xác định địa chỉ byte dữ liệu cần thao tác)
- Nhóm lệnh điều khiển
Đố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 đó)
Trang 27ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
V TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
CHƯƠNG TRÌNH SOẠN THẢO BẰNG ASSEMBLY
Trang 28ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
V TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
CHƯƠNG TRÌNH SOẠN THẢO BẰNG ASSEMBLY
Trang 29ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
THE END THANKS FOR YOUR LISTEN