1. Trang chủ
  2. » Luận Văn - Báo Cáo

PIC 16F84 và một số ứng dụng.doc

55 2,3K 16
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Pic 16F84 Và Một Số Ứng Dụng
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Tiểu Luận
Định dạng
Số trang 55
Dung lượng 1,77 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PIC 16F84 và một số ứng dụng

Trang 1

Trang 2

Trang 3

PIC là một dòng vi điều khiển khá mới mẻ ở nước ta Lần đầu tiên chúng em tiếp xúc với nó do đó việc tìm hiểu nó gặp rất nhiều khó khăn Tuy nhiên nhờ sự giúp đỡ nhiệt tình của giáo viên hướng dẫn_thầy Võ Tường Quân cùng với sự hỗ trợ nhiệt tình của các bạn trong lớp, chúng em đã hoàn thành tốt đồ án này Chúng

em xin chân thành cảm ơn Thầy và các bạn

Lần đầu tiên tìm hiểu về dòng PIC nên chắn không tránh khỏi những thiếu sót, chúng em mong sẽ nhận được những hướng dẫn quý báu của các Thầy trong Bộ môn và các ý kiến đóng góp của các bạn để có thể tiếp tục tìm hiểu sau hơn về dòng vi điều khiển PIC

Trang 4

Ngày nay, với tốc độ phát triển mạnh mẽ của công nghệ tự động trong tất cả

mọi lĩnh vực thì việc tìm hiểu và ứng dụng các dòng chip Vi điều khiển là một vấn

đề cần được quan tâm Họ Vi điều khiển 8051 rất quen thuộc với chúng ta, và nó từng được xem là họ vi điều khiển rất ưu việt Tuy nhiên với nhu cầu ngày càng cao về tính ổn định, tốc độ xử lý cũng như khả năng tiếp cận dễ dàng của người dùng, thì họ 8051 đã không phát huy được ưu thế của mình

Các chip vi điều khiển thuộc dòng PIC của hãng Microchip có lẽ không quá

xa lạ Với công nghệ RISC (Reduced Instruction Set Computer) nâng cao đáng kể tốc độ xử lý, khả năng chống nhiễu, khả năng mở rộng tốt, khả năng nạp lại trên 1000

lần, tập lệnh đơn giản, được hỗ trợ lập trình dưới dạng Macro và đa dạng về chủng

loại, thì dòng PIC là một dòng vi điều khiển tốt nhất trong các ứng dụng tự động từ đơn giãn đến phức tạp nhất Tuy nhiên đến giờ nó còn khá mới mẻ và vẫn chưa được ứng dụng rộng rãi Vì thế việc tìm hiểu dòng vi điều khiển này là một nhu cầu thực tế và nó hứa hẹn mang lại nhiều hiệu quả thiết thực phục vụ cho công nghệ tự động

PIC16F84 là một tiêu biểu, có thể được coi là chip vi điều khiển đơn giản nhất của dòngï PIC Với 2 Port, 18 chân và đầy đủ các tính chất ưu việt của dòng PIC, PIC16F84 phù hợp với các ứng dụng vừa và nhỏ, nhất là các thí nghiệm phục vụ học tập, nghiên cứu

Chúng em mong rằng với đồ án “PIC16F84 và một số ứng dụng” sẽ là bước khởi đầu mở ra cái nhìn gần gũi hơn về dòng PIC để từ đó chúng ta có thêm một công cụ đắc lực trong điều khiển tự động

Trang 5

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

.1

NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN 2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

.2

LỜI CẢM ƠN 3

LỜI GIỚI THIỆU 4

Trang 6

Phần IV: ỨNG DỤNG 35

Trang 7

Phần I: GIỚI THIỆU VỀ PIC16F84

I.1 Tổng quan:

I.1.1 Cấu trúc

PIC16F84 thuộc vi điều khiển 8 bit có cấu trúc RISC( Reduce Instruction Set Computer) Cấu trúc tổng quát của nó được biểu diễn dưới dạng các khối sau :

Hình I-1: Sơ đồ khối PIC

Bộ nhớ chương trình (Program memory) : Dùng để chứa chương trình nạp Vì được chế tạo bằng công nghệ FLASH nên bộ nhớ này có thể được lập trình hay xoá nhiều lần.Ưu điểm này khiến cho con vi điều khiển này thích hợp cho việc xây dựng các ứng dụng điều khiển

EPPROM: Đây là bộ nhớ để lưu trữ dữ liệu khi không cấp nguồn Thông thường nó được dùng để chứa dữ liệu quan trọng không thể mất nếu chẳng may nguồn cấp bị mất đột ngột

RAM: Bộ nhớ dữ liệu được sử dụng cho trong suốt quá trình thực thi chương trình trong vi điều khiển

