Giới Thiệu PIC16F887 Xuất Nhập Port

23 592 0
Giới Thiệu PIC16F887 Xuất Nhập Port

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 1: Giới thiệu PIC16F887 Xuất nhập Port Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 - Vi điều khiển 8-bit Microchip, thuộc dòng Low-power - Kiến trúc Harvard (vs Von Neumann), tập lệnh RISC (Reduced Instructions Set Computer) (vs Complexed Instructions Set Computer) - Thạch anh gắn tối đa 20MHz - Tầm điện áp hoạt động 2.0V- 5.5V - port, 35 chân xuất nhập (I/O pins) - Có đầy đủ chức cần thiết Vi điều khiển 8-bit: Timer (3 bộ), ADC (14 kênh ADC 10-bit), USART, SPI, I2C, PWM, Compare, …  lựa chọn để bắt đầu Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 CONG NAP VC C TM (In-Circuit Serial Programming TM M C LR ): Câu lạc Nghiên cứu khoa học PG D PG C C _PG C LO AD G AT E Cổng nạp chuẩn ICSP PG C J_LO AD 47p 04/06/2010 Giới thiệu PIC16F887 VC C Các nguồn xung nhịp cho chip: MAIN MCU PIC16F887 R _R S 10K SW _R S J_PA PO R T A - Bộ dao động RC nội (RC internal oscillator) - Bộ dao động tạo thạch anh (và tụ) gắn VC C VC C Câu lạc Nghiên cứu khoa học SC L SD A TX R X 16 17 18 23 24 25 26 13 22p 4M hz XTA L C _X2 - Bộ RC gắn - Xung clock từ nguồn khác SC K SD I SD O C _X1 0 A A A A A A /A N /A N /A N /V R E F -/C V R E F /A N /V R E F + /T C K I/C O U T /A N /S S * /C O U T R R R R R R R C C C C C C C /T O S I/C C P 2 /C C P /S C K /S C L /S D I/S D A /S D O /T X /C K /R X /D T J_PB J_PD 9 10 3 3 3 3 4 2 2 2 PG C PG D 14 22p 12 31 R R R R R R R D D D D D D D /P /P /P /P /P /P /P S S S S S S S P P P P P P P J_PE O S C /C L K IN R E /R D * /A N R E /W R * /A N R E /C S * /A N O S C /C L K O U T VSS VSS PO R T E C _3231 104 R R R R R R R B /IN T R B1 R B2 R B /P G M R B4 R B5 R B /P G C R B /P G D (External Crystal and Ceramic 15 19 R C /T1 O S O /T C K I R D /P S P J_PC PO R T C Oscillator) SS* M C L R */V P P PO R T D C _1112 104 PO R T B SW R ESET PVN M C LR VC C VD D VD D 11 32 P IC F 8 04/06/2010 Giới thiệu PIC16F887 port xuất nhập (I/O Port) VC C MAIN MCU PIC16F887 R _R S 10K SW _R S PVN 1 SS* J_PA PO R T A SW R ESET VC C PO R T C J_PC VC C SC L SD A TX R X C _X1 13 22p 4M hz XTA L C _X2 14 22p 12 31 A A A A A A /A N /A N /A N /V R E F -/C V R E F /A N /V R E F + /T C K I/C O U T /A N /S S */C O U T R R R R R R R R C C C C C C C C /T1 O S O /T C K I /T O S I/C C P /C C P /S C K /S C L /S D I/S D A /S D O /T X /C K /R X/D T R R R R R R R R D D D D D D D D /P /P /P /P /P /P /P /P S S S S S S S S P P P P P P P P 7 J_PB 9 J_PD 10 3 3 3 3 4 2 2 2 PG C PG D J_PE O S C /C L K IN R E /R D * /A N R E /W R * /A N R E /C S * /A N O S C /C L K O U T VSS VSS PO R T E C _3231 104 SC K SD I SD O 1 1 2 2 R R R R R R R B /IN T R B1 R B2 R B /P G M R B4 R B5 R B /P G C R B /P G D PO R T D C _1112 104 M C L R */V P P PO R T B M C LR VC C VD D VD D 11 32 P IC F 8 Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 Thanh ghi PORTX TRISX (X: A, B, C, D, E) Thanh ghi TRISX ghi quy định hướng PortX BIT … TRISA7=0: Pin A7 có chức Output =1: Pin A7 có chức Intput register TRISA = 0x00 TRISA = 0xFF Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 Thanh ghi PORTX TRISX (X: A, B, C, D, E) Thanh ghi PORTX ghi quy định trạng thái logic PortX BIT … RA7 =0: Pin A7 có mức logic “0” =1: Pin A7 có mức logic “1” register PORTA= 0x00 PORTA= 0xFF Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 Thanh ghi ANSEL ANSELH PIC16F887 có 13 kênh ADC dùng chung với chân I/O ghi ANSEL ANSELH quy định chân chân tín hiệu analog hay digital Bit: ANSx = : Pin ANx pin Digital ANSx = : Pin ANx pin Analog Register: ANSEL = //AN0-7 digital ANSELH = // AN8-13 digital Câu lạc Nghiên cứu khoa học 04/06/2010 Giới thiệu PIC16F887 Thanh ghi ANSEL ANSELH Câu lạc Nghiên cứu khoa học 04/06/2010 Tóm tắt Để thực xuất / nhập chân (Pin): - Cài đặt giá trị cho ghi TRISx (hoặc bit TRISx-n) - Đặt kiểu tín hiệu pin Analog hay Digital qua ghi ANSEL ANSELH - Xuất tín hiệu cách ghi giá trị “0” “1” vào port tương ứng (bit: Rx-n hay port: PORTx) - Đọc giá trị chân cách đọc mức logic port tương ứng Câu lạc Nghiên cứu khoa học 04/06/2010 Cách viết chương trình C với HiTech PIC #include CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config Word CONFIG(BORV21); //2st config Word #define _XTAL_FREQ 4000000 //tần số thạch anh 4Mhz #define HANG_SO 123 //Khai báo biến toàn cục int a,b=1,c=3; char bien_char; Câu lạc Nghiên cứu khoa học 04/06/2010 Cách viết chương trình C với HiTech PIC //Khai báo chương trình void init_port(void) { //chương trình } char tinh_toan(char a, int b) { //……… } /* chương trình viết sau hàm main(), trước main() phải có khai báo void init_port(void); char tinh_toan(char a, int b); */ Câu lạc Nghiên cứu khoa học 04/06/2010 Cách viết chương trình C với HiTech PIC //Chương trình void main(void) { // Phần khởi tạo //vòng lặp vô tận while(1) { //thực lệnh }; } Câu lạc Nghiên cứu khoa học 04/06/2010 Ví dụ #include CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config Word CONFIG(BORV21); //2st config Word #define _XTAL_FREQ 4000000 //tần số thạch anh 4Mhz // khai báo tần số thạch anh dùng cho lệnh delay Câu lạc Nghiên cứu khoa học 04/06/2010 Ví dụ //Chương trình void main(void) { ANSEL=0; ANSELH=0; //Tất port digital TRISB=0x00; //8 pins PortB output PORTB=0xFF; //Xuất mức “1” while(1) { PORTB=0x00; delay_ms(150); PORTB=0xFF; delay_ms(150); }; } Câu lạc Nghiên cứu khoa học 04/06/2010 Giải thích Với đoạn chương trình trên, quan tâm tới vấn đề sau: Để viết code với HiTech Pic phải #include file htc.h PIC16F887 có từ (word) configuration, để chip hoạt động bạn phải cấu hình (configure) cho Mỗi bit word config đại diện cụm chữ in hoa Bạn cần quan tâm tới bit config đầu tiên: cấu hình nguồn xung nhịp (clock) cho chip - XT: External Crystal – dùng dao động thạch anh gắn với tần số thạch anh từ 4Mhz trở xuống HS: High Speed: dùng dao động thạch anh gắn với tần số thạch anh 4Mhz (tới 20Mhz) INTIO: Dùng dao động RC nội Và loại nguồn xung nhịp khác kí hiệu chữ khác ta dùng Câu lạc Nghiên cứu khoa học 04/06/2010 Giải thích Trong ví dụ trên, ta dùng thạch anh 4Mhz gắn nên bit config ta ghi XT Tương tự: CONFIG(HS & … // dùng thạch anh có tần số 8Mhz CONFIG(INTIO & … // dùng dao động RC nội (Lưu ý: Trước CONFIG bắt đầu dấu gạch “_”, bit config lại bạn giữ nguyên, từ config phải viết dòng khác nhau, không gộp chung được) Định nghĩa tần số thạch anh: #define _XTAL_FREQ 4000000 - Không có dấu “;” sau hàng định nghĩa số Trong ví dụ thạch anh có giá trị 4Mhz ta ghi 4000000 (4 triệu), dùng thạch anh 20Mhz ghi giá trị tần số thạch anh 20000000 (20 triệu) -_XTAL_FREQ bắt đầu dấu gạch bạn không phép thay đổi tên số Câu lạc Nghiên cứu khoa học 04/06/2010 Giải thích Chương trình Ví dụ ta kết nối portB với Led đơn, sơ đồ led sau: Theo cách mắc mạch trên, chân VĐK xuất mức “1” Led tắt, xuất mức “0” Led sáng Như hàm main(), làm việc: - LED MODULE VC C R _L1 1k LED R _L2 1k LED R _L3 1k LED R _L4 1k LED R _L5 1k LED R _L6 1k LED R _L7 1k LED R _L8 1k LED 8 LED _BU S1 LED_BUS port dùng để nối vào chân VĐK Ở phần khởi tạo, quy định chân digital, khởi tạo portB output để xuất Led, sau xuất mức tất chân portB: 0b11111111 = 0xFF để tắt hết Led - Trong vòng lặp while thực bật led thời gian 150ms, tắt 150ms Thời gian delay thời gian mắt kịp nhìn thấy thay đổi led Câu lạc Nghiên cứu khoa học 04/06/2010 Giải thích Hàm delay delay_ms(n); delay_us(n); Được tạo cách lặp nhiều lần lệnh “NOP” – không làm Số n tối đa khoảng 190, bạn muốn delay nhiều 190ms bạn gọi hàm nhiều lần, dùng vòng lặp để gọi Ví dụ delay 1s: for(char i=0;i

Ngày đăng: 15/12/2016, 16:51

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan