1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

36 306 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 458,25 KB

Nội dung

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.. ROM 4 K Interupt control Bus I / O Por

Trang 1

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à:

Trang 2

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

+ 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)

Trang 3

+ 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

Trang 4

Sơ đồ các chân PIC16F87X

Trang 5

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:

• 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

Trang 6

• 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ỉ

ROM

4 K Interupt

control

Bus I / O Ports

Serial port

Timer 0 Timer 1

Timer 0

Serial Ports

P0 P2 P1 P3 TxD RxD GND

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:

Bộ định thời Các chân vào ra Cổng nối tiếp Nguồn ngắt

đ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

Trang 7

xung dao động, vi điều khiển PIC16F877 có khả năng tự Reset bằng bộ WDT, và

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

Trang 8

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 <6>) và bit RP0(Status

<5>) dùng để lụa chọn bank làm việc

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ị

Trang 9

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

Trang 10

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 2k<0->211-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<4:3> 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

Trang 11

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

* 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<7> 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

Trang 12

LOOP

INCF FSR, F CLRF INDF MOVF FSR, W XORLW 0XFF BTFSS STATUS, ZR

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:

Bộ nhớ dữ liệu EEPROM được xếp vào loại cao cho các chu trình xoá/ghi Thời gian được điều khiển bởi một bộ định thời trên chip Thời gian ghi sẽ thay

đổi cùng với điện thế và nhiệt độ

Bộ nhớ chương trình cho phép đọc và ghi các kí tự Khi tác động đến khối chương trình nhớ, các thanh ghi EEDATH, EEDATA có dạng 2 byte kí tự giữ 14 bit dữ liệu để đọc/ghi và các thanh ghi EEADRH, EEADR có dạng hai bit từ mã với 13 bit địa chỉ của vị trí EEPROM được truy cập Những thiết bị này có thể có tới 8K từ mã của chương trình EEPROM với một địa chỉ giới hạn từ 0h tới 3FFh

* Thanh ghi EEADR

Thanh ghi địa chỉ có thể đánh địa chỉ lớn nhất là 256 Byte của dữ liệu EEPROM hoặc lớn nhất là 8K kí tự của chương trình FLASH Khi lựa chọn giá trị một địa chỉ chương trình, byte MS của địa chỉ sẽ được ghi vào thanh ghi EEADRH và byte LS được ghi vào thanh ghi EEADR Khi lựa chọn một giá trị

địa chỉ dữ liệu, chỉ có byte LS của địa chỉ được ghi tới thanh ghi EEADR

* Các thanh ghi EECON1 và EECON2

EECON1 là thanh ghi điều khển cho việc nhập dữ liệu bộ nhớ

EECON2 không phảI là thanh ghi vật lý Khi đọc thanh ghi EECON2 sẽ

đọc toàn bộ là 0 Thanh ghi EECON2 đựơc sử dụng dành riêng cho việc ghi một cách trình tự vào bộ nhớ

Trang 13

Bit điều khiển EEPGD xác định nếu việc nhập dữ liệu sẽ là nhập một chương trình hoặc nhập một bộ nhớ dữ liệu Khi xoá, một số hoạt động tiếp theo

sẽ hoạt động trên bộ nhớ dữ liệu Khi set, một số hoạt động tiếp theo sẽ hoạt

động trên bộ nhớ chương trình

Các bit điều khiển RD và WR kích hoạt các hoạt động đọc và ghi theo thứ

tự Trong phần mềm những bit này không thể bị xoá, chỉ được set Chúng bị xoá trong phần cứng khi mà các hoạt động đọc hoặc ghi hoàn thành Việc không thể xoá bit WR trong phần mềm ngăn ngừa sự kết thúc bất ngờ hoặc kết thúc sớm của một hoạt động ghi

2.3.6 Đọc bộ nhớ dữ liệu EEPROM

Để đọc một vị trí bộ nhớ dữ liệu, ta phải ghi địa chỉ vào thanh ghi EEADR, xoá bit điều khiển EEPGD (EECON1<7>) sau đó set bit điều khiển RD (EECON1<0>) Dữ liệu vẫn tồn tại trên nhiều lệnh tiếp theo ở trên thanh ghi EEDATA, do đó nó có thể được đọc bởi lệnh tiếp theo EEDATA sẽ giữ giá trị này cho tới khi có hoạt động đọc dữ liệu khác hoặc là tới khi được ghi

Ví dụ: Đọc dữ liệu EEPROM

BCF EECON1, EEPGD ; Chuyển tới bộ nhớ dữ liệu

BSF EECON1, RD ; bắt đầu hoạt động đọc

BCF STATUS, RP0 ; Dãy 2

MOVF EEDATA, W ; W = EEDATA

2.3.7 Ghi vào bộ nhớ dữ liệu EEPROM

Để ghi vào bộ nhớ EEPROM thì đầu tiên địa chỉ phải được ghi vào thanh ghi EEADR và dữ liệu ghi vào thanh ghi EEDATA, và trình tự được tiến hành như ở ví dụ sau:

Ví dụ: Ghi dữ liệu EEPROM

BSF STATUS, RP1 ;