PORTA và PORTB: là các ngõ kết nối vật lý giữa vi điều khiển với các phần cứng bên ngoài PORTA có 5 chân giao tiếp trong khi PORTB có đến 8 chân

FREE- RUN TIMER: Đây là một thanh ghi 8 bit ở bên trong vi điều khiển, nó hoạt động độc lập với chương trình Cứ mỗi bốn xung nhịp của bộ dao động thì giá trị của nó tăng lên một cho đến khi đạt đến giá trị tối đa là 255, và sau đó nó lại bắt đầu đếm từ 0 Nếu như chúng ta biết được chính xác thời giữa hai lần tăng của nội

Trang 8

dung thanh ghi Timer, thì khi đó nó sẽ được dùng để định thời gian, một đặc điểm hết sức hữu ích và được ứng dụng rất nhiều trong thực tế.

CPU(Central Processing Unit ): Đóng vai trò then chốt trong việc kết nối các thành phần trong vi điều khiển với nhau, được so sánh giống như bộ não con người Nó liên kết các hoạt động của các khối trong vi điều khiển và thực thi chương trình.RISC

có nghĩa là gì? Để có thể thấy được ưu điểm của vi điều khiển này, chúng ta sẽ đi vào tìm hiểu khái niệm về cấu trúc RISC thông qua việc so sánh hai mô hình khối cấu trúc Von - Neuman và cấu trúc Harvards

Hình I-2: Cấu trúc Havard và Von - Neumann

Như ta đã biết, cấu trúc vi điều khiển của Von Neuman la một cấu trúc cổ điển và được ứng dụng phổ biến.Ở cấu trúc này, bus dữ liệu và địa chỉ được truy xuất trên cùng một đường, do đó nó phần nào ảnh hưởng đến tốc độ thực thi của vi điều khiển

Không giống như cấu trúc Von Neuman, cấu trúc Harvards tách riêng bus dữ liệu với bus địa chỉ Chính điều này đã tăng tốc độ xử lý của vi điều khiển lên một cách đáng kể Các vi điều khiển có cấu trúc phần cứng kiểu Harvards thì được gọi là vi điều khiển RISC RISC là viết tắt của thuật ngữ “Reduce Instruction Set Computer”

Bởi vì PIC16f84 có cấu trúc RISC nên nó có tập lệnh được tinh giảm, cụ thể là 35 lệnh Tất cả các lệnh này đều được thực thi trong một chu kỳ máy,trừ các lệnh nhảy và rẽ nhánh

I.1.2 Sơ đồ chân

PIC16F84 có tổng cộng 18 chân, tên gọi và chức năng từng chân như sau:

Trang 9

Hình I-3: Hình dáng bên ngoài PIC16f84

• Chân 3: RA4, chân thứ tư của port A Ngoài ra, chân này có có chức năng là một bộ định thời( TOCK1)

• Chân 5: Vss chân nối đất của nguồn

• Chân 6: RB0, chân số 0 của port B Ngoài ra nó còn là ngõ vào của ngắt

I.1.3 Bộ tạo xung

Bộ tạo xung dùng để cấp xung cho vi điều khiển hoạt động

PIC16F84 có thể hoạt động với bộ tạo xung dùng thạch anh và mạch dao động RC

Ở đây chúng ta chỉ sử dụng thạch anh, vì nó ổn định và đơn giản

Trang 10

Hình I-4: Mạch tạo xung dùng thạch anh

I.1.4 Reset

Chức năng Reset dùng để khởi tạo lại cho điều khiển về điều kiện ban đầu Thực tế trong quá trình hoạt động, có những lúc vi điều khiển hoạt động không như mong muốn do bị tác động bởi một tác nhân nào đó, khi đấy ta sẽ dùng chức năng Reset để khởi tạo lại chức năng cho vi điều khiển, đưa các thanh ghi về vị trí khởi tạo ban đầu Không chỉ có thế, Reset còn có vai trò như một ngắt ( Interupt ), giúp thoát khỏi một chương trình một cách tức thời

Các nhiều cách ( nguồn ) để Reset lại vi điều khiển, trong đó có hai nguồn quan trọng nhất, đó là Reset khi vừa cấp nguồn ( Power On Reset _ POR ), và Reset bởi chân MCLR

I.1.5 Bộ xử lý trung tâm (CPU)

CPU được ví như là bộ não của vi điều khiển, nó đảm nhận vai trò tìm kiếm và giải mã các cấu trúc lệnh cho vi điều khiển hoạt động

