TRƯỜNG……………………… KHOA…………………… Nghiên cứu khảo sát bộ vi điều 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 nhng 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à I 2 C(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 K Interupt control Bus I / O Ports Serial por t 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 để lu đị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 lu 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à nhng thanh ghi chức năng đặc biệt(Special function registers) ở vùng địa chỉ thấp. Bít RP1(Status <6>) và bit RP0(Status <5>) 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<12:8> 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<4:0> nạp tới PCH, khi thực hiện các lệnh CALL, GOTO 11 bit Ofcode<10:0> và 2 bit PCLATH<4:3> 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<4:3> đó 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 [...]... thái truyền bit 7 CSRC bit lựa chọn clock chỉ dùng trong chế độ đồng bộ 1= Master mode clock từ BRG 0= Slave Mode clock từ bên ngoài bit 6 TX9 cho phép truyền 9 bit 1= truyền 9 bit 0=truyền 8 bit bit 5 TXEN bit cho phep truyền 1= cho phép truyền 0=không cho phép truyền bit 4 SYNC lựa chọn mode USART Copyright (c) IRF Group bit 3 bit 2 bit 1 bit 0 1= đồng bộ 0= không đồng bộ không sử dụng bit lựa chọn... 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... tiếp tục nhận đến khi bit CREN xoá 0= không cho phép tiếp tục nhận bit 3 ADDEN Cho phép đánh địa chỉ dùng trong chế độ không đồng bộ truyền 9bit 1=Cho phép đánh địa chỉ, bit RSR là set cho phép ngắt nạp dữ liệu vào đệm 0=nhận bình thờng bit 2 FERR bit lỗi khung truyền 1= co lỗi Copyright (c) IRF Group 0= không lỗi bit 1 OERR bit lỗi tràn 1= có lỗi tràn 0=không lỗi tràn bit 0 RX9D bit thứ đợc đa vào... TX9D Dữ liệu bit thứ 9 truyền đi *Thanh ghi điều khiển và trạng thái nhận bit 7 SPEN cho phép công truyền nối tiếp 1= cho phép hoạt động 0=không cho phép bit 6 RX9 cho phép nhận bit thứ 9 1= nhận 9 bit 0= nhận 8 bit bit 5 SREN Cho phép nhận riêng rẽ Chế độ không đồng bộ và chế độ đồng bộ phụ bit này không sử dụng Chế độ đồng bộ chủ 0= không cho nhận riêng rẽ 1= cho phép nhận riêng rẽ bit 4 CREN cho... tới vi c phân chia kết nối các thiết bị ngoại vi cho vi c set chính xác các bit TRIS Sơ đồ khối chân RC RC< 5: 7 > và chân RC < 3: 4> cổng C Copyright (c) IRF Group 2.4.4 Cổng D và thanh ghi TRISD Cổng D có 8 bít có bộ đệm đầu vào Schmitt Trigger Mỗi chân đợc sắp xếp riêng lẻ nh đầu vào hoặc đầu ra Cổng D cũng có thể đợc sắp xếp nh là một cổng vi xử lý 8 bit (cổng phụ song song) bằng vi c... 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ả lu trong f +d=0 lu trong W b: chỉ ra bit thứ b trong f,... ngoài khi TMR1CS=0 bit này không có tác dụng bit 1 TMR1CS bit lựa chọn nguồn xung clock vào TMR1CS=1 clock từ chân RC0/T1OSO/T1CKI(sờn lên) TMR1CS=0 clock trong Fosc/4 Bit 0 bit bật tắt Timer 1= Timer 1 enable 0=Timer 1 Disable 2.5.3 Bộ Timer 2 Bộ Timer2 có những đặc tính sau đây ; + 8 bít cho bộ định thời ( thanh ghi TMR2 ) + 8 bít vòng lặp ( thanh ghi PR2 ) + Có khả năng đọc và vi t ở cả hai thanh... lại nh trên Để vi c truyền 9 bít dữ liệu đI thì bít truyền TX9 của thanh ghi TXSTA phải đợc đặt và bít thứ 9 truyền đi đợc vi t tới bít TX9D Bít thứ 9 này phải đợc vi t trớc, trớc khi chuyển 8 bít dữ liệu tới thanh ghi TXREG Bởi vì dữ liệu vi t tới thanh ghi ngay lập tức đợc chuyển tới thanh ghi TSR *Vi c nhận dữ liệu ở chế dộ dị bộ Trong chế độ dị bộ, vi c nhận dữ liệu đợc kích hoạt bằng vi c đặt bít... 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...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ộ . Nghiên cứu khảo sát bộ vi điều 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. các bộ vi xử lý công dụng chung nh họ Intel x86 (80 86, 80 286 , 80 386 , 80 486 và Pentium) hoặc họ Motorola 680 x0( 680 0, 680 10, 680 20, 680 30, 680 40 vv ) không có RAM, ROM và không có các cổng ra. 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