BSF STATUS, RP0 ; Dãy 3

BTFSC EECON1, WR ; Đợi cho

GOTO $-1 ; việc ghi kết thúc

BCF STATUS, RP0 ; Dãy 2

MOVF ADDR, W ; Địa chỉ

MOVWF EEADR ; ghi vào EEADR

MOVF VALUE, W ; dữ liệu

MOVWF EEDATA ; ghi vào EEDATA

BSF STATUS, RP0 ; Dãy 3

BCF EECON1, EEPGD ; Con trỏ tới bộ nhớ dữ liệu

Trang 14

BSF EECON1, WREN ; Cho phép ghi chỉ khi các ngắt không cho phép BCF INTCON, GIE ;

MOVLW 0x55 ; ghi 55h tới

MOVWF EECON2 ; EECON2

MOVLW 0xAA ; ghi AAh tới

MOVWF EECON2 ; EECON2

BSF EECON1, WR ; Bắt đầu hoạt động ghi chỉ khi các ngắt cho phép BSF INTCON, GIE ; Nếu dùng các ngắt otherwise discard

BCF ECON1,WREN ; không thể ghi

2.3.8 Đọc chương trình FLASH

Đọc một vị trí bộ nhớ chương trình có thể được thực hiện bởi việc ghi 2 byte

địa chỉ vào các thanh ghi EEADR và EEADRH, set bit điều khiển EEPGD (EECON1<7>) và sau đó set bit điều khiển RD (EECON1<0>) Chỉ khi bit điều khiển đọc được set, vi xử lý sẽ sử dụng chu trình lệnh thứ hai để đọc dữ liệu Dữ liệu sẽ có trong chu trình thứ 3, trong thanh ghi EEDATA và EEDATH,

do đó nó có thể đượ đọc là hai byte trong các lệnh tiếp theo Dữ liệu có thể được

đưa ra ngoài của EEDATH:EEDATA bắt đầu với lệnh thứ 3 sau lệnh BSF EECON1, RD Và hai thanh ghi EEDATA và EEDATH sẽ giữ giá trị này cho tới khi có hoạt động đọc một giá trị khác hoặc có hoạt động ghi

Ví dụ:

BSF STATUS, RP1 ;

BCF STATUS, RP0 ; Bank 2

MOVF ADDRL, W ; Write the

MOVWF EEADR ; address bytes

MOVF ADDRH,W ;for the desired

MOVWF EEADRH ; address to read

BSF STATUS, RP0 ; Bank 3

BSF EECON1, EEPGD ;Point to Program memory

BSF EECON1, RD ;Start read operation

NOP ;Required two NOPs

2.3.9 Ghi tới FLASH

ghi một vị trí bộ nhớ chương trình có thể được thực hiện bởi việc ghi 2 byte

địa chỉ vào các thanh ghi EEADR và EEADRH, ghi dữ liệu 13 bit vào 2 thanh ghi EEDATA và EEDATH theo ví dụ sau

Trang 15

BSF EECON1, EEPGD ;Point to Program memory

BSF EECON1, WREN ;enable write operation

BCF INTCON,GIE ; cấm ngắt nếu ngăt cho phép

MOVLW 0x55 ; ghi 55h tới

MOVWF EECON2 ; EECON2

MOVLW 0xAA ; ghi AAh tới

MOVWF EECON2 ; EECON2

NOP

NOP

BCF EECON1, WREN ;disable write operation

BSF INTCON,GIE ; ngắt hoạt nếu ngăt cho phép

2.4 Cổng vào ra

Một số chân của các cổng vào/ra được tích hợp với một số hàm có thể thay

đổi để phù hợp với những thiết bị ngoại vi Nhìn chung khi thíêt bị ngoại vi hoạt

động, các chân có thể không sử dụng với mục đích làm chân vào ra

2.4.1 Cổng A và thanh ghi TRISA

Cổng A là cổng hai chiều với độ rộng đường truyền là 6 bit Để điều khiển việc truy xuất dữ liệu người ta dùng thanh ghi TRISA Nếu đặt bít TRISA = 1 thì lúc này cổng A sẽ tương ứng có các chân là chân vào Nếu xoá bít TRISA = 0 thì lúc này cổng A sẽ tương ứng có các chân là chân ra Việc đọc cổng A chính là

đọc trạng thái của các chân, trong khi đó việc viết phải qua việc viết các chốt của cổng Các chân của cổng A chủ yếu được sử dụng với mục đích chính là nhận tín hiệu tương tự hoặc làm các chân vào ra Riêng chân RA4 có thể đa hợp với chân vào bộ Timer 0 và khi đó nó trở thành chân RA4/T0CKI Chân này như một đầu vào của Schmitt Trigger và nó mở đầu ra Các chân khác của cổng A là chân vào với bộ TTL Việc điều khiển các chân này thông qua việc đặt hay xoá các bít của thanh ghi ADCON1 Thang ghi TRISA điều khiển trực tiếp các chân của cổng A,

Trang 16

khi sử dụng các chân này để nhận tín hiệu tương tự vào ta phải chắc chắn rằng các bít của thanh ghi TRISA đã được đặt rồi