CPU gắn kết các thành phần của vi điều khiển thành một khối thống nhất Như đã nói ở trên, chức năng quan trọng nhất của nó chính là giải mã lệnh Khi ta viết một chương trình, các câu lệnh thường có dạng gợi nhớ như MOVLW 0x20 Thế nhưng để cho vi điều khiển hiểu được, thì câu lệnh trên phải được dịch thành một chuỗi các số 0 và 1, gọi là mã lệnh ( opcode ) Việc dịch từ dạng chữ sang thành mã lệnh được thực hiện bởi các trình biên dịch, chẳng hạn như trình dịch hợp ngữ Sau đó CPU sẽ giải mã và thực thi các lệnh

I.1.6 Thanh ghi trạng thái status

Trang 11

Bit 7_ IRP( Register bank Select bit ): là bit thứ 8 của thanh ghi

STATUS làm nhiệm vụ định địa chỉ gián tiếp cho RAM nội

IRP = 1: bank 2 và 3

IRP = 0 bank 1 và 0 ( từ địa chỉ 00h đến FFh)

Bit 6:5 _ RP1: RP0 ( Register Bank Select Bits ): Hai bit này dùng để

chọn bank thanh ghi

Bit 3_ PD ( Power – down bit ) bit này được set mỗi khi vi điều khiển

được cấp nguồn, khi bắt đầu chạy, sau khi reset, và sau khi thực hiện lệnh CLRWDT

Bit 2_ Z ( Zero bit ) Dùng để chỉ kết quả ra 0, được set mỗi khi kết

quả trả về của một phép toán số học hay luận lý có giá trị là 0

Bit 1_ DC ( Digit Carry ) Bị ảnh hưởng bởi các phép toán cộng, trừ

Nó được set khi ta trừ một số cho một số lớn hơn.Và được reset trong trường hợp ngược lại

Bit 0_ C (Carry )ảnh hưởng bởi các lệnh ADDWF, ADDLW, SUBLW,

SUBWF

I.1.7 Các port

Port dùng để chỉ một nhóm các chân trên vi điều khiển có thể truy xuất đồng thời, hoặc có thể set một bit mong muốn lên 1 hay xuống 0, hoặc đọc từ chúng trạng thái đang tồn tại Về mặt vật lý, Port là một thanh ghi bên trong vi điều khiển được nối bởi dây dẫn với các chân của vi điều khiển Nó đại diện cho sự kết nối vật lý giữa bộ xử lý trung tâm với thế giới bên ngoài Vi điều khiển dùng chúng để hiển thị hay điều khiển các các thành phần hay thiết bị khác Tuỳ theo chức năng, mà một vài chân có thể đảm nhiệm cả vai trò, chẳng hạn như chân RA4/TOCKI, vừa là bi thứ 4 của Port A, lại vừa là ngõ vào từ bên ngoài cho bộ đếm Việc lựa chọn một trong hai chức năng này được thực hiện qua việc thay đổi giá trị cho các thanh ghi chuyên dụng, chẳng hạn ở đây là bit thứ 5 TOSC trong thanh ghi

Trang 12

OPTION Khi ta chọn một trong hai chức năng thì chức năng còn lại sẽ không hoạt động được.

Tất cả các chân trong port đều có thể được dùng như các ngõ xuất hay nhập, tuỳ thuộc vào yêu cầu của thiết bị cần điều khiển Để định nghĩa một chân là xuất hay là nhập, thì ta sử dụng các thanh ghi TRIS ở bank1 Nếu một bit trong thanh ghi TRIS bằng 1, thì bit tương ứng với vị trí đó trong port lúc này sẽ là ngõ nhập, và ngược lại.Mỗi một port có một thanh ghi TRIS riêng cho nó, port A ứng với TRISA, port B ứng với TRISB.Thanh ghi Port A và B nằm trong bank 0, trong khi TRISA và TRISB nằm trong bank1

I.1.8 PORTB và TRISB

Port B gồm 8 chân Thanh ghi tương ứng cho việc xác định chiều dữ liệu là TRISB

Hình I-6: Cấu trúc PORTB & TRISB

Mỗi chân trong Port B đều có sẵn một điện trở kéo lên có giá trị nhỏ ở ngay bên trong (dùng để nối ngõ lên mức logic 1 ) có thể được kích hoạt bằng cách reset bit thứ 7 RBPU trong thanh ghi OPTION Các điện trở kéo lên này tự động tắt khi các chân của port được định nghĩa là các ngõ xuất Khi vi điều khiển bắt đầu hoạt động, các điện trở này không được kích hoạt

Trang 13

Các chân từ RB4 đến RB7 của port B có thể gây ra ngắt khi trạng thái của nó thay đổi từ mức 0 lên mức 1 và ngược lại Chỉ có những chân nào được định nghĩa là ngõ nhập mới có thể gây ra ngắt được

PORTA và TRISA

Port A có 5 chân xuất nhập, thanh ghi tương ứng của nó là TRISA có địa chỉ 85h Cũng giống như port B, việc set một bit trong thanh ghi TRISA sẽ định nghĩa bit tương ứng trong port A là xuất hay là nhập

Một điều quan trọng cần chú ý là chân RA4 của port A chỉ có thể dừng để nhập mà thôi Nó cũng dùng để nhập từ ngoài cho bộ định thời TMR0

Hình I-7: Cấu trúc PORTA & TRISA

I.2 Tổ chức bộ nhớ

PIC16F84 có hai khối bộ nhớ phân cách nhau, một cho dữ liệu và cái còn lại

RAM sẽ quản lý khối dữ liệu, còn bộ nhớ FLASH quản lý khối chương trình

Bộ nhớ chương trình

Bộ nhớ chương trình được chế tạo bằng công nghệ FLASH, nó cho phép lập trình cho vi điều khiển được nhiều lần trước khi nó được lắp đặt vào thiết bị, hoặc ngay các sau khi nó được lắp đặt mà có một sự cố nào đó xảy ra Dung lượng của bộ nhớ chương trình này là 1024 dòng lệnh với độ dài 14 bit, trong đó các vị trí từ 0h đến 4h được dùng cho các vector reset và ngắt

Bộ nhớ dữ liệu

Trang 14

Bộ nhớ dữ liệu bao gồm bộ nhớ RAM và EPPROM Bộ nhớ EPPROM bao gồm 64 byte, nội dung của nó không bị mất đi nếu lỡ như mất nguồn EPPROM không được định địa chỉ trực tiếp, mà được truy xuất gián tiếp thông qua 2 thanh ghi là EEADR và EEDATA Bởi vì bộ nhớ EPPROM được dùng cho việc lưu trữ những thông số quan trọng, cho nên người lập trình cần phải tuân theo một số quy tắc để tránh mắc lỗi trong lúc viết Bộ nhớ Ram có địa chỉ từ 0x0C đến 0x4F, bao gồm 68 ố nhớ 8 bit Việc xác định vị trí của RAM cũng được thực hiện thông qua thanh ghi GPR

I.2.1 Các thanh ghi SFR

0 và bank 1

Trang 15

Hình I-8: Tổ chức bộ nhớ PIC16F84

I.2.2 Bộ đếm chương trình

Bộ đếm chương trình (PC ) là một thanh ghi 13 bit, nó chứa địa chỉ của các lệnh cần thực thi Nó được xác định bằng cách kết hợp của thanh ghi 5 bit PCLATCH cho 5 bit cao cả địa chỉ với thanh ghi 8 bit PCL cho 8 bit thấp của địa chỉ

Trang 16

Bằng cách tăng dần nội dung của PC, vi điều khiển sẽ từng bước thực hiện các lệnh có trong chương trình.

I.2.3 Lập trình cho vi điều khiển

Để lập trình vào bộ nhớ chương trình,vi điều khiển phải được set ở chế độ làm việc đặc biệt, cụ thể khi đó chân MCLR sẽ được nối với áp 13,5V, và nguồn cung cấp phải ổn định Bộ nhớ chương trình có thể được lập trình nối tiếp sử dụng 2 chân

“ data / clock “

I.2.4 Các kiểu định địa chỉ

Địa chỉ ô nhớ trong RAM có thể được truy xuất bằng hai cách:

_Định địa chỉ trực tiếp.

_Định địa chỉ gián tiếp.

I.3 Các cơ chế ngắt

Ngắt là một đặc tính của vi điều khiển mà cho phép nó đáp ứng được với những sự kiện tại lúc nó xảy ra, và xác định xem vi điều khiển sẽ làm gì tiếp theo sau đó Đây là một chức năng vô cùng quan trọng, bởi vì nó tạo nên sự gắn kết giữa vi điều khiển với thế giới xung quanh nó Thông thường thì ngắt sẽ làm ngưng chương trình đang thực hiện, còn gọi là chương trình nền, và thực hiện tiếp chương trình ngắt tương ứng với nguyên nhân gây ra ngắt

Hình I-9: Cấu trúc ngắt

I.3.1 Thanh ghi điều khiển ngắt (INTCON )

Trang 17

Thanh ghi điều khiển ngắt (INTCON) được truy xuất bằng cách chọn bank tương ứng Nó có chức năng cho phép hay là cấm xảy ra ngắt, và xác định các nguyên nhân ngắt.

Hình I-10: Thanh ghi điều khiển ngắt

Bit 7_ GIE ( Global Interupt Enable bit ): Đây là bit cho phép hay không

cho phép ngắt

Bit 6 EEIE ( EPPROM Write Complete Interupt Enable bit ): Bit cho phép

ngắt gây ra tại nơi kết thúc của việc viết chương trình con vào EPPROM

Bit 5 TOIE ( TMR0 Overflow Interupt Enable bit ): Bit cho phép kích hoạt