Sơ đồ khối chân RA3:RA0 và chân RA5 và của chân RA4/TOCKI của cổng A

2.4.2 Cổng B và thanh ghi TRISB

Cổng B là cổng hai chiều với độ rộng đường truyền là 8 bit.Tương ứng với

nó để điều khiển trực tiếp dữ liệu ta sử dụng thanh ghi TRISB Nếu đặt bít TRISB

= 1 thì lúc này các chân của cổng B được định nghĩa là chân vào Nếu xoá bít TRISB = 0 thì lúc này các chân của cổng B được định nghĩa là chân ra Nội dung của chốt ra có thể chọn trên mỗi chân

Có 3 chân của cổng B có thể đa hợp với các chương trình vận hành bằng

điện áp thấp Đó là các chân sau: RB3/PGM, RB6/PGC, RB7/PGD Sự thay đổi hoạt động của những chân này được miêu tả ở trong phần đặc tính nổi bật Mỗi chân của cổng B có một khả năng dừng bên trong nhưng yếu Điều này được trình bày bởi việc xoá bít RBPU (bít 7 của thanh ghi OPTION_REG) Khả năng dừng này sẽ tự động tắt đi khi các chân của cổng được định nghĩa là chân ra Khả năng dừng này sẽ tự động mất đi khi ta RESET Bốn chân của cổng B, từ RB7 đến RB4 có đặc tính là ngắt khi thay đổi trạng thái Chỉ những chân được

định dạng là những chân vào thì ngắt này mới tồn tại Một vài chân RB7:RB4

được định dạng như chân ra no thi hành ngắt trên sự thay đổi so sánh Chân vào RB7:RB4 được so sánh với giá trị cũ của chốt ở lần đọc cuối cùng của cổng B

Trang 17

2.4.3 Cổng C và thanh ghi TRISC

Cổng C là cổng hai chiều với độ rộng đường truyền là 8 bit Tương ứng với

việc điều khiển nó là thanh ghi TRISC Nếu đặt bít TRISC = 1 thì tương ứng với

chân của cổng C là chân vào Nếu ta xoá bít TRISC = 0 thì tương ứng với nó

chân của cổng C là chân ra Đặt nội dung của chốt ra có thể đặt trên chân chọn

Cổng C đa hợp với việc vận hành thiết bi ngoại vi Chân của cổng C thông qua

bộ đệm Schmitt Trigger đầu vào

Khi chế độ I2C hoạt động, thì các chân cổng PORTC<4:3> có thể được sắp

xếp với mức I2C thường hoặc với mức SMBUS bằng cách sử dụng bit CKE

(SSPSTAT<6>) là bít 6 của thanh ghi SSPSTAT

Khi vận hành các thiết bị ngoại vi bằng việc xác định bít TRIS của mỗi chân

cổng C Một số phần phụ có thể ghi đè lên bít TRISC làm cho chân này trở thành

chân ra, trong khi đó thì một số phần phụ khác lại ghi đè lên bít TRIS làm cho

chân này trở thành chân vào Từ khi những bit TRIS ghi đè thì trong việc tác

động trong các thiết bị ngoại vi là có thể, những lệnh đọc-sửa- ghi (BSF, BCF,

XORWF) với thanh ghi TRISC như là nơi gửi tới sẽ được tránh Người sử dụng

nên đề cập 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 <0 : 2 > RC< 5: 7 > và chân RC < 3: 4> cổng C

Trang 18

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 đặt bít điều khiển

PSPMODE(TRISE<4>) và trong chế độ này vùng đệm đầu vào là TTL

Sơ đồ khối cổng D

Ngày đăng: 02/04/2014, 17:20

HÌNH ẢNH LIÊN QUAN

Sơ đồ các chân  PIC16F87X. - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ c ác chân PIC16F87X (Trang 4)
Sơ đồ khối bộ vi điều khiển PIC16F87X - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối bộ vi điều khiển PIC16F87X (Trang 5)
Sơ đồ khối của VĐK 8051: - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối của VĐK 8051: (Trang 6)
Hình ảnh các bank nh− sau: - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
nh ảnh các bank nh− sau: (Trang 8)
Sơ đồ khối  chân RA3:RA0 và chân RA5 và của chân RA4/TOCKI của cổng A - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối chân RA3:RA0 và chân RA5 và của chân RA4/TOCKI của cổng A (Trang 16)
Sơ đồ khối của chân RB3 Đến RB0 , chân RB7 : RB4 của Cổng B - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối của chân RB3 Đến RB0 , chân RB7 : RB4 của Cổng B (Trang 17)
Sơ đồ khối cổng D - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối cổng D (Trang 18)
Sơ đồ khối của cổng E : - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối của cổng E : (Trang 19)
Sơ đồ khối của Timer0 và WDT: - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Sơ đồ kh ối của Timer0 và WDT: (Trang 21)
Bảng tập lệnh PIC16F877. - Nghiên cứu khảo sát bộ vi điều 8 bit PIC16F877 pot
Bảng t ập lệnh PIC16F877 (Trang 35)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w