ngắt gây ra bởi sự tràn của TMR0

Bit 4 INTE( INT External Interupt Enable bit ): Bit cho phép ngắt gây ra bởi

ngắt ngoài tạt chân RB0/INT

Bit 3 RBIE ( RB port change Interupt Enable bit ) Cho phép ngắt xảy ra khi

có sự thay đổi trạng thái trên các chân RB4 đến RB7

Bit 2 TOIF ( TMR0 Overflow Interupt Flag bit ): Cờ báo tràn của TMR0

Bit này phải được xoá bằng phần mềm để có thể sử dụng ngắt này tiếp theo

Bit 1 INTF ( INT External Interupt Flag bit ): Cờ báo khi xảy ra ngắt ngoài.

Bit 0 RBIF ( RB Port Change Interupt Flag bit ): Bit xác định sự thay đổi

trên các chân từ RB4 đến RB7 Nit này cũng cần phải được xoá trong chương

trình con ngắt để có thể đáp ứng các ngắt tiếp theo xảy ra sau đó

Được kích hoạt bởi tín hiệu cạnh lên ( nếu bit INTEDG = 1 trong thanh ghi OPTION ) hoặc bởi tín hiệu cạnh xuống ( nếu INTEDG = 0 ) Khi có tín hiệu xuất hi65n trên chân INT, bit INTF sẽ được set trong thanh ghi INTCON Bit này phải

Trang 18

được xoá đi trong chương trình phục vụ ngắt để ngắt không xảy ra nữa khi quay lại chương trình chính.

Ngắt do sự tràn của bộ đếm TMR0

Khi TMR0 bị tràn, nó sẽ set bit TOIF lên 1 Đây là một chức năng quan trọng, bởi vì nhiều vấn đề hóc búa trong thực tế có thể được giải quyết khi sử dụng chức năng này Ngắt do cơ chế này có thể được cho phép hay cấm bằng cách set/ reset bit T0IE

Sự thay đổi trạng thái trên các chân RB4: RB7 sẽ set bit RBIF (INTCON< 0

> ) lên 1, từ đó kích hoạt ngắt xảy ra.Để cho các chân này nhận được sự thay đổi trạng thái của tín hiệu, thì chúng phải được định nghĩa là các ngõ nhập Nếu một trong chúng được định nghĩa là ngõ xuất, thì ngắt sẽ không xảy ra được Nếu như ta định nghĩa tất cả chúng đều là ngõ xuất, thì trạng thái hiện thời của chúng sẽ được

so sánh với giá trị cũ mà được lưu ở lần đọc cuối cùng từ port B

 Khởi tạo ngắt

Để có thể được chức năng ngắt của vi điều khiển, thì đầu tiên ta phải thực hiện các lệnh khởi tạo ban đầu cho nó, bằng cách xác định các bit tương ứng trong thanh ghi điều khiển ngắt INTCON

I.4 Timer TMR0

Timer thường là phần gây khó hiểu của vi điều khiển, thế nhưng nếu tìm hiểu kỹ càng, ta sẽ thấy nó giúp ích rất nhiều trong công tác lập trình cho vi điều khiển Một trong những ứng dụng của nó là thiết lập mối quan hệ giữa một đại lượng thực, chẳng hạn như thời gian và một biến số mà biểu thị trạng thái của một bộ định thời với vi điều khiển Về mặt vật lý, timer là một thanh ghi 8 bit có giá trị tăng dần từ 0 đến 255, và sau đó lại tiếp tục đếm lên từ 0 Sự tăng lên này được thực hiện trên nền của các chương trình đang thực hiện của vi điều khiển Nó đưa

ra cho người sử dụng nhiều giải pháp hữu hiệu trong việc giải quyết tối ưu vấn đề, một trong chúng là tăng một biến số nào đó lên tại mỗi thời điểm timer bị tràn

Như đã nói trên, PIC16F84 có một bộ timer 8 bit, và như vậy giá trị tối đa mà timer đếm là 256 ( từ 0 đến 255 )

Sau mỗi lần timer đếm đến 255, nó sẽ tự reset giá trị về 0 và bắt đầu đếm lại từ đầu Tại thời điểm timer chuyển giá trị từ 255 về 0, bit T0IF trong thanh ghi INTCON sẽ được set lên 1 Nếu như các ngắt được cho phép xảy ra, thì con trỏ chương trình sẽ nhảy đến chương trình con phục vụ ngắt Bên cạnh việc nhận xung nội, giá trị của timer cũng có thể tăng lên nhờ vào việc nhận xung từ bên ngoài thông qua chân RA4/ TOCKI, và khi đó timer hoạt động như một bộ đếm

Trang 19

I.5 Thanh ghi OPTION

Hình I-11: Thanh ghi OPTION

Đây là bit kích hoạt hay tắt điện trở nội kéo lên có trong các chân của port B

1 = Kích hoạt

0 = Vô hiệu

Nếu sự kiện ngắt được cho phép, bit này sẽ xác định xem ngắt xảy ra khi có sự thay đổi của tín hiệu tại cạnh lên hay cạnh xuống

1 = Cạnh lên

0 = Cạnh xuống

 Bit 5_T0CS ( TMR0 Clock Source Select bit )

Bit này sẽ xác định xem bộ định thời sẽ tăng tại mỗi ¼ xung kích của bộ dao động, hoặc là tăng dần thông qua xung kích từ b6n ngoài thông qua chân RA4/ T0CKI

1 = Xung từ bên ngoài

0 = ¼ xung bên trong

Bit 4 T0SE ( TMR0 Source Edge Select bit )

Nếu sử dụng TMR0 như là một bộ đếm xung bên ngoài thông qua chân RA4 thì bit này sẽ xác định xem bộ đếm sẽ tăng tại cạnh lên hay cạnh xuống của xung kích

1 = Cạnh xuống

0 = Cạnh lên

 Bit 3 PSA ( Presscaler Assignment bit )

Bit này sẽ xác định tỉ lệ giữa TMR0 và WDT

1 = Tỉ lệ gán cho WDT

0 = Tỉ lệ được gán cho TMR0

 Bit 0: 2 PS0, PS1, PS2 ( Presscaler Assignment bit )

Trang 20

Trong trường hợp sử dụng xung thạch anh 4 MHz, thì một chu kỳ lệnh tốn 1us Các bit PS0, PS1, PS2 sẽ xác định khoảng thời gian giữa mỗi lần tăng của TMR0 hay WDT.

I.6 Bộ nhớ dữ liệu EEPROM

PIC16F84 có một bộ nhớ dữ liệu EPPROM với dung lượng 64 bytes có địa chỉ từ 00h đến 63h, có thể được ghi hay đọc Đặc tính quan trọng nhất của nó chính là dữ liệu cất trong nó không bị mất đi khi bị mất nguồn Theo nhà sản xuất thì dữ liệu có thể cất trong EPPROM sẽ được bảo toàn đến 40 năm

Bộ nhớ EPPROM được đặt trong một vùng nhớ đặc biệt và có thể được truy xuất thông qua các thanh ghi đặc biệt Chúng là:

EEDATA chứa các dữ liệu đọc viết

EEADR chứa địa chỉ của phân vùng EPPROM cần truy xuất

EECON1 chứa các bit điều khiển

EECON2 thanh ghi này không tồn tại về mặt vật lý, mà nó dùng để bảo vệ EPPROM khỏi những lỗi lập trình không đáng có

I.6.1 Thanh ghi EECON1

Hình I-12: Thanh hi EECON1

Trang 21

cần phải xoá bit này băng phần mềm để nó có thể nhận biết được một sự kết thúc của việc ghi tiếp theo.

1 = Ghi kết thúc

0 = Ghi chưa xong, hoặc chưa bắt đầu ghi

Bit 3 WRERR (Write EPPROM Error Flag )

Báo lỗi nếu gặp trong quá trình ghi vào EPPROM Bit này chỉ được set lên khi quá trình ghi vào EPPROM bị ngắt bởi một tín hiệu reset hoặc bị tràn WDT khi WDT được kích hoạt

1 = Có lỗi xảy ra

0 = Không có lỗi

Bit 2 WREN ( EPPROM Write Enable bit ):

Bit cho phép ghi vào EPPROM Nếu bit này không được set lên thì vi điều khiển sẽ không cho phép ghi vào EPPROM

Bit 1 WR (Write Control bit ):

Việc set bit này lên sẽ khởi tạo việc ghi dữ liệu từ thanh ghi EEDATA đến một địa chỉ cụ thể thông qua thanh ghi EEDR

1 = Khởi tạo ghi

0 = Không khởi tạo

Bit 0 RD ( Read Control bit ):

Bit dùng để điều khiển việc khởi tạo quá trình chuyển dữ liệu từ một địa chỉ đã được định nghĩa trong EEDR đến thanh ghi EEDATA

1 = Khởi tạo

0 = Không khởi tạo

Trang 22

Phần II: LẬP TRÌNH HỢP NGỮ CHO PIC16F84

II.1 Giới thiệu:

Khả năng giao tiếp là một điều rất quan trọng trong mọi lĩnh vực Tuy nhiên, điều đó chỉ có thể thực hiện được khi hai bên giao tiếp biết cùng một ngôn ngữ Với quy tắc trên thì con người và vi điều khiển cũng có thể giao tiếp với nhau Ngôn ngữ mà vi điều khiển và con người dùng để giao tiếp gọi là hợp ngữ Tên “ Hợp Ngữ “ không có ý nghĩa gì sâu xa, nó tương tự như tên các ngôn ngữ khác như

“ Tiếng Anh “ hay “ Tiếng Pháp “ Nói chính xác hơn thì hợp ngữ chỉ là giải pháp trung gian, bởi vì chương trình viết bằng hợp ngữ phải được dịch sang mã nhị phân để mà vi điều khiển có thể hiểu được Hợp ngữ và trình biên dịch hợp ngữ là hai khái niệm khác nhau Hợp ngữ là ngôn ngữ dùng để viết chương trình cho vi điều khiển, còn trình biên dịch hợp ngữ là chương trình trên máy tính cá nhân mà nó dịch chương trình viết bằng hợp ngữ sang mã nhị phân, chương trình mà đã được dịch sang mã nhị phân thì được gọi là ngôn ngữ máy

II.1.1 Biểu diễn số trong trình biên dịch

Trong hợp ngữ MPLAB, các số có thể biểu diễn dưới dạng thập phân, thập lục phân, hoặc nhị phân Chúng ta sẽ minh hoạ điều này với số 240:

II.1.2 Các yếu tố của hợp ngữ:

Các yếu tố của hợp ngữ gồm có:

Trang 23

Mã gợi nhớ lệnh hoặc chỉ dẫn của trình hợp ngữ theo sau trường nhãn Cách thức mà chúng ta viết lệnh được gọi là cú pháp Trong ví dụ sau, chúng ta có thể nhận ra lỗi trong khi viết bởi vì lệnh movlp và gotto không tồn tại trong vi xử lý PIC16F84.

II.2 Tập lệnh của PIC:

Tập lệnh của PIC được xây dựng trên cơ sở ngôn ngữ Assemble Tuy nhiên để người dùng dễ dàng tiếp cận và giúp cho quá trình lập trình trở nên đơn giản hơn, tập lệch của PIC được tối thiểu hoá còn 35 lệnh Nhưng không vì ít lệch hơn tập lệnh của các họ vi điều khiển khác mà khả năng ứng dụng của PIC bị hạn chế

Theo như nhà sản xuất Microchip thì tập lệnh của PIC có thể đáp ứng được tất cả

các ứng dụng mà các họ vi điều khiển khác có thể làm được Và thựcï tế cho thấy trong quá trình lập trình cho PIC bạn sẽ thấy việc lập trình sẽ rất dễ dàng hơn các họ vi điều khiển khác và chưa thấy một hạn chế về giải thuật nào gây ra từ tập

lệnh Bên cạnh đó, với sự hỗ trợ của lập trình dưới dạng Macro, việc lập trình trở

nên nhẹ nhàng hơn và khả năng mở rộng ứng dụng là rất lớn

Sau đây sẽ liệt kê các lệnh của họ PIC

Movlw

Hoạt động:

Trang 24

Ghi hằng số K vào thanh ghi W

Giá trị của K từ 0 đến 255

Không tác động lên cờ

Số chu kỳ:1

Số byte: 2

Movwf

Hoạt động:

Nội dung của thanh ghi W được chép sang thanh ghi F

Giá trị của f từ 0 đến 127

Không tác động lên cờ

Số chu kỳ:1

Số byte: 2

Movf

Dạng lệnh: Movf f, d

Hoạt động:

Nội dung của thanh ghi f được lưu trữ vào thanh ghi d

Tác động lên cờ :Z

Số chu kỳ:1

Số byte: 2

Clrw

Hoạt động:

Xoá thanh ghi W

Tác động lên cờ :Z

Số chu kỳ: 1

Số byte: 2

Clrf

Hoạt động:

Xoá thanh ghi f

Thanh ghi f có giá trị từ 0 đến 127

Tác động lên cờ :Z

Số chu kỳ:1

Số byte: 2

Swapf

Trang 25

Nếu d = 0 kết quả được lưu vào thanh ghi W

Nếu d = 1 kết quả được lưu vào thanh ghi F

Không tác động lên cờ

Số chu kỳ:1

Tác động lên cờ:C,DC,Z

Số chu kỳ:1

Nếu d = 0 kết quả được lưu vào thanh ghi W

Nếu d = 1 kết quả được lưu vào thanh ghi F

Giá trị của thanh ghi F từ 0 đến 127

Tác động lên cờ: C,DC,Z

Số chu kỳ:1

Hằng số K có giá trị tứ 0 đến 255

Tác động lên cờ:C,DC,Z

Số chu kỳ:1

Nếu d = 0 kết quả được lưu vào thanh ghi W

Nếu d = 1 kết quả được lưu vào thanh ghi F

Giá trị của thanh ghi F từ 0 đến 127

Trang 26

Tác động lên cờ:C,DC,Z

Số chu kỳ:1

Hằng số K có giá trị tứ 0 đến 255

Số chu kỳ:1

Tác động lên cờ :Z

Số chu kỳ:1

Số byte: 2

Iorlw

Hoạt động:

Hằng số K có giá trị tứ 0 đến 255

Hằng số K có giá trị tứ 0 đến 255

Số chu kỳ:1

Trang 27

Số chu kỳ:1

Số byte: 2

XORLW

Hoạt động:

Hằng số K có giá trị tứ 0 đến 255

Hằng số K có giá trị tứ 0 đến 255

Tác động lên cờ :Z

Số chu kỳ:1

Tác động lên cờ :Z

Số chu kỳ:1

Tác động lên cờ :Z

Số chu kỳ:1

Trang 28

Giá trị của thanh ghi F từ 0 đến 127

Tác động lên cờ :Z

Số chu kỳ:1

Tác động lên cờ :C

Số chu kỳ:1

Tác động lên cờ :C

Số chu kỳ:1

Số byte: 2

Dạng lệnh: COMF f,d

Hoạt động:

Lấy bù nội dung của thanh ghi F

Nếu d = 0 kết quả được lưu vào thanh ghi W Nếu d = 1 kết quả được lưu vào thanh ghi F Giá trị của thanh ghi F từ 0 đến 127

Tác động lên cờ :C

Số chu kỳ:1

Số byte: 2

Hoạt động:

Ngày đăng: 25/08/2012, 10:23

HÌNH ẢNH LIÊN QUAN

Hình  I-1: Sơ đồ khối PIC - PIC 16F84 và một số ứng dụng.doc
nh I-1: Sơ đồ khối PIC (Trang 7)
Hình  I-3: Hình dáng bên ngoài PIC16f84 - PIC 16F84 và một số ứng dụng.doc
nh I-3: Hình dáng bên ngoài PIC16f84 (Trang 9)
Hình  I-6: Caáu truùc PORTB &amp; TRISB - PIC 16F84 và một số ứng dụng.doc
nh I-6: Caáu truùc PORTB &amp; TRISB (Trang 12)
Hình  I-7: Caáu truùc PORTA &amp; TRISA I.2. Tổ chức bộ nhớ - PIC 16F84 và một số ứng dụng.doc
nh I-7: Caáu truùc PORTA &amp; TRISA I.2. Tổ chức bộ nhớ (Trang 13)
Hình  I-8: Tổ chức bộ nhớ PIC16F84 - PIC 16F84 và một số ứng dụng.doc
nh I-8: Tổ chức bộ nhớ PIC16F84 (Trang 14)
Hình  I-9: Caáu truùc ngaét - PIC 16F84 và một số ứng dụng.doc
nh I-9: Caáu truùc ngaét (Trang 16)
Hình  III-13: Chương trình nạp chip ICProg - PIC 16F84 và một số ứng dụng.doc
nh III-13: Chương trình nạp chip ICProg (Trang 33)
Bảng ứng dụng chip vi điều khiển PIC16F84 gồm 3 modul: điều khiển LED; điều khiển LCD và điều khiển động cơ Servol. - PIC 16F84 và một số ứng dụng.doc
ng ứng dụng chip vi điều khiển PIC16F84 gồm 3 modul: điều khiển LED; điều khiển LCD và điều khiển động cơ Servol (Trang 35)
Hình  IV-14: Mô hình màn hình LCD - PIC 16F84 và một số ứng dụng.doc
nh IV-14: Mô hình màn hình LCD (Trang 39)
Bảng  IV-2: chức năng của các chân LCD - PIC 16F84 và một số ứng dụng.doc
ng IV-2: chức năng của các chân LCD (Trang 40)
Sơ đồ kết nối được thể hiện như hình dưới đây: - PIC 16F84 và một số ứng dụng.doc
Sơ đồ k ết nối được thể hiện như hình dưới đây: (Trang 41)
Hình  IV-16: Sơ đồ kết nối LCD 4 bit - PIC 16F84 và một số ứng dụng.doc
nh IV-16: Sơ đồ kết nối LCD 4 bit (Trang 42)
Bảng  IV-3: Các màn hình hiển thị trong tình huống 1 - PIC 16F84 và một số ứng dụng.doc
ng IV-3: Các màn hình hiển thị trong tình huống 1 (Trang 42)
Hình  IV-19: Sơ đồ mạch tích hợp - PIC 16F84 và một số ứng dụng.doc
nh IV-19: Sơ đồ mạch tích hợp (Trang 45)
Hình  IV-20: Mạch điện thực tế IV.5. Mã chương trình: - PIC 16F84 và một số ứng dụng.doc
nh IV-20: Mạch điện thực tế IV.5. Mã chương trình: (Trang 46)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w