126
 Giáo trình Vi iu Khin 1 MC LC CHƯƠNG 1: TNG QUAN V VI IU KHIN PIC 16F877A .................2  1. TNG QUAN V H VI IU KHIN PIC ................................... ...............................2 2. GII THIU V PIC16F8XX và PIC16F877A ................................ ...............................4 CHƯƠNG 2: T CH C B NH - CÁC THANH GHI CH C NĂNG ..... 6 2.1. SƠ  CHÂN VI IU KHIN PIC16F877A .............................................................7 2.2. MT VÀI THÔNG S V VI IU KHIN PIC16F877A.........................................9 2.3. SƠ  KHI VI IU KHIN PIC16F877A .............................................................11 2.4. T CH C B NH ............................................................................................. .........12 2.4.1. B NH CHƯƠNG TRÌNH ............................... ..............................................12 2.4.2. B NH D  LIU ...........................................................................................13 2.5. CÁC THANH GH I NĂNG C BIT .......................................................................14 2.6. STACK ...........................................................................................................................16 CHƯƠNG 3: TP LNH - CU TRÚC CHƯƠNG TRÌN H . .........................17 3.1. TP LNH .....................................................................................................................17 3.1.1. NHÓM LNH DI CHUYN ............................................................................17 3.1.2. NHÓM LNH S HC ....................................................................................18 3.1.3. NHÓM LNH LOGIC .....................................................................................19 3.1.4. NHÓM LNH R NHÁNH ............................................... ...............................2 2 3.2. TO TR BNG DÒNG LP ......................................................................................25 3.3. CU TRÚC CHƯƠNG TRÌNH ....................................... ..............................................26 3.4. CÁC KHI GIAO TIP .................................................................................................31 3.4.1. GIAO TIP VI LED 7 OAN .........................................................................31 3.4.2 GIAO TIP VI BÀN PHÍM HEX .......................................................... .........35 3.4.3 GIAO TIP VI LED MA TRN ............................ .........................................37 3.4.4 GIAO TIP VI LCD ........................................................................................40 CHƯƠNG 4: CÁC KHI CH C NĂNG.......................................................46  4.1.B NH THI ................................................................................................. .............46 4.1.1. TIMER 0 ............................................... ................................ ...............................4 6 4.1.2. TIMER1 ...............................................................................................................49 4.1.3. TIMER2 ...............................................................................................................52 4.2. ADC ..............................................................................................................................53 4.3.PMW_ IU CH  RNG XUNG ...........................................................................58 CHƯƠNG 5: CNG NI TIP......................................................................67  5.1. USART ............................................................................................. ..............................6 7 5.2.CH  LÀM VIC.......................................................................................................68 5.2.1. TRUYN D  LIU BT NG B ................................................................68 5.2.2. NHN D  LIU BT NG B .....................................................................71 CHƯƠNG 6: NGT INT ERRUP T ............................................................80  6.1 KHÁI NIM ................................................................................................ ....................80 6.2 NGT RB0............................................ ..........................................................................82 6.3. NGT PORTB ...............................................................................................................84 6.4. NGT TIMER ...............................................................................................................85 6.5. NGT ADC....................................................................................................................86 6.6. NGT PORT NI TIP ................................................................................................88 * PH LC: GII THIÊU LP TRÌNH CCS ................................ 94 * PH LC: CÁC THANH GHI CH C NĂNG ............................ 105 

Giao Trinh Vi Dieu Khien Pic 16F877A

Embed Size (px)

Citation preview

Page 1: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 1/126

Giáo trình Vi iu Khin

1

MC LCCHƯƠNG 1: TNG QUAN V VI IU KHIN PIC 16F877A .................2 1. TNG QUAN V H VI IU KHIN PIC ..................................................................22. GII THIU V PIC16F8XX và PIC16F877A ...............................................................4

CHƯƠNG 2: T CH C B NH - CÁC THANH GHI CH C NĂNG ..... 62.1. SƠ  CHÂN VI IU KHIN PIC16F877A .............................................................7

2.2. MT VÀI THÔNG S V VI IU KHIN PIC16F877A.........................................92.3. SƠ  KHI VI IU KHIN PIC16F877A .............................................................112.4. T CH C B NH......................................................................................................12

2.4.1. B NH CHƯƠNG TRÌNH .............................................................................122.4.2. B NH D LIU ...........................................................................................13

2.5. CÁC THANH GHI NĂNG C BIT .......................................................................142.6. STACK ...........................................................................................................................16CHƯƠNG 3: TP LNH - CU TRÚC CHƯƠNG TRÌNH ..........................173.1. TP LNH .....................................................................................................................17

3.1.1. NHÓM LNH DI CHUYN ............................................................................173.1.2. NHÓM LNH S HC ....................................................................................183.1.3. NHÓM LNH LOGIC .....................................................................................19

3.1.4. NHÓM LNH R NHÁNH ..............................................................................223.2. TO TR BNG DÒNG LP ......................................................................................253.3. CU TRÚC CHƯƠNG TRÌNH .....................................................................................263.4. CÁC KHI GIAO TIP .................................................................................................31

3.4.1. GIAO TIP VI LED 7 OAN .........................................................................313.4.2 GIAO TIP VI BÀN PHÍM HEX ...................................................................353.4.3 GIAO TIP VI LED MA TRN .....................................................................373.4.4 GIAO TIP VI LCD ........................................................................................40

CHƯƠNG 4: CÁC KHI CH C NĂNG .......................................................46 4.1.B NH THI ..............................................................................................................46

4.1.1. TIMER 0 ..............................................................................................................46

4.1.2. TIMER1 ...............................................................................................................494.1.3. TIMER2 ...............................................................................................................524.2. ADC ..............................................................................................................................534.3.PMW_ IU CH  RNG XUNG ...........................................................................58

CHƯƠNG 5: CNG NI TIP......................................................................67 5.1. USART ...........................................................................................................................675.2.CH  LÀM VIC.......................................................................................................68

5.2.1. TRUYN D LIU BT NG B ................................................................685.2.2. NHN D LIU BT NG B.....................................................................71

CHƯƠNG 6: NGT – INTERRUPT ............................................................80 6.1 KHÁI NIM ....................................................................................................................80

6.2 NGT RB0 ......................................................................................................................826.3. NGT PORTB ...............................................................................................................846.4. NGT TIMER ...............................................................................................................856.5. NGT ADC ....................................................................................................................866.6. NGT PORT NI TIP ................................................................................................88* PH LC: GII THIÊU LP TRÌNH CCS ................................ 94 

* PH LC: CÁC THANH GHI CH C NĂNG ............................ 105 

Page 2: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 2/126

Giáo trình Vi iu Khin

2

CHƯƠNG 1 

TNG QUAN V VI IU KHIN PIC1.1. TNG QUAN V H VI IU KHIN PIC

PIC là mt h vi iu khin RISC ư c sn xut b i công ty Microchip Technology.

Dòng PIC u tiên là PIC1650 ư c phát trin b i Microelectronics Division thucGeneral_Instrument. PIC bt ngun t ch vit tt ca “Programmable Intelligent

Computer” (Máy tính kh trình thông minh) là mt sn phm ca hãng General

Instruments t cho dòng sn phm u tiên ca h là PIC1650. Lúc này, PIC 1650 ư c

dùng giao tip v i các thit b ngoi vi cho máy ch 16 bit CP1600, vì vy, ngư i ta

cũng gi PIC v i tên “Peripheral Interface Controller” (B iu khin giao tip ngoi vi).

CP1600 là mt CPU tt, nhưng li kém v các hot ng xut nhp, và vì vy PIC 8-bit

ư c phát trin vào khong năm 1975  h tr hot ng xut nhp cho CP1600. PIC

s dng microcode ơ n gin t trong ROM, và mc dù, cm t RISC chưa ư c s dng

th i by gi , nhưng PIC thc s là mt vi iu khin v i kin trúc RISC, chy mt lnh

mt chu kỳ máy (4 chu kỳ ca b dao ng). Năm 1985 General Instruments bán b phn

vi in t ca h, và ch s hu m i hy b hu ht các d án – lúc ó quá li th i. Tuy

nhiên, PIC ư c b sung EPROM to thành 1 b iu khin vào ra kh trình. Ngày

nay rt nhiu dòng PIC ư c xut xư ng v i hàng lot các module ngoi vi tích h p sn

(như USART, PWM, ADC…), v i b nh chươ ng trình t 512 Word n 32K Word. 

1.1.1 Mt s c tính ca Vi iu khin PIC

Hin nay có khá nhiu dòng PIC và có rt nhiu khác bit v phn cng, nhưngchúng ta có th im qua mt vài nét như sau :

•  8/16 bit CPU, xây dng theo kin truc Harvard có sa i

•  Flash và ROM có th tuỳ chn t 256 byte n 256 Kbyte

•  Các cng Xut/ Nhp (I/ O) (mc logic thư ng t 0V n 5.5V, ng

v i logic 0 và logic 1)

•  8/16 bit Timer

•  Các chun giao tip ni tip ng b / khung ng b USART

•  B chuyn i ADC Analog-to-digital converters, 10/12 bit

•  B so sánh in áp (Voltage Comparator)•  Các module Capture/ Compare/ PWM

•  LCD

•  MSSP Peripheral dng cho các giao tip I2C, SPI.

•  B nh ni EPROM – có th ghi/ xoá l n t i 1 triu ln

•  Module iu khin ng cơ , c encoder

•  H tr giao tip USB

Page 3: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 3/126

Giáo trình Vi iu Khin

3

•  H tr giao tip CAN

•  H tr giao tip LIN

•  H tr giao tip IrDA•  Mt s dòng có tích h p b RF (PIC16f639, và RFPIC)

•  KEELOQ m hoá và gii m  

•  DSP nhng tính năng x lý tín hiu s (dsPIC) c im thc thi tc caoca RISC CPU ca h vi diu khin PIC16F87XA :

•  Ch gm 35 lnh ơ n.

•  Tt c các lnh là 1chu kỳ ngoi tr chươ ng trình con là 2 chu kỳ.

•  Tc hot ng :

+ DC- 20MHz ngõ vào xung clock.

+ DC- 200ns chu kỳ lnh.

•  rng ca b nh chươ ng trình Flash là 8K x 14word, ca b nh d 

liu (RAM) là 368 x 8bytes, ca b nh d liu là EPROM là 256 x 8bytes.1.1.2. Nh ng c tính ngoi vi

- Timer0 : 8- bit nh th i/ m v i 8- bit prescaler

- Timer1 : 16- bit nh th i/ m v i prescaler, có th ư c tăng lên trong sut ch  Sleep qua thch anh/ xung clock bên ngoài.

- Timer2 : 8- bit nh th i/ m v i 8- bit, prescaler và postscaler

- Hai module Capture, Compare, PWM

* Capture có rng 16 bit, phân gii 12.5ns

* Compare có rng 16 bit, phân gii 200ns

* phân gii l n nht ca PWM là 10bit.- Có 13 ngõ I/O có th iu khin trc tip

- Dòng vào và dòng ra l n :

* 25mA dòng vào cho mi chân

* 20mA dòng ra cho mi chân

1.1.3. c im v tươ ng t  

- 10 bit, v i 8 kênh ca b chuyn i tươ ng t sang s (A/D).

- Brown – out Reset (BOR).

- Module so sánh v tươ ng t.* Hai b so sánh tươ ng t.

* Module in áp chun VREF có th lp trình trên PIC.

- Có th lp trình ngõ ra vào n t nhng ngõ vào ca PIC và trên in áp bêntrong.

- Nhng ngõ ra ca b so sánh có th s dng cho bên ngoài.

1.1.4. Các c im c bit :

- Có th ghi/ xoá 100.000 ln v i kiu b nh chươ ng trình Enhanced Flash.

Page 4: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 4/126

Giáo trình Vi iu Khin

4

- 1.000.000 ghi/ xoá v i kiu b nh EPROM.

- EPROM có th lưu tr d liu hơ n 40 năm.

- Có th t lp trình li dư i s iu khin ca phn mm.- Mch lp trình ni tip qua 2 chân.

- Ngun ơ n 5V cp cho mch lp trình ni tip.

- Watchdog Timer (WDT) v i b dao ng RC tích h p sn trên Chip cho hotng áng tin cy.

- Có th lp trình m bo v.

- Tit kim năng lư ng v i ch  Sleep.

- Có th la chn b dao ng.

- Mch d sai (ICD : In- Circuit Debug) qua 2 chân

1.1.5. Công ngh CMOS

- Năng lư ng thp, tc cao Flash/ công ngh EPROM

- Vic thit k hoàn toàn t ĩ nh

-Khong in áp hot ng t 2V n 5.5V-Tiêu tn năng lư ng thp.

1.2. GI I THIU V PIC16F8XX và PIC16F877APIC16F8X là nhóm PIC trong h PIC16XX ca h Vi iu khin 8-bit, tiêu hao năng

lư ng thp, áp ng nhanh, ch to theo công ngh CMOS, chng t ĩ nh in tuyt i.

Nhóm bao gm các thit b sau:

•  PIC16F83

•  PIC16CR83

•  PIC16F84

•  PIC16CR84

- Tt c các PIC16/17 u có cu trúc RISC. PIC16CXX các c tính ni bc, 8 mc ngăn

xp Stack, nhiu ngun ngt tích h p bên trong ln ngoài. Có cu trúc Havard v i các bus

d liu và bus thc thi chươ ng trình riêng bit nhau cho phép dài 1 lnh là 14-bit và

bus d liu 8-bit cách bit nhau. Tt c các lnh u mt 1 chu kỳ lnh ngoi tr các lnh

r nhánh chươ ng trình mt 2 chu kỳ lnh. Ch có 35 lnh và 1 lư ng l n các thanh ghi cho

phép áp ng cao trong ng dng.

- H PIC16F8X có nhiu tính năng c bit làm gim thiu các thit b ngoi vi, vì vykinh t cao, có h thng ni bt áng tin cy và s tiêu th năng lư ng thp.  ây có 4

s la chn b dao dng và ch có 1 chân kt ni b dao ng RC nên có gii pháp tit

kim cao. Ch  SLEEP tit kim ngun và có th ư c ánh thc b i các ngun reset.

Và còn nhiu phn khác ó ư c gi i thiu bên trên s ư c nói rõ  các phn k tip.

- PIC16F877A có 40/44 chân v i s phân chia cu trúc như sau :

+ Có 5 port xut/nhp

Page 5: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 5/126

Giáo trình Vi iu Khin

5

+ Có 8 kênh chuyn i A/D 10-bit

+ Có 2 b PWM

+ Có 3 b nh th i: Timer0, timer1 và timer2

+ Có giao tip truyn ni tip: chun RS 232, I2C…

+ Có giao tip LCD

Page 6: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 6/126

Giáo trình Vi iu Khin

6

CHƯƠNG 2T CH C B NH - CÁC THANH GHI CH C NĂNG

2.1 SƠ   CHÂN VI IU KHIN PIC16F877A

Hình 2.1: Sơ đ chân và hình dng ca Píc 16F877A

Page 7: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 7/126

Giáo trình Vi iu Khin

7

  Chc năng các chân :

Chân Tên Chc năng

1  /VPP  - : Hot ng Reset  mc thp- VPP : ngõ vào áp lp trình 

2 RA0/AN0  - RA0 : xut/nhp s - AN0 : ngõ vào tươ ng t 

3 RA1/AN1 - RA1 : xut/nhp s - AN1 : ngõ vào tươ ng t 

4 RA2/AN2/VREF- /CVREF - RA2 : xut/nhp s - AN2 : ngõ vào tươ ng t - VREF -: ngõ vào in áp chun (thp) ca b A/D 

5 RA3/AN3/VREF+ - RA3 : xut/nhp s - AN3 : ngõ vào tươ ng t - VREF+ : ngõ vào in áp chun (cao) ca b A/D

6 RA4/TOCKI/C1OUT - RA4 : xut/nhp s - TOCKI : ngõ vào xung clock bên ngoài cho timer0- C1 OUT : Ngõ ra b so sánh 1 

7 RA5/AN4/ /C2OUT - RA5 : xut/nhp s - AN4 : ngõ vào tươ ng t 4- SS : ngõ vào chn la SPI ph - C2 OUT : ngõ ra b so sánh 2

8 RE0/ /AN5 - RE0 : xut nhp s - RD : iu khin vic c  port nhánh song song- AN5 : ngõ vào tươ ng t 

9RE1/ /AN6

 - RE1 : xut/nhp s 

- WR : iu khin vic ghi  port nhánh song song- AN6 : ngõ vào tươ ng t 

10 RE2/ /AN7 - RE2 : xut/nhp s - CS : Chip la chn s iu khin  port nhánhsong song- AN7 : ngõ vào tươ ng t 

11 VDD  Chân ngun ca PIC. 

12 VSS  Chân ni t 

13 OSC1/CLKI Ngõ vào dao ng thch anh hoc xung clock bên

ngoài.- OSC1 : ngõ vào dao ng thch anh hoc xungclock bên ngoài. Ngõ vào Schmit trigger khi ư ccu to  ch  RC ; mt cách khác ca CMOS.- CLKI : ngõ vào ngun xung bên ngoài. Luôn ư ckt h p v i chc năng OSC1.

14 OSC2/CLKO Ngõ vào dao ng thch anh hoc xung clock- OSC2 : Ngõ ra dao ng thch anh. Kt ni nthch anh hoc b cng hư ng.

Page 8: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 8/126

Giáo trình Vi iu Khin

8

- CLKO :  ch  RC, ngõ ra ca OSC2, bng tns ca OSC1 và ch ra tc ca chu kỳ lnh.

15 RC0/T1 OCO/T1CKI - RC0 : xut/nhp s - T1OCO : ngõ vào b dao ng Timer 1- T1CKI : ngõ vào xung clock bên ngoài Timer 1

16 RC1/T1OSI/CCP2 - RC1 : xut/nhp s - T1OSI : ngõ vào b dao ng Timer 1- CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõra PWM2

17 RC2/CCP1 - RC2 : xut/nhp s - CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõra PWM1

18 RC3/SCK/SCL - RC3 : xut/nhp s - SCK : ngõ vào xung clock ni tip ng b /ngõ raca ch  SPI- SCL : ngõ vào xung clock ni tip ng b / ngõ raca ch  I2C

19 RD0/PSP0  - RD0 : xut/nhp s - PSP0 : d liu port nhánh song song

20 RD1/PSP1 - RD1 : xut/nhp s - PSP1 : d liu port nhánh song song

21 RD2/PSP2 - RD2 : xut/nhp s - PSP2 : d liu port nhánh song song 

22 RD3/PSP3 - RD3: xut/nhp s - PSP3 : d liu port nhánh song song 

23 RC4/SDI/SDA - RC4 : xut/nhp s - SDI : d liu vào SPI- SDA : xut/nhp d liu vào I2C

24 RC5/SDO - RC5 : xut/nhp s - SDO : d liu ra SPI

25 RC6/TX/CK - RC6 : xut/nhp s - TX : truyn bt ng b USART- CK : xung ng b USART

26 RC7/RX/DT - RC7 : xut/nhp s - RX : nhn bt ng USART- DT : d liu ng b USART

27 RD4/PSP - RD4: xut/nhp s - PSP4 : d liu port nhánh song song 

28 RD5/PSP5  - RD5: xut/nhp s - PSP5 : d liu port nhánh song song 

29 RD6/PSP6 - RD6: xut/nhp s - PSP6 : d liu port nhánh song song 

30 RD7/PSP7 - RD7: xut/nhp s - PSP7 : d liu port nhánh song song 

31 VSS  Chân ni đt

Page 9: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 9/126

Giáo trình Vi iu Khin

9

32 VDD  Chân ngun ca PIC. 

33 RB0/INT - RB0 : xut/nhp s - INT : ngt ngoài

34 RB1  xut/nhp s 

35 RB2  xut/nhp s 

36 RB3 - RB3 : xut/nhp s - Chân cho phép lp trình in áp thp ICPS

37 RB4 - xut/nhp s - Ngt PortB

38 RB5 - xut/nhp s - Ngt PortB

39 RB6/PGC - RB6 : xut/nhp s - PGC : mch vi sai và xung clock lp trình ICSP

- Ng

t PortB 40 RB7/PGD 

- RB7 : xut/nhp s - PGD : mch vi sai và d liu lp trình ICSP- Ngt PortB 

2.2 MT VÀI THÔNG S V VI IU KHIN PIC16F877A

ây là vi iu khin thuc h PIC16Fxxx v i tp lnh gm 35 lnh có dài 14 bit.

Mi lnh u ư c thc thi trong mt chu kì xung clock. Tc hot ng ti a cho

phép là 20 MHz v i mt chu kì lnh là 200ns. B nh chươ ng trình 8Kx14 bit, b nh d 

liu 368x8 byte RAM và b nh d liu EEPROM v i dung lư ng 256x8 byte. S PORT

I/O là 5 v i 33pin I/O.Các c tính ngoi vi bao gmcác khi chc năng sau:

Timer0: b m 8 bit v i b chia tn s 8 bit.

Timer1: b m 16 bit v i b chia tn s, có th thc hin chc năng m da vào

xung clock ngoi vi ngay khi vi iu khin hot ng  ch  sleep.

Timer2: b m 8 bit v i b chia tn s, b postcaler.

Hai b Capture/so sánh/ iu ch  rông xung.

Các chun giao tip ni tip SSP (Synchronous Serial Port), SPI và I2C.

Chun giao tip ni tip USART v i 9 bit a ch.Cng giao tip song song PSP (Parallel Slave Port) v i các chân iu khin RD, WR,

CS  bên ngoài.

Các c tính Analog:

8 kênh chuyn i ADC 10 bit.

Hai b so sánh.

Bên cnh ó là mt vài c tính khác ca vi iu khin như:

Page 10: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 10/126

Giáo trình Vi iu Khin

10

B nh flash v i kh năng ghi xóa ư c 100.000 ln.

B nh EEPROM v i kh năng ghi xóa ư c 1.000.000 ln.

D liu b nh EEPROM , có 256 byte (có a ch 00h÷FFh), có th lưu tr trên 40 năm.

Kh năng t np chươ ng trình v i s iu khin ca phn mm.

Np ư c chươ ng trình ngay trên mch in ICSP (In Circuit Serial Programming)

thông qua 2 chân.Watchdog Timer v i b dao ng trong.

Chc năng bo mt mã chươ ng trình.

Ch  Sleep.

Có th hot ng v i nhiu dng Oscillator khác nhau.

Page 11: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 11/126

Giáo trình Vi iu Khin

11

2.3 SƠ   KHI VI IU KHIN PIC16F877A

Hình 2.2: Cu trúc bên trong ca Pic 16F877A

Như ã nói  trên , vi iu khin PIC có kin trúc Harvard, trong ó CPU truy cp

chươ ng trình và d liu ư c trên hai bus riêng bit, nên làm tăng áng k băng thông so

v i kin trúc Von Neumann trong ó CPU truy cp chươ ng trình và d liu trên cùng mt

bus.

Vic tách riêng b nh chươ ng trình và b nh d liu cho phép s bit ca t lnh có th 

khác v i s bit ca d liu. PIC 16F877A, t lnh dài 14 bit , t d liu 8 bit.PIC 16F877A cha mt b ALU 8 bit và thanh ghi làm vic WR (working register).

ALU là ơ n v tính toán s hc và logic, nó thc hiên các phép tình s và i s Boole

trên thanh ghi làm vic WR và các thanh ghi d liu. ALU có th thc hin các phép

cng, tr, dch bit và các phép toán logic

Page 12: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 12/126

Giáo trình Vi iu Khin

12

2.4 T CH C B NH  

a.B NH CHƯƠ NG TRÌNH

B nh chươ ng trình ca vi iu khin PIC16F877A là b nh flash, dung lư ng

b nh 8K word (1 word = 14 bit) và ư c phân thành nhiu trang (t page0 n page 3)

.Như vy b nh chươ ng trình có kh năngcha ư c 8*1024 = 8192 lnh (vì mt lnh

sau khi mã hóa s có dung lư ng 1 word (14bit). mã hóa ư c a ch ca 8K word b nh chươ ng trình, b m chươ ng trình

có dung lư ng 13 bit (PC<12:0>).

Khi vi iu khin ư c reset, b m chươ ng trình s ch n a ch 0000h

(Resetvector). Khi có ngt xy ra, b m chươ ngtrình s ch n a ch 0004h

(Interruptvector).

B nh chươ ng trình không bao gm b nh stack và không ư c a ch hóa b i

b m chươ ng trình. B nh stack s ư c cp c th trong phn sau.

Hình 2.3: B nh chươ ng trình ca Pic

b. B NH D LIUB nh d liu ca PIC là b nh EEPROM ư c chia ra làm nhiu bank. i v i

PIC16F877A b nh d liu ư c chia ra làm 4 bank. Mi bank có dung lư ng 128 byte,

bao gm các thanh ghi có chc năng c bit SFG (Special Function Register) nm  các

vùng a ch thp và các thanh ghi mc ích chung GPR (General Purpose Register) nm

Page 13: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 13/126

Giáo trình Vi iu Khin

13

 vùng a ch còn li trong bank. Các thanh ghi SFR thư ng xuyên ư c s dng (ví d 

như thanh ghi STATUS) s ư c t  tt cà các bank ca b nh d liu giúp thun tin

trong quá trình truy xut và làm gim b t lnh ca chươ ng trình. Sơ   c th ca b nh  

d liu PIC16F877A như sau:

Hình 2.4: B nh b nh ca Pic

Page 14: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 14/126

Giáo trình Vi iu Khin

14

2.5 CÁC THANH GHI C BIT - THANH GHI FSR VÀ INDF

Hình 2.5: Sơ   thanh ghi FSR

Thanh ghi FSR cha a ch “con tr” ch n, thanh ghi INDF cha ni dung có a ch 

nm trong thanh ghi FSR.

Ví d: Thanh ghi 22H có giá tr là 10. Nu FSR =22H thì INDF =10.

Tóm li, Thanh ghi INDF không phi là mt thanh ghi vt lí. Nó cha giá tr ca thanh

ghi có a ch nm  thanh ghi FSR. -THANH GHI STATUS

Thanh ghi trng thái cha các trng thái s hc ca b ALU, trng thái Reset và các

bit chn Bank ca b nh d liu.

Bit 7 IRP: Bit la chn bank thanh ghi (S dng cho nh a ch gián tip).

1 = Bank 2, 3 (100h – 1FFh )

0 = Bank 0, 1 (00h – FFh)

Bit 6 – 5: RP1 – RP0: Bit la chn bank thanh ghi (Dùng trong nh i ch trc tip).

11 = Bank 3 ( 180h – 1FFh)

10 = Bank 2 (100h – 17Fh)

01 = Bank 1 (80h – FFh)

00 = Bank 0 (00h – 7Fh)

Each bank is 128 bytes

Page 15: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 15/126

Giáo trình Vi iu Khin

15

Bit 4 TO: Bit báo hiu hot ng ca WDT.

1: Lnh xóa WDT hoc Sleep xy ra.

0: WDT hot ng.

Bit 3 PD: Bit báo công sut thp ( Power down bit).

1: Sau khi ngun tăng hoc có lnh xóa WDT.

0: Thc thi lnh Sleep.Bit 2 Z: bit Zero

1: Khi kt qu ca mt phép toán bng 0.

0: Khi kt qu ca mt phép toán khác 0.

Bit 1 DC: Digit Carry

1: Có mt s nh  sinh ra b i phép cng hoc phép tr 4 bit thp.

0: Không có s nh sinh ra.

Bit 0 C: c nh (Carry Flag)/ borrow

1: Có mt s nh sinh ra b i phép cng hoc phép tr 4 bit cao.

0: Không có s nh sinh ra.

Ví d: Nu A – B < 0 thì C = 0 ngư c li C = 1

- THANH GHI IU KHIN NGT INTCON (Interrupt Control Register)

Bit 7 GIE: Bit cho phép ngt toàn cc1: Cho phép ngt toàn cc

0: Không cho phép ngt 

Bit 6 PEIE: Bit cho phép ngt khi ghi vào EEPROM hoàn tt.

1: Cho phép ngt ghi vào EEPROM hot ng

0: Không cho phép ngt ghi vào EEPROM hot ng

Bit 5 TMR0IE: Bit cho phép ngt khi timer 0 tràn

1: Cho phép ngt khi timer 0 tràn

0: Không cho phép ngt khi timer 0 trànBit 4 INTE: Bit cho phép ngt ngoi vi trên chân RB0/INT

1: Cho phép ngt ngoi vi

0: Không cho phép ngt ngoi vi

Bit 3 RBIE: Cho phép ngt khi trng thái PORTB thay i

1: Cho phép

0: Không cho phép

Bit 2 TMR0IF: C báo ngt Timer 0 

Page 16: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 16/126

Giáo trình Vi iu Khin

16

1: Timer 0 tràn

0: Timer 0 chưa tràn

Bit 1 INTF:C báo ngt ngoài RB0/INT

1: Có ngt

0: Không xy ra ngt. 

Bit 0 RBIF:C báo ngt khi có thay i trng thái PORTB 1: Có thay i

0: Không có thay i xy ra trên PORTB

* Ngoài ra còn mt s thanh ghi ch c năng khác như :

Thanh ghi PIE1 (a ch 8Ch): cha các bit iu khin chi tit các ngt ca các khi

chc năng ngoi vi.

Thanh ghi PIR1 (a ch 0Ch) cha c ngt ca các khi chc năng ngoi vi, các ngt

này ư c cho phép b i các bit iu khin cha trong thanh ghi PIE1.

Thanh ghi PIE2 (8Dh): cha các bit iu khin các ngt ca các khi chc năng

CCP2, SSP bus, ngt ca b so sánh và ngt ghi vào b nh EEPROM.

Thanh ghi PIR2 ( 0Dh): cha các c ngt ca các khi chc năng ngoi vi, các ngt này

ư c cho phép b i các bit iu khin cha trong thanh ghi PIE2.

Thanh ghi PCON ( 8Eh): cha các c hiu cho bit trng thái các ch  reset ca vi

iu khin.

bit them chi tit xem phn Ph luc

2.6 STACK

Stack cho phép 8 lnh gi chươ ng trình con và ngt hot ng. Stack cha a ch 

mà chươ ng trình chính s quay v thc hin t sau chươ ng trình con hay ngt. i v iPIC16F877A Stack có sâu 8 l p.

Stack không nm trong b nh chươ ng trình hay b nh d liu mà là mt vùng nh  c

bit không cho phép c hay ghi. Khi lnh CALL ư c thc hin hay khi mt ngt xy ra

làm chươ ng trình b r nhánh, giá tr ca b m chươ ng trình PC t ng ư c vi iu

khin ct vào trong stack. Khi mt trong các lnh RETURN, RETLW hat RETFIE ư c

thc thi, giá tr PC s t ng ư c ly ra t trong stack, vi iu khin s thc hin tip

chươ ng trình theo úng qui trình nh trư c.

B nh Stack trong vi iu khin PIC h 16F87xA có kh năng cha ư c 8 a ch vàhot ng theo cơ ch xoay vòng. Ngh ĩ a là giá tr ct vào b nh Stack ln th 9 s ghi è

lên giá tr ct vào Stack ln u tiên và giá tr ct vào b nh Stack ln th 10 s ghi è

lên giá tri6 ct vào Stack ln th 2.

Cn chú ý là không có c hiu nào cho bit trng thái stack, do ó ta không bit ư c khi

nào stack tràn. Bên cnh ó tp lnh ca vi iu khin dòng PIC cũng không có lnh POP

hay PUSH, các thao tác v i b nh stack s hoàn toàn ư c iu khin b i CPU.

Page 17: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 17/126

Giáo trình Vi iu Khin

17

CHƯƠNG 3TP LNH - CU TRÚC CHƯƠNG TRÌNH

3.1. TP LNH

3.1.1. NHÓM LNH DI CHUYN

1. Lnh MOVLW

Cú pháp: MOVLW k (0≤ k ≤255)Tác d  ng: em giá tr k vào thanh ghi W

Ví d: gián cho thanh ghi W mt giá tr c th là 20H ta làm như sau:

MOVLW 20H 

 MOVLW B’0010 0000’

MOVLW D’32’ 

2. Lnh MOVWF

Cú pháp: MOVWF f (0≤ f ≤255)

Tác d  ng: em giá tr ca thanh ghi W vào thanh ghi f  gián cho thanh ghi mt giá tr c th, u tiên ưa giá tr cn gián cho thanh ghi W,

sau ó ta thc hiên lnh MOVWF  di chuyn giá tr trong thanh ghi W sang thanh ghi

cn gián.

Ví d:

MOVLW D’15’; W=15

MOVWF PORTB; PORTB =15

Tuy nhiên, còn có cách khác thông qua thanh ghi “con tr” FSR, khi thanh ghi

“con tr” FSR tr n byte có a ch nào thì ni dung ca thanh ghi ó di chuyn

vào thanh ghi INDF.

hiu mt cách ơ n gin ta hiu thanh ghi FSR cha a ch còn thanh ghi INDF cha

ni dung.

Ví d:

MOVLW 30H

MOVWF FSR

MOVLW D’20’

MOVWF INDF

lnh u tiên W=30H, sau ó gián giá tr 30H vào thanh ghi FSR tc là “con tr” ch n byte có a ch 30H. Khi ó giá tr ca thanh ghi có a ch 30H ư c ch a trong

thanh ghi INDF. Như vy sau khi gián giá tr 20 vào thanh ghi INDF tc là gián giá tr 

ó vào thanh ghi có a ch 30H.

Vy sau khi thc hiên on chươ ng trình trên (30H) = 20, tc là byte có a ch 30H có

giá tr là 20.

c th hơ n chúng ta xét ví d sau:

Page 18: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 18/126

Giáo trình Vi iu Khin

18

MOVLW D’5’

MOVWF PORTB

Thông qua 2 lnh trên PORTB = 5, như ng ta có th vit li:

MOVLW 06H

MOVWF FSR

MOVLW D’5’MOVWF INDF

Vy sau khi thc hiên on chươ ng trình trên (06H) = 5, tc là byte có a ch 06H

(PORTB) có giá tr là 5.

3. Lnh MOVF

Cú pháp: MOVF f,W f (0≤ f ≤255)

Tác d  ng: em giá tr ca thanh ghi f vào thanh ghi W 

di chuyn giá tr  thanh ghi COUNT1 sang thanh ghi COUNT2 thì ta bt buc qua

thanh ghi “trung gian” W thông qua lnh MOVF.

Vid:

MOVF COUNT1,W

MOVWF CONT2

u tiên em giá tr có ư c  thanh ghi COUNT1 vào W, sau ó thông qua lnh

MOVWF em giá tr có ư c  thanh ghi W vào COUNT2. 

3.1.2. NHÓM LNH S HC 

4. Lnh ADDLW

Cú pháp: ADDLW k

Tác d  ng: Cng giá tr k vào thanh ghi W,kt qu ư c cha trong thanh ghi W.Bit trng thái: C, DC, Z

Ví d:

MOVLW D’200’; W=200

ADDLW D’55’

MOVWF PORTB; PORTB = 255

5.Lnh ADDWF

Cú pháp: ADDWF f,d

(d∈ 

[0,1]).Tác d  ng: Cng giá tr hai thanh ghi W và thanh ghi f. Kt qu ư c cha trong thanh ghi

W nu d = 0 hoc thanh ghi f nu d =1.

Bit trng thái: C, DC, Z

6. Lnh SUBLW

Cú pháp: SUBLW k

Page 19: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 19/126

Giáo trình Vi iu Khin

19

Tác d  ng: Ly giá tr k tr giá tr trong thanh ghi W. Kt qu ư c cha trong thanh ghi

W.

Bit trng thái: C, DC, Z

Ví d:

MOVLW D’100’; W=100

SUBLW D’155’MOVWF PORTB; PORTB =55

7. Lnh SUBWF

Cú pháp: SUBWF f,d

( d∈ 

[0,1])

Tác d  ng: Ly giá tr trong thanh ghi f em tr cho thanh ghi W. Kt qu ư c lưu trong

thanh ghi W nu d=0 hoc thanh ghi f nu d=1.

Bit trng thái: C, DC, Z

8. Lnh INCFCú pháp: INCF f,d

(d ∈  [0,1])

Tác d  ng: Tăng giá tr thanh ghi f lên 1 ơ n v. Kt qu ư c ưa vào thanh ghi W nu

d = 0 hoc thanh ghi f nu d = 1.

Bit trng thái: Z

Ví d:

MOVLW D’10’

MOVWF COUNT; COUNT =10

INCF COUNT,1; COUNT =11

9. Lnh DECF

Cú pháp: DECF f,d

(d ∈  [0,1]). 

Tác d  ng: Giá tr thanh ghi f ư c gim i 1 ơ n v. Kt qu ư c ưa vào thanh ghi

W nu d = 0 hoc thanh ghi f nu d = 1.

Bit trng thái: Z

Ví d:

MOVLW D’10’MOVWF COUNT; COUNT =10

DECF COUNT,1; COUNT =9

3.1.3. NHÓM LNH LOGIC

10. Lnh BCF

Cú pháp: BCF f,b (0≤b≤7)

Tác d  ng: Xóa bit b trong thanh ghi f v giá tr 0.

Page 20: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 20/126

Giáo trình Vi iu Khin

20

Bit trng thái: không có.

Ví d:

BCF PORTB,2; RB2 =0

11. Lnh BSF

Cú pháp: BSF f,b (0≤b≤7)

Tác d  ng: Set bit b trong thanh ghi f.Bit trng thái: không có

Ví d:

BSF PORTB,2; RB2 =1

12. Lnh CLRW

Cú pháp CLRW

Tác d  ng: Xóa thanh ghi W và bit Z ư c set.

Bit trng thái: Z

13. Lnh CLRF

Cú pháp CLRF f 

Tác d  ng: Xóa thanh ghi f và bit Z ư c set.

Bit trng thái: Z 

14. Lnh CLRWDT

Cú pháp: CLRWDT

Tác d  ng: Reset Watchdog Timer, ng th i prescaler cũng ư c reset, các bit và ư c

set lên 1.

15. Lnh ANDLW

Cú pháp: ANDLW kTác d  ng: Thc hin phép toán AND gia thanh ghi và giá tr k, kt qu ư c cha

trong thanh ghi W.

Bit trng thái: Z

Chú ý: And các bit tươ ng ng

Ví d:

MOVLW B’1111 0000’

ANDLW B’0011 1111’; W = B’0011 0000’

16. Lnh ANDWFCú pháp: ANDWF f,d

(d∈ 

[0,1]). 

Tác d  ng: Thc hin phép toán AND gia các giá tr cha trong hai thanh ghi W và f.

Kt qu ư c ưa vào thanh ghi W nu d=0 hoc thanh ghi f nu d = 1.

Bit trng thái: Z

Page 21: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 21/126

Giáo trình Vi iu Khin

21

17. Lnh IORLW

Cú pháp: IORLW k

Tác d  ng: Thc hin phép toán OR gia thanh ghi W và giá tr k. Kt qu ư c cha

trong thanh ghi W.

Bit trng thái: Z

18. Lnh IORWFCú pháp: IORWF f,d

(d∈  [0,1]) 

Tác d  ng: Thc hin phép toán OR gia hai thanh ghi W và f. Kt qu ư c ưa vào

thanh ghi W nu d = 0 hoc thanh ghi f nu d=1.

Bit trng thái: Z

19. Lnh XORLW

Cú pháp: XORLW k

Tác d  ng: Thc hin phép toán XOR gia giá tr k và giá tr trong thanh ghi W. Kt

qu ư c lưu trong thanh ghi W.

Bit trng thái: Z

20. Lnh XORWF

Cú pháp: XORWF f,d

Tác d  ng: Thc hin phép toán XOR gia hai giá tr cha trong thanh ghi W và thanh

ghi f. Kt qu ư c lưu vào trong thanh ghi W nu d=0 hoc thanh ghi f nu d=1.

Bit trng thái: Z

21. Lnh SWAPF

Cú pháp: SWAPF f,d

(d∈ 

[0,1]) 

Tác d  ng: o 4 bit thp v i 4 bit cao trong thanh ghi f. Kt qu ư c cha trong thanh

ghi W nu d = 0 hoc thanh ghi f nu d = 1.

Bit trng thái: không có

22. Lnh RLF

Cú pháp: RLF f,d

(d∈  [0,1]) 

Tác d  ng: Dch trái các bit trong thanh ghi f qua c carry. Kt qu ư c lưu trong thanhghi W nu d=0 hoc thanh ghi f nu d=1.

Bit trng thái: C

23. Lnh RRF

Cú pháp: RRF f,d

(d∈ 

[0,1]) 

Tác d  ng: Dch phi các bit trong thanh ghi f qua c carry. Kt qu ư c lưu trong

Page 22: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 22/126

Giáo trình Vi iu Khin

22

thanh ghi W nu d = 0 hoc thanh ghi f nu d = 1.

Bit trng thái: C 

24. Lnh COMF

Cú pháp: COMF f,d

(d∈ 

[0,1]). 

Tác d  ng: o các bit trong thanh ghi f. Kt qu ư c ưa vào thanh ghi W nu d =0hoc thanh ghi f nu d=1.

Bit trng thái: Z

3.1.4.NHÓM LNH R NHÁNH

25. Lnh BTFSS

Cú pháp: BTFSS f,b

(0≤b≤7)

Tác d  ng: Kim tra bit b trong thanh ghi f. Nu bit b bng 0, lnh tip theo ư c thc thi.

Nu bit b bng 1, lnh tip theo ư c b qua và thay vào ó là lnh NOP.

Bit trng thái: không có

Ví d:

BTFSS PORTB,1

LNH 1

LNH 2

“1”   ây là v trí bít ư c kim tra ca portB. Nu bít này  mc cao thì s b qua lnh 1

thc thi lnh 2. Ngư c lai, mc thp s thc thi lnh 1

26. Lnh BTFSC

Cú pháp: BTFSC f,b(0≤b≤7)

Tác d  ng: kim tra bit b trong thanh ghi f. Nu bit b bng 1, lnh tip theo ư c thc

thi. Nu bit b bng 0, lnh tip theo ư c b qua và thay vào ó là lnh NOP.

Bit trng thái: không có 

27. Lnh DECFSZ

Cú pháp: DECFSZ f,d

(d∈  [0,1])

Tác d  ng: gía tr thanh ghi f ư c gim 1 ơ n v. Nu kt qu sau khi gim khác 0,lnh tip theo ư c thc thi, nu kt qu bng 0, lnh tip theo không ư c thc thi

và thay vào ó là lnh NOP. Kt qu ư c ưa vào thanh ghi W nu d = 0 hoc thanh

ghi f nu d = 1.

Bit trng thái: không có

Ví d:

DECFSZ DEM,1

Page 23: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 23/126

Giáo trình Vi iu Khin

23

LNH 1

LNH 2

Sauk khi gim giá tr trong thanh ghi “DEM” xung 1 ơ n v, nu chưa bng 0 thì thc thi

“LNH 1”. Ngư c li, thc thi “LNH 2”

28. Lnh INCFSZ

Cú pháp: INCFSZ f,d(d

∈ 

[0,1])

Tác d  ng: tăng giá tr thanh ghi f lên 1 ơ n v. Nu kt qu khác 0, lnh tip theo

ư c thc thi, nu kt qu bng 0, lnh tip theo ư c thay bng lnh NOP. Kt

qu s ư c ưa vào thanh ghi f nu d=1 hoc thanh ghi W nu d = 0.

Bit trng thái: không có. 

29. Lnh GOTO

Cú pháp: GOTO k (0≤k≤2047)

Tác d  ng: nhy t i mt label ư c nh ngh ĩ a b i tham s k và 2 bit PCLATH <4:3>.

Bit trng thái: không có. 

30. Lnh CALL

Cú pháp: CALL k (0≤k≤2047)

Tác d  ng: gi mt chươ ng trình con. Trư c ht a ch quay tr v t chươ ng trình con

(PC+1) ư c ct vào trong Stack, giá tr a ch m i ư c ưa vào b m gm 11 bit ca

bin k và 2 bit PCLATH<4:3>.

Bit trng thái: không có

31. Lnh RETURN

Cú pháp: RETURNTác d  ng: quay tr v chươ ng trình chính t mt chươ ng trình con

Bit trng thái:không có

Ngoaøi caùc leänh treân coøn coù moät soá leänh duøng trong chöông trình nhö: 

32 Lnh #DIFINE

Cú pháp: #DEFINE <text1> <text2>

Tác d  ng: thay th mt chui kí t này bng mt chui kí t khác, có ngh ĩ a là mi khi

chui kí t text1 xut hin trong chươ ng trình, trình biên dch s t ng thay th chui kí 

t ó bng chui kí t <text2>.33. Lnh INCLUDE

Cú pháp: #INCLUDE <filename> hoc #INCLUDE "filename"

Tác d  ng: ính kèm mt file khác vào chươ ng trình, tươ ng t như vic ta copy file ó

vào v trí xut hin lnh INCLUDE. Nu dùng cú pháp <filename> thì file  ình kèm là

file h thng (sýtem file), nu dùng cú pháp "filename" thì file ính kèm là file ca ngư i

s dng. Thông thư ng chươ ng trình ư c ính kèm theo mt "header file" cha các

Page 24: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 24/126

Giáo trình Vi iu Khin

24

thông tin nh ngha các bin (thanh ghi W, thanh ghi F,..) và các a ch cu các thanh

ghi chc năng c bit trong b nh d liu. Nu không có header file, chươ ng trình s 

khó c và khó hiu hơ n.

34 .Lnh CONSTANT

Cú pháp: CONSTANT <name>=<value>

Tác d  ng: Khai báo mt hng s, có ngh ĩ a là khi phát hin chui kí t "name" trongchươ ng trình, trình biên dch s t  ng thay bng chui kí t bng giá tr "value" ã

ư c nh ngh ĩ a trư c ó.

35. Lnh VARIABLE

Cú pháp: VARIABLE <name>=<value>

Tác d  ng: Tươ ng t như lnh CONSTANT, ch có im khác bit duy nht là giá tr 

"value" khi dùng lnh VARIABLE có th thay i ư c trong quá trình thưc thi chươ ng

trình còn lnh CONSTANT thì không.

36. Lnh SET

Cú pháp: <name variable> SET <value>

Tác d  ng: Gán giá tr cho mt tên bin. Tên ca bin có th thay i ư c trong quá

trình thc thi chươ ng trình.

37 Lnh EQU

Cú pháp: <name constant> EQU <value>

Tác d  ng: Gán giá tr cho tên ca tên ca hng s. Tên ca hng s không thay i

trong quá trình thc thi chươ ng trình.

38. Lnh ORG

Cú pháp: ORG <value>Tác d  ng: nh ngh ĩ a mt a ch cha chươ ng trình trong b nh chươ ng trình ca vi

iu khin.

39. Lnh END

Cú pháp: END

Tác d  ng: ánh du kt thúc chươ ng trình.

40. Lnh __CONFIG

Tác d  ng: Thit lp các bit iu khin các khi chc năng ca vi iu khin ư c cha

trong b nh chươ ng trình (Configuration bit).41. Lnh PROCESSOR

Cú pháp: PROCESSOR <processor type>

Tác d  ng: nh ngh ĩ a vi iu khin nào s dng chươ ng trình.

Page 25: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 25/126

Giáo trình Vi iu Khin

25

3.2. TO TR BNG VÒNG LP

Thc cht ca chươ ng trình DELAY là cho vi iu khin làm mt công vic vô ngh ĩ a nào

ó trong mt khong th i gian nh trư c. Khong th i gian này ư c tính toán da trên

quá trình thc thi lnh, hay c th hơ n là da vào th i gian ca mt chu kì lnh.

Có th vit chươ ng trình DELAY da trên on chươ ng trình sau:

DELAYMOVLW D’5’

MOVWL DEM

LOOP

DECFSZ DEM

GOTO LOOP

RETURN

Bây gi ta tính toán xem on chươ ng trình trên to tr bao lâu? (Hai lnh u xem như 

b qua, tính t ngay nhãn “LOOP” cho n lnh “RETURN”)

5→ 4 ; 3 chu kỳ máy

4→ 3; 3 chu kỳ máy

3→ 2; 3 chu kỳ máy

2→ 1; 3 chu kỳ máy

1→ 0; 4 chu kỳ máy

i v i các lnh trong Pic nhng lnh thông thư ng khi thc thi tn 1 chu kỳ máy, các

lnh “nhy” tn 2 chu kỳ máy. Riêng các lnh: BTFSS, BTFSC, DECFSZ… Khi chưa

“nhy” cũng tn 1 chu kỳ máy, khi tha iu kin thì “nhy” thì tn 2 chu kỳ máy.

Do ó,  vòng lp u tiên lnh DECFSZ tn 1 chu kỳ máy, lnh GOTO tn 2 chu kỳ máy. vòng lp cui, sau khi thc thi xong lnh DECFSZ giá tr trong thanh ghi DEM

gim t 1→ 0 thì nhy qua khi lnh GOTO tn 2 chu kỳ máy nhưng gp lnh RETURN

là lnh “nhy” tn 2 chu kỳ máy. Do ó,  vòng lp cui tn 4 chu kỳ máy.

Td = (3DEM+1)Ti

≈ 3DEM.

V i: Ti = 4/ f OSC 

DEM≤ 255: Giá tr cày vào  m

Td: Th i gian to tr.Ví d: Vit chươ ng trình to tr 500µs, thch anh 4Mhz

Tacó: Td = 500µs, Ti = 4/f OSC =1µs => DEM = 500/3 = 167

DELAY

MOVLW D’167’

MOVWL DEM

LOOP

Page 26: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 26/126

Giáo trình Vi iu Khin

26

DECFSZ DEM

GOTO LOOP

RETURN

Nhn xét: Nu dùng thch anh 4Mhz thì Td t giá tr ti a là 765 µs. Vy tăng th i

gian Td chúng ta dùng 2 vòng lp lng vào nhau:

DELAYMOVLW D’255’

MOVWF DEM1

LOOP

DECFSZ DEM1

GOTO LOOP1

GOTO THOAT

LOOP1

MOVLW D’255’

MOVWF DEM2

LOOP2

DECFSZ DEM2

GOTO LOOP2

GOTO LOOP

THOAT

NOP

RETURN

V i on chươ ng trình trên ta tính ư c:Td ≈ 3*DEM2*DEM1.

= 3.255.255= 172125 µs ≈ 0.196S 

3.3. CU TRÚC CHƯƠ NG TRÌNH

; Không có s dng ngt, nu có s dng ngt xem chươ ng 6

PROCESSOR 16F877A ; Khai báo dùng VI IU KHIN gì?

# INCLUDE <P 16F877A.INC> ; ính kèm file có sn trong thư viên.

ORG 0000H ; a ch Vectơ Reset

- CHN BANK ; Da vào thanh ghi Status chn bank phù h p- CHN I/O ;Da vào mc ích thit k, chn ngõ vào/ra

; phù h p.

MAIN ;Bt u vit chươ ng trình

- ; Thc thi chươ ng trình

Page 27: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 27/126

Giáo trình Vi iu Khin

27

-

GOTO $ ; Vòng lp vô hn

END ; Kt thúc chươ ng trình

Ví d: Vit chươ ng trình xut ra chân RB7 mc cao.

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>ORG 0000H

BCF STATUS,6 ; Chn bank0

BCF STATUS,5 ; Chn bank0

CLRF PORTB ; Xóa PORTB

BSF STATUS,5 ; Chn bank1

BCF TRISB,7 ; Khai báo RB7 là output

BCF STATUS,5 ; Tr li bank0

BSF PORTB,7 ; Set RB7 mc cao

GOTO $ ; To vòng lp vô hn

END

bit khai báo I/O như th nào? chúng ta có th nm cách thc khai báo I/O c th như 

sau:

-  Thanh ghi TRISA chn tính I/O cho PORTA

-  Thanh ghi TRISB chn tính I/O cho PORTB

-  Thanh ghi TRISC chn tính I/O cho PORTC

-  Thanh ghi TRISD chn tính I/O cho PORTD

-  Thanh ghi TRISE chn tính I/O cho PORTECách chn cũng khá ơ n gin:

Mun xác lp ch c năng ca mt chân trong PORTA là input, ta "set" bit iu

khin tươ ng  ng v i chân ó trong thanh ghi TRISA và ngư c li, mun xác lp

ch c năngca mt chân trong PORTA là output, ta "clear" bit iu khin tươ ng

 ng v i chân ó trong thanh ghi TRISA. Thao tác này hoàn toàn tươ ng t i v i các

PORT và các thanh ghi iu khin tươ ng ng TRIS (i v i PORTA là TRISA, i v i

PORTB là TRISB, i v i PORTC

là TRISC, i v i PORTD là TRISD vài v i PORTE là TRISE). Ví d:

Chúng ta mun RA1 là output, RA0 là input

BCF TRISA,1

BSF TRISA,0

Tươ ng t, RB5 là input, RB7 là output

BSF TRISB,5

Page 28: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 28/126

Giáo trình Vi iu Khin

28

BCF TRISB,7

BÀI TP THAM KHOBài tp 1:Vit chươ ng trình to xung vuông ti chân RB7, có tn s f = 50hz (thch anh 4Mhz)Ta có:T= 1/f = 20.000µS

=>Td = 10.000 µSPROCESSOR 16F877A#INCLUDE <P16F877A.INC>DEM2 EQU 20HDEM1 EQU 21HORG 0000H

BCF STATUS,6BCF STATUS,5CLRF PORTBBSF STATUS,5BCF TRISB,7

BCF STATUS,5MAINBSF PORTB,7CALL DELAYBCF PORTB,7CALL DELAYGOTO MAIN

DELAYMOVLW D'33'MOVWF DEM1

LOOP

DECFSZ DEM1GOTO LOOP1GOTO THOAT

LOOP1MOVLW D'100'MOVWF DEM2

LOOP3DECFSZ DEM2GOTO LOOP3GOTO LOOP

THOAT

NOPRETURNEND

Bài tp 2:Vit chươ ng trình iu khin èn: trng thái ban u èn tt, nhn N buông ra ènsang. Nu èn ang sang nhn N buông ra èn tt và ngư c li.

Page 29: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 29/126

Giáo trình Vi iu Khin

29

PIC 16F877A

5V

R

RB0

N

RB7

R1

R

LED

 

Hình 3.1

PROCESSOR 16F877A#INCLUDE <P16F877A.INC>ORG 0000H

BCF STATUS,6

BCF STATUS,5CLRF PORTBBSF STATUS,5BSF TRISB,0BCF TRISB,7BCF STATUS,5

MAINBTFSS PORTB,0GOTO LOOP1GOTO MAIN

LOOP1

BTFSC PORTB,0GOTO LOOP2GOTO LOOP1

LOOP2BTFSS PORTB,7GOTO ONGOTO OFF

OFFBCF PORTB,7GOTO MAIN

ON

BSF PORTB,7GOTO MAINEND

Bài tp 3:Vit chươ ng trình iu khin èn cu thang: Nu èn ang tt nhn N1(hoc N2), ribuông ra èn sáng và ngư c li.

Page 30: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 30/126

Giáo trình Vi iu Khin

30

PIC 16F877A

Q1

N2

LAMP

N1

R

R

RA0

H I     

RA2

5V

RA1

R 220V

Vcc

 

Hình 3.2

PROCESSOR 16F877A#INCLUDE <P16F877A.INC>ORG 0000H

BCF STATUS,6BCF STATUS,5CLRF PORTABSF STATUS,5BSF TRISA,0BSF TRISA,1BCF TRISA,2

BCF STATUS,5MAINBTFSC PORTA,0GOTO LOOP1GOTO KT_1

LOOP1BTFSS PORTA,1GOTO KT_2GOTO MAIN

KT_1BTFSS PORTA,0

GOTO KT_1GOTO ON/OFFKT_2

BTFSS PORTA,1GOTO KT_2GOTO ON/OFF

ON/OFFBTFSS PORTA,2GOTO ONGOTO OFF

Page 31: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 31/126

Giáo trình Vi iu Khin

31

ONBSF PORTA,2GOTO MAIN

OFFBCF PORTA,2GOTO MAINEND 

3.4. CÁC KHI GIAO TIP3.4.1. GIAO TIP V I LED 7 OAN 

Trong các thit b, báo trng thái hot ng ca thit b ó cho ngư i s dng v i

thông s ch là các dãy s ơ n thun, thư ng ngư i ta s dng "led 7 on". Led 7 on

ư c s dng khi các dãy s không òi hi quá phc tp, ch cn hin th s là , chng

hn led 7 on ư c dùng hin th nhit phòng, trong các ng h treo tư ng bng

in t, hin th s lư ng sn phm ư c kim tra sau mt công on nào ó...

Led 7 on có cu to bao gm 7 led ơ n có dng thanh xp theo hình và có thêm

mt led ơ n hình tròn nh th hin du chm tròn  góc dư i, bên phi ca led 7 on.

Tám led ơ n trên led 7 on có Anode(cc +) hoc Cathode(cc -) ư c ni chung v i

nhau vào mt im, ư c ưa chân ra ngoài kt ni v i mch in. 8 cc còn li trên

mi led ơ n ư c ưa thành 8 chân riêng, cũng ư c ưa ra ngoài kt ni v i mch

in. Nu led 7 on có Anode(cc +) chung, u chung này ư c ni v i +Vcc, các chân

còn li dùng  iu khin trng thái sáng tt ca các led ơ n, led ch sáng khi tín hiu

t vào các chân này  mc 0. Nu led 7 on có Cathode(cc -) chung, u chung này

ư c ni xung Ground (hay Mass), các chân còn li dùng  iu khin trng thái sáng

tt ca các led ơ n, led ch sáng khi tín hiu t vào các chân này  mc 1.

K chung A chung  

Hình 3.3 Vì led 7 on cha bên trong nó các led ơ n, do ó khi kt ni cn m bo dòng

qua mi led ơ n trong khong 10mA-20mA bo v led.

Nu kt ni v i ngun 5V có th hn dòng bng in tr 330 trư c các chân nhn

tín hiu iu khin

Sơ   v trí các led ư c trình bày như hình bên: Các in tr 330 là các in tr bên

ngoài ư c kt ni gi i hn dòng in qua led nu led 7 on ư c ni v i ngun 5V.

Page 32: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 32/126

Giáo trình Vi iu Khin

32

Chân nhn tín hiu a iu khin led a sáng tt, ngõ vào b  iu khin led b. Tươ ng t 

v i các chân và các led còn li

Hình 3.4:Ký hiu Led 7 on 

Hình 3.5: Dng s hin th lên Led 7 on 

Hình 3.6: Hình dng Led 7 on

Bài tp 1:Vit chươ ng trình hin th s “3”

Page 33: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 33/126

Giáo trình Vi iu Khin

33

a

HI    

e

PIC16F877A

15161718 23

242526

31

12

1

13

11

32

234567

3334353637383940

1920 21

22

2728

2930

89

10

14

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2RC2/CCP1RC3/SCK/SCL RC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GND

GND

MCLR/VPP

OSC1/CLKI

VDD

VDD

RA0/AN0RA1/AN1RA2/AN2/VRef -/CVRefRA3/AN3/VRef+RA4/T0CKI/C1OUTRA5/AN4/SS/C2OUT

RB0/INTRB1RB2

RB3/PGMRB4RB5

RB6/PGCRB7/PGD

RD0/PSP0R D1/ PSP1 R D2/ PSP2

RD3/PSP3

RD4/PSP4RD5/PSP5

RD6/PSP6RD7/PSP7

RE0/RD/AN5RE1/WR/AN6RE2/CSAN7

OSC2/CLKO

        A B C D E F G H

    V    C    C

    V    C    C

g

Vcc

d

 b

f

c

 

Hình 3.7

PROCESSOR 16F877A#INCLUDE <P16F877A.INC>ORG 0000H

BCF STATUS,6BCF STATUS,5CLRF PORTBCLRF PORTC

BSF STATUS,5CLRF TRISBBCF TRISC,4BCF STATUS,5

MAINBSF PORTC,4

MOVLW B’011 0000’MOVWF PORTBGOTO $

ENDBài tp 2:Tuy nhiên, hin th 2 s ví d như “37” chúng ta không nht thit phi dùng 2 port, mà

có th ghép song song 2 led 7 on. hin th s “37”, ti mt th i im ta cho mt con

Led sáng. Th i gian ch p tt liên tc (tn s khong 40 Hz) làm cho mt ta có cm giác

như 2 Led ang sáng liên tc. Phươ ng pháp này gi là “quét led”

Page 34: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 34/126

Giáo trình Vi iu Khin

34

a

HI    

e

PIC16F877A

15161718 23

242526

31

12

1

13

11

32

234567

3334353637383940

1920 21

22

27

282930

89

10

14

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2RC2/CCP1RC3/SCK/SCL RC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GND

GND

MCLR/VPP

OSC1/CLKI

VDD

VDD

RA0/AN0RA1/AN1RA2/AN2/VRef-/C VRefRA3/AN3/VRef+RA4/T0CKI/C1OUTRA5/AN4/SS/C2OUT

RB0/INTRB1RB2

RB3/PGMRB4RB5

RB6/PGCRB7/PGD

RD0/PSP0RD 1/PSP1 RD2/PSP2

RD3/PSP3

RD4/PSP4RD5/PSP5

RD6/PSP6RD7/PSP7

RE0/RD/AN5RE1/WR/AN6RE2/CSAN7

OSC2/CLKO

        A B C D E F G H

    V    C    C

    V    C    C

        A B C D E F G H

    V    C    C

    V    C    C

g

Vcc

d

 b

f

c

 Hình 3.8

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM1 EQU 20H

DEM2 EQU 21H ORG 0000H

BCF STATUS,6

BCF STATUS,5

CLRF PORTB

CLRF PORTC

BSF STATUS,5

CLRF TRISB

BCF TRISC,4

BCF TRISC,5

BCF STATUS,5

MAIN

BSF PORTC,4

BCF PORTC,5

MOVLW B’0110000’

MOVWF PORTB

Page 35: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 35/126

Giáo trình Vi iu Khin

35

CALL DELAY_10ms

BCF PORTC,4

BSF PORTC,5

MOVLW B’1111000’

MOVWF PORTB

CALL DELAY_10msGOTO MAIN

DELAY_10ms

MOVLW D'33'MOVWF DEM1

LOOPDECFSZ DEM1GOTO LOOP1GOTO THOAT

LOOP1

MOVLW D'100'MOVWF DEM2LOOP3

DECFSZ DEM2GOTO LOOP3GOTO LOOP

THOATNOPRETURN

END

3.4.2. GIAO TIP V I BÀN PHÍM HEX

Khi giao tip v i bàn phím Hex như hình 3.9 ta chn RB0÷RB3 là output, RB4÷RB7 là

input. Ban u ta cho RB3RB2RB1RB0=1110 sau ó chúng ta kim tra ngõ vào t 

RB4÷RB7 xác nh ti v trí nào mc thp tươ ng ng v i nút nhn ó ư c tác ng.

Nu RB4=0 tc là vi trí s “0” ư c nhn, tươ ng t RB5=0 thì s “1” ư c nhn. ....

Tip theo ta cho RB3RB2RB1RB0=1101, khi ó kim tra nu RB4 =0 thì nút s “4” thì

ư c nhn.....

Page 36: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 36/126

Giáo trình Vi iu Khin

36

R1470

R2470

R3470

R4470

0 1 2 3

4 56 7

89 A

B

C D E F

RB0

RB1

RB2

RB3

RB4 RB5 RB6 RB7

 Hình 3.9

DOC_BP

MOVLW B’1110’

MOVWF PORTB

BTFSS PORTB,4

RETLW D'0'

BTFSS PORTB,5RETLW D'1'

BTFSS PORTB,6

RETLW D'2'

BTFSS PORTB,7

RETLW D'3'

Page 37: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 37/126

Giáo trình Vi iu Khin

37

MOVLW B’1101’

MOVWF PORTB

BTFSS PORTB,4

RETLW D'4'

BTFSS PORTB,5

RETLW D'5'

BTFSS PORTB,6

RETLW D'6'

BTFSS PORTB,7

RETLW D'7'

MOVLW B’1011’

MOVWF PORTB

BTFSS PORTB,4

RETLW D'8'

BTFSS PORTB,5

RETLW D'9'

BTFSS PORTB,6

RETLW 0AH

BTFSS PORTB,7

RETLW 0BH

MOVLW B’0111’

MOVWF PORTB

BTFSS PORTB,4

RETLW 0CH

BTFSS PORTB,5

RETLW 0DH

BTFSS PORTB,6

RETLW 0EH

BTFSS PORTB,7

RETLW 0FH

RETURN

Page 38: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 38/126

Giáo trình Vi iu Khin

38

3.4.3. GIAO TIP V I LED MA TRN

Hình 3.10

H1

H2

H3

H4

H5

H6

H7

H8

C1 C2 C3 C4 C5 C6 C7 C8

 Hình 3.11 

Led matrn hin th 1 ký t chúng ta dùng phươ ng pháp quét, cũng như quét led 7on,   ây chúng ta dùng cách quét ct. Tc là ti mt th i im ch cho 1 ct ct sángbng cách tác ng cho hàng và ct tích cc h p lý.

Page 39: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 39/126

Giáo trình Vi iu Khin

39

Ví d: iu khin hàng là portb (RB0→H1, RB1→H2 ........ RB7→H8), iu khin ct làportd (RD0→C1, RD1→C2 ........ RD7→C8). hin ch “N” ta vit như sau:MAIN

MOVLW B’11111111’MOVWF PORTBMOVLW B’11111110’MOVWF PORTDCALL DELAY

MOVLW B’11111111’MOVWF PORTBMOVLW B’11111101’MOVWF PORTDCALL DELAY

MOVLW B’00000011’

MOVWF PORTBMOVLW B’11111011’MOVWF PORTDCALL DELAY

MOVLW B’00000110’MOVWF PORTBMOVLW B’11110111’MOVWF PORTDCALL DELAY

MOVLW B’00001100’MOVWF PORTBMOVLW B’11101111’MOVWF PORTDCALL DELAY

MOVLW B’00011000’MOVWF PORTBMOVLW B’11011111’MOVWF PORTDCALL DELAY

MOVLW B’11111111’MOVWF PORTBMOVLW B’10111111’MOVWF PORTDCALL DELAY

MOVLW B’11111111’MOVWF PORTB

Page 40: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 40/126

Giáo trình Vi iu Khin

40

MOVLW B’01111111’MOVWF PORTDCALL DELAY

GOTO MAIN; TAO TRE 2.5mS = 2500uSDELAY

MOVLW D'8'MOVWF DEM1

LOOPDECFSZ DEM1GOTO LOOP1GOTO THOAT

LOOP1MOVLW D'104'MOVWF DEM2

LOOP3

DECFSZ DEM2GOTO LOOP3GOTO LOOP

THOATNOPRETURN

END3.4.4 GIAO TIP V I LCD

Hình 3.12 

Page 41: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 41/126

Giáo trình Vi iu Khin

41

Bên trong LCD có 2 thanh ghi 8 bit quan trng : Thanh ghi lnh IR (Instructor Register)và thanh ghi d liu DR (Data Register)Thanh ghi IR :  iu khin LCDNhư vy  iu khin LCD chúng ta cn ưa mã lnh iu khin thích h p vào thanh ghiIR thông qua bng mã sau:

Bng mã lnhMã S Hex Lnh Đn Thanh Ghi Ca LCD

01 Xóa màn hình hin th 02 Tr v đu dòng04 Gim con tr (dch con tr sang trái)06 Tăng con tr (dch con tr sang phi)05 Dch hin th sang phi07 Dch hin th sang trái08 Tt con tr, tt hin th 0A Bt con tr, tt hin th 0C Tt con tr, bt hin th 

0E Nhp nháy con tr, bt hin th 0F Tt con tr, nhp nháy con tr 10 Dch v trí con tr sang trái14 Dch v trí con tr sang phi18 Dch toàn b hin th sang trái1C Dch toàn b hin th sang phi80 Đưa con tr v đu dòng th nhtC0 Đưa con tr v đu dòng th hai38 Cài LCD chy ch đ 2 dòng và dùng ma trn 5 x 7

Ví d: Mun xóa màn hình chúng ta cn ưa giá tr 01H vào IRThanh ghi DR : Thanh ghi DR dùng cha d liu 8 bit ghi vào vùng RAM

DDRAM hoc CGRAM (ch  ghi) hoc dùng cha d liu t 2 vùng RAM này g ira cho MCU ( ch  c).DR cũng là thanh Ram cha d liu cn hin th lên LCD.Ví d:  hin th lên LCD ch “A” chúng ta ưa giá tr 65 vào DR (mã ascii ca A là65) ưa giá tr thích h p vào IR hoăc DR thông qua 3 chân iu khin: E, RS và RW

Bng chc năng chânS 

ChânTên Gi Chc Năng

1 VSSChân ni đt cho LCD, khi thit k mch ta ni chân

này vi GND ca mch điu khin.

2 VDDChân cp ngun cho LCD, khi thit k mch ta ni

chân này vi VCC=5V ca mch điu khin.

3 VEEChân này dùng đ  điu ch nh đ tương phn ca

LCD. Khi thit k ni chân này vi chân điu ch nh cabin tr khong 5K đn 10k.

4 RS

Chân chn thanh ghi (Register select). Ni chân RS

vi logic “0” (GND) hoc logic “1” (VCC) đ chn thanh

ghi.

Page 42: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 42/126

Giáo trình Vi iu Khin

42

+ Logic “0”: Bus DB0-DB7 s ni vi thanh ghi lnh

IR ca LCD ( ch đ “ghi” - write) hoc ni vi b 

đm đa ch ca LCD ( ch đ “đc” - read)

+ Logic “1”: Bus DB0-DB7 s ni vi thanh ghi d liu DR bên trong LCD.

5 R/W

Chân chn ch  đ  đc/ghi (Read/Write). Ni chân

R/W vi logic “0” đ LCD hot đng ch đ ghi, hocni vi logic “1” đ LCD ch đ đc.

6 E

Chân cho phép (Enable). Sau khi các tín hiu đưc

đt lên bus DB0-DB7, các lnh ch  đưc chp nhn khi

có 1 xung cho phép ca chân E (xung này có đ rng

hơn >= 4us).+ ch đ ghi: D liu bus s đưc LCD chuyn

vào (chp nhn) thanh ghi bên trong nó khi pháthin mt xung (high-to-low transition) ca tín hiuchân E.

+ ch đ đc: D liu s đưc LCD xut ra DB0-DB7 khi phát hin cnh lên (low-to-high transition) chân E và đưc LCD gi  bus đn khi nàochân E xung mc thp.

7 --> 14 D0 --> D7

Tám đưng ca bus d liu dùng đ trao đi thông

tin vi MPU. Có 2 ch đ s dng 8 đưng bus này :

+ Ch  đ 8 bit : D liu đưc truyn trên c 8

đưng, vi bit MSB là bit DB7.

+ Ch đ 4 bit : D liu đưc truyn trên 4 đưng

t DB4 ti DB7, bit MSB là DB7.

Chi tit s dng 2 giao thc này đưc đ cp phn

sau.

15 A Chân dương (+) ca đèn nn LCD.16 K Chân âm (-) ca đèn nn LCD.

Ví d:Cho sơ   như hình 3.13. Vit chươ ng trình cho LCD hin th s “0”  gia hàng th nht.

Page 43: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 43/126

Giáo trình Vi iu Khin

43

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24RC4/SDI/SDA 23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

    D    7

    1    4

    D    6

    1    3

    D    5

    1    2

    D    4

    1    1

    D    3

    1    0

    D    2

    9

    D    1

    8

    D    0

    7

    E

    6

    R    W

    5

    R    S

    4

    V    S    S

    1

    V    D    D

    2

    V    E    E

    3

LCD2LM016L

 

Hình 3.13

PROCESSOR 16F877A#INCLUDE <P16F877A.INC>TAM EQU 20HDEM1 EQU 21HDEM2 EQU 22HDEM3 EQU 23H

ORG 0000H

BSF STATUS,5

BCF STATUS,6CLRF TRISBCLRF TRISEBCF STATUS,5CLRF PORTBCLRF PORTE

MAINMOVLW 01h ; Dua 01h vào IR, xóa màn hìnhMOVWF TAMCALL KHOITAO

Page 44: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 44/126

Giáo trình Vi iu Khin

44

CALL DELAY; Tao tre

MOVLW 38h; Dua 38h vào IR, khoi tao LCD 2 hangMOVWF TAMCALL KHOITAOCALL DELAY

MOVLW 0Eh ; ; Dua 0eh vào IR, nhap nhay con tro, bat hien thiMOVWF TAMCALL KHOITAOCALL DELAY

MOVLW 87hMOVWF TAMCALL KHOITAOCALL DELAY

MOVLW D'48'MOVWF TAMCALL XUATLCDCALL DELAYGOTO $

XUATLCDMOVLW B'101' ; E=1, RW=0, RS=1MOVWF PORTEMOVF TAM,0MOVWF PORTB

MOVLW B'001' ; E=0 tao canh xuongMOVWF PORTERETURN

KHOITAOMOVLW B'100'; ; E=1, RW=0, RS=0MOVWF PORTEMOVF TAM,0MOVWF PORTBMOVLW B'000'MOVWF PORTERETURN

DELAY MOVLW D'20'MOVWF DEM1

LOOPDECFSZ DEM1GOTO LOOP1GOTO THOAT

LOOP1

Page 45: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 45/126

Giáo trình Vi iu Khin

45

MOVLW D'100'MOVWF DEM2

LOOP3DECFSZ DEM2GOTO LOOP3GOTO LOOP

THOATNOP

RETURN

END

Page 46: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 46/126

Giáo trình Vi iu Khin

46

CHƯƠNG 4CÁC KHI CH C NĂNG

4.1.B NH TH I 

4.1.1.TIMER 0

ây là mt trong ba b m hoc b nh th i ca vi iu khin PIC16F877A. Timer0

là b m 8 bit ư c kt ni v i b chia tn s (prescaler) 8 bit. Cu trúc ca Timer0 chophép ta la chn xung clock tác ng và cnh tích cc ca xung clock. Ngt Timer0 s 

xut hin khi Timer0 b tràn. Bit TMR0IE (INTCON<5>) là bit iu khin ca

Timer0.TMR0IE=1 cho phép ngt Timer0 tác ng, TMR0IF= 0 không cho phép ngt

Timer0 tác ng.

Sơ   khi ca Timer0 như sau: 

Hình 4.7: Cu trúc bên trong ca b nh th i Timer0 Mun Timer0 hot ng  ch  Timer ta clear bit TOSC (OPTION_REG<5>), khi

ó giá tr thanh ghi TMR0 s tăng theo tng chu kì xung ng h (tn s vào Timer0

bng ¼tn s oscillator). Khi giá tr thanh ghi TMR0 t FFh tr v 00h, ngt Timer0 s 

xut hin.Thanh ghi TMR0 cho phép ghi và xóa ư c giúp ta n nh th i im ngt

Timer0 xut hin mt cách linh ng.

Mun Timer0 hot ng  ch  counter ta set bit TOSC (OPTION_REG<5>). Khi

Page 47: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 47/126

Giáo trình Vi iu Khin

47

ó xung tác ng lên b m ư c ly t chân RA4/TOCK1. Bit TOSE

(OPTION_REG<4>) cho phép la chn cnh tác ng vào bt m. Cnh tác ng s là

cnh lên nu TOSE=0 và cnh tác ng s là cnh xung nu TOSE=1.

Khi thanh ghi TMR0 b tràn, bit TMR0IF (INTCON<2>) s ư c set. ây chính là c  

ngt ca Timer0. C ngt này phi ư c xóa bng chươ ng trình trư c khi b m bt u

thc hin li quá trình m. Ngt Timer0 không th "ánh thc" vi iu khin t ch  sleep. B chia tn s (prescaler) ư c chia s gi a Timer0 và WDT (Watchdog

Timer). iu ó có ngh ĩ a là nu prescaler ư c s dng cho Timer0 thì WDT s không

có ư c h tr ca prescaler và ngư c li. Prescaler ư c iu khin b i thanh ghi

OPTION_REG. Bit PSA (OPTION_REG<3>) xác nh i tư ng tác ng ca prescaler.

Các bit PS2:PS0 (OPTION_REG<2:0>) xác nh t s chia tn s ca prescaler. Xem li

thanh ghi OPTION_REG xác nh li mt cách chi tit v các bit iu khin trên.

Các lnh tác ng lên giá tr thanh ghi TMR0 s xóa ch  hot ng ca prescaler.

Khi i tư ng tác ng là Timer0, tác ng lên giá tr thanh ghi TMR0 s xóa prescaler

nhưng không làm thay i i tư ng tác ng ca prescaler. Khi i tư ng tác ng là

WDT,lnh CLRWDT s xóa prescaler, ng th i prescaler s ngưng tác v h tr cho

WDT

Chú ý:

* Thanh ghi liên quan n Timer0: TMR0 (a ch 01h, 101h) : cha giá tr m

ca Timer0. (chi tit xem bng ph lc trang 96 )

*Thanh ghi iu khin Timer0:

OPTION_REG (a ch 81h, 181h): iu khin prescaler.

Thanh ghi này cho phép c và ghi, cho phépiu khin chc năng pull-up ca cácchân trong PORTB, xác lp các tham s v xung tácng, cnh tác ng ca ngt ngoi vi

và b m Timer0.Thanh ghi tùy chn cha các bit iu khin cu hình cho các cha

năng như:

ngt ngoài, Timer 0 chc năng kéo lên Vdd ca các chân Port B, và th i gian ch ca

WDT.

Bit 7 RBPU : Bit cho phép PORTB ư c kéo lên ngun.

1: Không cho phép PORTB kéo lên ngun.

0: Cho phép PORTB kéo lên ngun.

Bit 6 INTEDG: Bít la chn cnh tác ng ngt (INTERRUPT EDGE)

1: Ngt s ư c tác ng b i cnh lên ca chân RB0/INT 

Page 48: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 48/126

Giáo trình Vi iu Khin

48

0: Ngt s ư c tác ng b i cnh xung ca chân RB0/INT 

Bit 5 T0CS: Bit la chn ngun xung Clock cho Timer 0 

1: Xung Clock cung cp b i ngun ngoài qua chân RA4/T0CKI 

0: Xung Clock cung cp b i ngun dao ng ni. 

Bit 4 T0SE: Bit la chn cnh nào ca xung clock (bên ngoài) tác ng lên timer 0 

1: Cnh xung0: Cnh lên

Bit 3 PSA: Bit quyt nh tc  m PS2:PS0 s tác ng lên Timer 0 hay WDT

1: Tc  m PS2:PS0 s tác ng lên WDT 

0: Tc  m PS2:PS0 s tác ng lên Timer 0 

Bit 2-0 PS2:PS0: Dùng la chn tc  m ca timer hay WDT 

Chú ý1:

Các bư c vit chươ ng trình Delay dùng Timer0+ Chn chia tn OPTION_REG <2÷0 > 

+ t giá tr vào thanh ghi TMR0

+ Cho phép b nh th i Timer0 hot ng (cho bit OPTION_REG <5> =0) 

+ Kim tra m xong chưa? Kim tra c tràn.

Chú ý2: 

Các bư c vit chươ ng trình c xung dùng Timer0

a.  không có chia tn (có 1 xung thì giá tr trong TRM0 tăng 1 ơ n v)

BSF OPTION_REG,4; chn tác ng cnh xungBSF OPTION_REG,5

BSF OPTION_REG,3 

b.  có chia tn (có nhiu xung thì giá tr trong TRM0 tăng 1 ơ n v, tùy thuc vào

giá tr chia tn. nu chia tn 1:8 thì có 8 xung c v TM0 tăng 1 ơ n v)

BSF OPTION_REG,4; chn tác ng cnh xung

BCF OPTION_REG,3

Page 49: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 49/126

Giáo trình Vi iu Khin

49

+ thc hin chia tn OPTION_REG <2÷0 > 

BSF OPTION_REG,5; cho phép c xung 

Ví du1:

Vit chươ ng trình con to tr 40ms, thch anh 4Mhz 

DELAY

BSF STATUS,5; Chn bank 1

BCF STATUS,6; Chn bank1

BCF OPTION_REG,3 ; Kt qu tác đng lên TMR0

BCF OPTION_REG,2; Chn chia tn 1:4

BCF OPTION_REG,1

BSF OPTION_REG,0

BCF STATUS,5; Tr li bank0

MOVLW D'50'

MOVWF DEM; Gián giá tr DEM=50BATDAU

MOVLW D'55'

MOVWF TMR0; TMR0= 55

BSF STATUS,5

BCF OPTION_REG,5; Cho phép b đnh thi hot đng

BCF STATUS,5

LOOP

BTFSS INTCON,2; Đm xong chưa?

GOTO LOOPBCF INTCON,2; Xóa c tràn

DECFSZ DEM,1; Gim giá tr đm 1 đơn v 

GOTO BATDAU

RETURN 

4.1.2.TIMER1

Timer1 là b nh th i 16 bit, giá tr ca Timer1 s ư c lưu trong hai thanh ghi

(TMR1H:TMR1L). C ngt ca Timer1 là bit TMR1IF (PIR1<0>). Bit iu khin ca

Timer1 s là TMR1IE (PIE<0>).Tươ ng t như Timer0, Timer1 cũng có hai ch  hot

ng: ch  nh th i (timer)v i xung kích là xung clock ca oscillator (tn s ca timerbng ¼ tn s ca oscillator) và ch  m (counter) v i xung kích là xung phn ánh các

s kin cn m ly t bên ngoài thông qua chân RC0/T1OSO/T1CKI (cnh tác ng là

cnh lên). Vic la chn xung tác ng (tươ ng ng v i vic la chn ch  hot ng là

timer hay counter) ư c iu khin b i bit TMR1CS (T1CON<1>). Sau ây là sơ   khi

ca Timer1:

Page 50: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 50/126

Giáo trình Vi iu Khin

50

Hình 4.8: Cu trúc bên trong ca b nh th i Timer1

Ngoài ra Timer1 còn có chc năng reset input bên trong ư c iu khin b i mttrong hai khi CCP (Capture/Compare/PWM).

Khi bit T1OSCEN (T1CON<3>) ư c set, Timer1 s ly xung clock t hai chân

RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung m. Timer1 s bt u m sau

cnh xung u tiên ca xung ngõ vào. Khi ó PORTC s b qua s tác ng ca hai bit

TRISC<1:0> và PORTC<2:1> ư c gán giá tr 0. Khi clear bit T1OSCEN Timer1 s ly

xungm t oscillator hoc t chân RC0/T1OSO/T1CKI. Timer1 có hai ch  m là

ng b (Synchronous) và bt ng b (Asynchronous). Ch  m ư c quyt nh b i

bit iu khin (T1CON<2>). Khi =1 xung m ly t bên ngoài s không ư c ng b 

hóa v i xung clock bên trong, Timer1 s tip tc quá trình m khi vi iu khin ang   

ch  sleep và ngt do Timer1 to ra khi b tràn có kh năng "ánh thc" vi iu khin.

ch  m bt ng b,Timer1 không th ư c s dng làm ngun xung clock cho

khi CCP(Capture/Compare/Pulse width modulation). Khi =0 xung m vào Timer1 s 

ư c ng b hóa v i xung clock bên trong. ch  này Timer1 s không hot ng khi

vi iu khin ang  ch  sleep.

Chú ý:

*Các thanh ghi liên quan n Timer1 bao gm:

INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngt hot ng (GIE và PEIE).PIR1 (a ch 0Ch): cha c ngt Timer1 (TMR1IF).

PIE1( a ch 8Ch): cho phép ngt Timer1 (TMR1IE).

TMR1L (a ch 0Eh): cha giá tr 8 bit thp ca b m Timer1.

TMR1H (a ch 0Eh): cha giá tr 8 bit cao ca b m Timer1.

Các thanh ghi trên chi tit xem bng ph lc trang 96

*Thanh iu khin Timer1:

Page 51: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 51/126

Giáo trình Vi iu Khin

51

T1CON (a ch 10h): xác lp các thông s cho Timer1.

Bit 7,6 Không s dng, c là 0.Bit 5,4 T1CKPS1 : T1CKPS0 : Các bit chn t l xung ngõ vào cho Timer1.

11 1 : 8 giá tr t l 

10 1 : 4 giá tr t l 

01 1 : 2 giá tr t l 

00 1 : 1 giá tr t l 

Bit 3 T10SCEN : Bit cho phép b dao ng Timer 1 Oscillator

1 : Cho phép dao ng

0 : Không cho phép dao ngBit 2 T1SYNC : Bit la chn ng b hóa xung clock ngoài ca Timer 1

(Chú ý: Bit này ch có tác dng khi bit TMR1CS = 1)

1: Không ng b hóa xung clock ngoi

0: ng b hóa xung clock ngoi.

Bit 1 TMR1CS : Bit chn ngun xung clock cho Timer 1

1: Chn xung clock ngoài qua chân T1OSC/T1CKI ( tác ng cnh lên)

0: Chn xung clock ni (Fosc/4)

Bit 0 TMR1ON: Bit cho phép ngoc ngưng Timer 1 

1: Cho phép

0: Không cho phép

Chi tit v các thanh ghi khác s ư c trình bày c th trong ph lc 2.

Chú ý:

Các bư c vit chươ ng trình Delay dùng Timer1:

+ Chn chia tn thông qua thanh ghi T1CON 

+ t giá tr vào thanh ghi TMR1 ( 8 bit cao ưa vào TMR1H, 8 bit thp ưa vào

TMR1L)

+ Cho phép b nh th i Timer0 hot ng (set bit T1CON<0>) + Kim tra m xong chưa? Kim tra c tràn. 

Ví du:

Vit chươ ng trình con to tr 1s, thch anh 4Mhz

DELAY

BCF STATUS,5

MOVLW b'00000000'; Chn chia tn 1:1 

Page 52: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 52/126

Giáo trình Vi iu Khin

52

MOVWF T1CON

MOVLW d'20'; DEM=20

MOVWF DEM

BATDAU

MOVLW 3CH

MOVWF TMR1H; TMR1H=B’0011 1100’MOVLW AFH

MOVWF TMR1L; TMR1L=B’1010 1111’

=> TMR1=15535

BSF T1CON,0; Cho phép b nh th i hot ng

LOOP

BTFSS PIR1,0

GOTO LOOP ;m xong chưa?

BCF PIR1,0

DECFSZ DEM,1; Gim giá tr m 1 ơ n v 

GOTO BATDAU

RETURN 

4.1.3.TIMER2

Timer2 là b nh th i 8 bit và ư c h tr b i hai b chia tn s prescaler va

postscaler. Thanh ghi cha giá tr m ca Timer2 là TMR2. Bit cho phép ngt Timer2

tác ng là TMR2ON (T2CON<2>). C ngt ca Timer2 là bit TMR2IF (PIR1<1>).

Xung ngõ vào (tn s bng ¼ tn s oscillator) ư c ưa qua b chia tn s prescaler 4 bit

(v i các t s chia tn s là 1:1, 1:4 hoc 1:16 và ư c iu khin b i các bitT2CKPS1:T2CKPS0

(T2CON<1:0>)). 

Hình 4.9: Cu trúc bên trong ca b nh th i Timer2

Page 53: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 53/126

Giáo trình Vi iu Khin

53

Timer2 còn ư c h tr b i thanh ghi PR2. Giá tr m trong thanh ghi TMR2 s tăng

t 00h n giá tr cha trong thanh ghi PR2, sau ó ư c reset v 00h. Khi reset thanh ghi

PR2 ư c nhn giá tr mc nh FFh.

Ngõ ra ca Timer2 ư c ưa qua b chia tn s postscaler v i các mc chia t 1:1 n

1:16. Postscaler ư c iu khin b i 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra ca postscaler

óng vai trò quyt nh trong vic iu khin c ngt.Ngoài ra ngõ ra ca Timer2 còn ư c kt ni v i khi SSP, do ó Timer2 còn óng

vai trò to ra xung clock ng b cho khi giao tip SSP.

Chú ý:

*Các thanh ghi liên quan n Timer2 bao gm: 

INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn b các ngt (GIE và PEIE).

PIR1 (a ch 0Ch): cha c ngt Timer2 (TMR2IF).

PIE1 (a ch 8Ch): cha bit iu khin Timer2 (TMR2IE).

TMR2 (a ch 11h): cha giá tr m ca Timer2.

Các thanh ghi trên chi tit xem bng ph lc trang 96

*Thanh iu khin Timer2:

T2CON (a ch 12h): xác lp các thông s cho Timer2.

Bit 7: không s dngBit 6:3 TOUTPS3:TOUTPS0: Bit chn t l ngõ ra ca Timer 2

0000: 1:1 T l ngõ ra

0001: 1:2 T l ngõ ra

.

1111: 1:16 T l ngõ ra

Bit 2 TMR2ON: Bit cho phép hot ng ca Timer 2

1: Cho phép

0: Không cho phép.

Bit 1:0 T2CKPS1:T2CKPS0: Bit chn t l ngõ vào ca Timer 2

00 : Prescaler 1

01 : Prescaler 4

1x : Prescaler 16 

4.2. ADC 

ADC (Analog to Digital Converter) là b chuyn i tín hiu gia hai dng tươ ng t và

s. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hiu in th chun

Page 54: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 54/126

Giáo trình Vi iu Khin

54

VREF có th ư c la chn là VDD, VSS hay hiu in th chun ư c xác lp trên hai

chân RA2 và RA3. Kt qu chuyn i t tín tiu tươ ng t sang tín hiu s là 10 bit s 

tươ ng ng và ư c lưu trong hai thanh ghi ADRESH:ADRESL. Khi không s dng b 

chuyn i ADC, các thanh ghi này có th ư c s dng như các thanh ghi thông thư ng

khác. Khi quá trình chuyn i hoàn tt, kt qu s ư c lưu vào hai thanh ghi

ADRESH:ADRESL, bit ADCON0<2>) ư c xóa v 0 và c ngt ADIF ư c set. 

Hình 4.10: Sơ   khi b chuyn i ADC: 

Page 55: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 55/126

Giáo trình Vi iu Khin

55

Hình 4.11: cách lư u kt qu chuyn i AD: 

Qui trình chuyn i t tươ ng t sang s bao gm các bư c sau:

Bư c 1: Chn s ngõ vào, in áp chun Uc.Bư c 2: Chn ngõ vào c th.

Bư c 3: Chn tn s chuyn i

Bư c 4: Chn nơ i cha kt qu chuyn i.

Bư c 5: Bt b chuyn i, cho phép b chuyn i hot ng

Bư c 6 :Kim tra chuyn i xong chưa? c kt qu v. Nu mun tip tc thì tr li

bư c 5.

Chú ý:

* Các thanh ghi liên quan n b chuyn i ADC bao gm:INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngt (các bit GIE, PEIE).

PIR1 (a ch 0Ch): cha c ngt AD (bit ADIF).

PIE1 (a ch 8Ch): cha bit iu khin AD (ADIE).

ADRESH (a ch 1Eh) và ADRESL (a ch 9Eh):thanh ghi cha kt qu.

PORTA (a ch 05h) và TRISA (a ch 85h): liên quan n I/O

PORTE (a ch 09h) và TRISE (a ch 89h): liên quan n I/O

Các thanh ghi trên chi tit xem bng ph lc trang 96

* Thanh ghi iu khin ADC:

ADCON0 (a ch 1Fh) và ADCON1 (a ch 9Fh): xác lp các thông s cho b 

chuyn i AD.

-  Thanh ghi iu khin ADCON0: 

Page 56: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 56/126

Giáo trình Vi iu Khin

56

Bit 7:6 ADCS1:ADCS0: Các bit la chn tn s chuyn i A/D

00 =FOSC/2

01 =FOSC/4

10 =FOSC/32

11 =FRC (xung clock ư c ly t dao ông ni RC)

Bit 5:3 CHS2:CHS0: Các bit la chn kênh Analog000: Kênh 0, (AN0)

001: Kênh 1, (AN1)

010: Kênh 2, (AN2)

011: Kênh 3, (AN3)

100: Kênh 4, (AN4)

101: Kênh 5, (AN5)

110: Kênh 6, (AN6)

111: Kênh 7, (AN7)

Bit 2 GO/ DONE: Bit báo trng thái chuyn i A/D

Khi bit ADON = 1

1: Quá trình A/D ang thc hin (Khi chúng ta set bit này lên thì quá trình

chuyn i s xy ra, khi quá trình kt thúc nó s t ng ư c xóa bng

phn mm).

0: Quá trình A/D không xy ra hoc ã hoàn tt.

Bit 1 Không s dng, giá tr là 0

Bit 0 ADON : Bit cho phép module A/D hot ng.

1: Ngun ư c cung cp cho A/D0: Ngưng cung cp ngun cho A/D

- Thanh ghi iu khin ADCON1: 

Bit 7 ADFM: Bit la chn nh dng kt qu A/D1: Canh phi, 6 bit cao nht ca thanh ghi ADRESH có giá tr 0

0: Canh trái, 6 bit thp nht ca thanh ghi ADRESL có giá tr 0

Bit 6 ADCS2: Bit la chn clock chuyn i A/D

Page 57: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 57/126

Giáo trình Vi iu Khin

57

Bit 5,4 không s dng

Bit 3:0 PCFG3:PCFG0: Các bit iu khin cu hình các chân ADC

Chi tit v các thanh ghi khác s ư c trình bày c th  ph lc trang 94.

Ví du:

Vit chươ ng trình con c ADC t ngõ RA1, Kt qu c v (8 bit ư c lưu trong

ADRESH) Uc =5v, tc chuyn i 1Mhz, thch anh 4Mhz.

DOC_ADC 

BSF STATUS,5BCF STATUS,6

;……………….Chn s ngõ vào……………………………………………

BCF ADCON1,3

BSF ADCON1,2

BCF ADCON1,1

BCF ADCON1,0

Page 58: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 58/126

Giáo trình Vi iu Khin

58

BCF STATUS,5

;……………….Chn ngõ vào………………………………………………

BCF ADCON0,5

BCF ADCON0,4

BSF ADCON0,3

;…………………Chn tn s ly mu……………………………………….BCF ADCON0,7

BCF ADCON0,6

BSF STATUS,5

BSF ADCON1,6

;………………...Chn nơ i lư u kt qu……………………………………………

BCF ADCON1,7

BCF STATUS,5

; ………………Cho phép b chuyn i ADC hot ng……………………….

BSF ADCON0,0

BSF ADCON0,2

;……………….Chuyn i xong chư a?……………………………………………

LOOP

BCF STATUS, 5

BTFSC ADCON0 ,2

GOTO LOOP

RETURN 

4.3. PWM_ IU CH  RNG XUNG Khi hot ng  ch  PWM (Pulse Width Modulation _ khi iu ch  rngxung), tín

hiu sau khi iu ch s ư c ưa ra các pin ca khi CCP (cn n nh các pin này là

output).

Các bư c cài t b PWM:

1. Thit lp th i gian ca 1 chu kì ca xung iu ch cho PWM (period) bng cách ưa

giá tr thích h p vào thanh ghi PR2.

2. Thit lp rng xung cn iu ch (duty cycle) bng cách ưa giá tr vào thanh ghi

CCPRxL và các bit CCP1CON<5:4>..3. Thit lp giá tr b chia tn s prescaler ca Timer2 và cho phép Timer2 hot ng

bng cách ưa giá tr thích h p vào thanh ghi T2CON.

4. Cho phép CCP hot ng  ch  PWM 

Page 59: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 59/126

Giáo trình Vi iu Khin

59

Hình 4.12: Sơ   ca b PWM Trong ó giá tr 1 chu kì (period) ca xung iu ch ư c tính bng công thc:

PWM period = [(PR2)+1]*4*TOSC*(giá tr b chia tn s ca TMR2). 

B chia tn s prescaler ca Timer2 ch có th nhn các giá tr 1,4 hoc 16 (xem li

Timer2 bit thêm chi tit). Khi giá tr thanh ghi PR2 bng v i giá tr thanh ghi TMR2

thì quá trình sau xy ra:

Thanh ghi TMR2 t ng ư c xóa. Pin ca khi CCP ư c set.

Giá tr thanh ghi CCPR1L (cha giá tr n nh rng xung iu ch duty cycle)

ư c ưa vào thanh ghi CCPRxH. rng ca xung iu ch (duty cycle) ư c tính theo công thc:

PWM duty cycle = (CCPRxL:CCPxCON<5:4>)*TOSC*(giá tr b chia tn s TMR2) 

Như vy 2 bit CCPxCON<5:4> s cha 2 bit LSB. Thanh ghi CCPRxL cha byte cao ca

giá tr quyt nh rng xung. Thanh ghi CCPRxH óng vai trò là buffer cho khi

PWM. Khi giá tr trong thanh ghi CCPRxH bng v i giá tr trong thanh ghi TMR2 và hai

bit CCPxCON<5:4> bng v i giá tr 2 bit ca b chia tn s prescaler, pin ca khi CCP

li ư c ưa v mc thp, như vy ta có ư c hình nh ca xung iu ch ti ngõ ra ca

khi PWM như hình 4.12Mt s im cn chú ý khi s dng khi PWM:

Timer2 có hai b chia tn s prescaler và postscaler. Tuy nhiên b postscaler không

ư c s dng trong quá trình iu ch  rng xung ca khi PWM.

Nu th i gian duty cycle dài hơ n th i gian chu kì xung period thì xung ngõ ra tip tc

ư c gi  mc cao sau khi giá tr PR2 bng v i giá tr TMR2.

Chú ý:

*Các thanh ghi liên quan:

Page 60: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 60/126

Giáo trình Vi iu Khin

60

Thanh ghi PIR2: ñòa chæ 0Dh 

TMR2 (a ch 11h): cha giá tr m ca Timer2.

T2CON (a ch 12h): xác lp các thông s cho Timer2

Các thanh ghi trên chi tit xem bng ph lc trang 96

* Thanh ghi iu khin b PWM

Thanh ghi CCP1CON và thanh ghi CCP2CON: ñòa chæ 17h (CCP1CON) vaø 1Dh(CCP2CON)

- - CCPXX CCPXY CCPXMP3 CCPXMP2 CCPXMP1 CCPXMP0

7 0

Bit 7,6 Không có tác dng và mc nh mang giá tr 0.

Bit 5,4 CCPxX:CCPxY: PWM least Significant bits (các bit này không có tác dng   

ch  Capture và Compare). ch  PWM, ây là 2 bit MSB cha giá tr tính  rng xung (duty cycle) ca khi PWM (8 bit còn li ư c cha trong thanh ghi

CCPRxL).

Bit 3-0 CCPxM3:CCPxM0 CCPx Mode Select bit

Các bit dùng xác lp các ch  hot ng ca khi CCPx

0000 không cho phép CCPx (hoc dùng reset CCPx)

0100 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh xung ti pin dùng cho khi CCPx.

0101 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh lên ti pin dùng cho khi CCPx.

0110 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh lên th 4 ti pin dùng cho khi CCPx.

0111 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh lên th 16 ti pin dùng cho khi CCPx.

1000 CCPx hot ng  ch  Compare, ngõ ra ư c ưa lên mc cao và bit

CCPxIF ư c set khi các giá tr cn so sánh bng nhau.

1001 CCPx hot ng  ch  Compare, ngõ ra ư c xung mc thp và bit

CCPxIF ư c set khi các giá tr cn so sánh bng nhau.1010 CCPx hot ng  ch  Compare, khi các giá tr cn so sánh bng

nhau, ngt xy ra, bit CCPxIF ư c set và trng thái pin output không b nh

hư ng.

1011 CCPx hot ng  ch  Compare, khi các giá tr cn so sánh bng

nhau, xung trigger c bit (Trigger Special Event) s ư c to ra, khi ó c  

ngt CCPxIF ư c set, các pin output không thay i trng thái, CCp1 reset

Page 61: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 61/126

Giáo trình Vi iu Khin

61

Timer1, CCP2 reset Timer1 và kh i ng khi ADC.

11xx CCPx hot ng  ch  PWM. 

Ví d1:

Vit chươ ng trình xut ra xung vuông ti chân RC2 có tn s 1Khz (thch anh 4Mhz)

PWM period = [(PR2)+1]*4*TOSC*(giá tr b chia tn s ca TMR2).

= 1000µSTa có: TOSC = 0.25 µS, chn giá tr b chia tn s ca TMR2 =1: 4

=> PR2 = 250

PWM duty cycle = (CCPR1L:CCP1CON<5:4>)*TOSC*(giá tr b chia tn s TMR2)

= 500µS

=> (CCPR1L:CCP1CON<5:4>) = 500= B’0111110100’

=> (CCP1CON<5:4>) = B’00’ 

=> CCP1L =B’01111101’ 

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

ORG 0000H

BCF STATUS,6

BCF STATUS,5

CLRF PORTC

;……………..Bư c 1…………………………..

BSF STATUS,5

BCF TRISC,2;……………..Bư c 2…………………………..

MOVLW D’250’

MOVWF PR2

;……………..Bư c 3…………………….

MOVLW B’01111101’

MOVWF CCPR1L

BCF CCP1CON,5

BCF CCP1CON,4;……………..Bư c4…………………..

BCF T2CON,1

BSF T2CON,0

BSF T2CON,2;

;……………Bư c5…………………..

BSF CCP1CON,3

Page 62: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 62/126

Giáo trình Vi iu Khin

62

BSF CCP1CON,2

GOTO $

END

BÀI TP THAM KHO CHƯƠ NG 4Bài 1:

Vit chươ ng trình iu khin xung vuông ti chân RC2 như sau:Nu nhn nút N1 thì xutra chân RC2 tn s 1Khz, nhn N2 thì xut ra chân RC2 tn s 2Khz, nhn N3 thì tn s 

xut ra là 3Khz. (thch anh 4Mhz).

RB1

R

PIC 16F877A

N1 RB0

N3

5V

RC2N2

RB2

 

Hình 4.13 

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>DEM EQU 20H

DEM1 EQU 21H

ORG 0000H

BCF STATUS,6

BCF STATUS,5

CLRF PORTC

CLRF PORTB

BSF STATUS,5; BANK1

BCF TRISC,2

BSF TRISB,0

BSF TRISB,1

BSF TRISB,2

MAIN

Page 63: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 63/126

Giáo trình Vi iu Khin

63

BCF STATUS,5; BANK0

BTFSS PORTB,0

GOTO KT_0

BTFSS PORTB,1

GOTO KT_1

BTFSS PORTB,2GOTO KT_2

GOTO MAIN

KT_0

BTFSS PORTB,0

GOTO KT_0

MOVLW D'250'

MOVWF DEM

MOVLW D'127'

MOVWF DEM1

GOTO TAO_XUNG

KT_1

BTFSS PORTB,1

GOTO KT_1

MOVLW D'125'

MOVWF DEM

MOVLW D'64'

MOVWF DEM1GOTO TAO_XUNG

KT_2

BTFSS PORTB,2

GOTO KT_2

MOVLW D'63'

MOVWF DEM

MOVLW D'32'

MOVWF DEM1GOTO TAO_XUNG

TAO_XUNG

;…………….BUOC2………………….

BCF STATUS,5; BANK1

MOVF DEM,0

BSF STATUS,5

Page 64: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 64/126

Giáo trình Vi iu Khin

64

MOVWF PR2

;…………….BUOC3………………….

BCF STATUS,5; BANK0

MOVF DEM1,0

MOVWF CCPR1L

BCF CCP1CON,5BCF CCP1CON,4

;…………… BUOC4………………….

BCF T2CON,1

BSF T2CON,0

BSF T2CON,2; CHO TIMER2 HOAT DONG

;………….. BUOC5…………………….

BSF CCP1CON,3

BSF CCP1CON,2

GOTO MAIN

END

Bài 2:

Vit chươ ng trình m xung (t chân RA4),sau mõi giây ri xut ra portB

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 22H

ORG 0000H

BCF STATUS,6BCF STATUS,5

CLRF PORTB

BSF STATUS,5

CLRF TRISB

BCF STATUS,5

CLRF TMR0

BSF STATUS,5

MAINBSF OPTION_REG,4 ; tac dong canh xuong

BSF OPTION_REG,5

BSF OPTION_REG,3

LOOP

CALL DELAY_1S

BCF STATUS,5

Page 65: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 65/126

Giáo trình Vi iu Khin

65

MOVF TMR0,W

MOVWF PORTB

CLRF TMR0

GOTO LOOP

DELAY_1S

BCF STATUS,5MOVLW B'00100000'

MOVWF T1CON

MOVLW D'20'

MOVWF DEM

BATDAU

MOVLW 3CFH

MOVWF TMR1H

MOVLW 0AFH

MOVWF TMR1L

BSF T1CON,0

LOOP1

BTFSS PIR1,0

GOTO LOOP1

BCF PIR1,0

DECFSZ DEM,1

GOTO BATDAU

RETURNEND

Bài 3:

Vit chươ ng trình c ADC t ngõ RA0, Kt qu  c v (8 bit cao ư c lưu trong

ADRESH, Uc = 4.5V, tc chuyn i 1Mhz, thch anh 4Mhz) xut ra portB.

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

ORG 0000H

BCF STATUS,6BCF STATUS,5

CLRF PORTB

BSF STATUS,5

CLRF TRISB

MAIN

CALL DOC_ADC

Page 66: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 66/126

Giáo trình Vi iu Khin

66

MOVF ADRESH,0

MOVWF PORTB

GOTO MAIN

DOC_ADC

BSF STATUS,5

BCF STATUS,6;……………….Chn s ngõ vào……………………………………………

BCF ADCON1,3

BCF ADCON1,2

BCF ADCON1,1

BSF ADCON1,0

BCF STATUS,5

;……………….Chn ngõ vào………………………………………………

BCF ADCON0,5

BCF ADCON0,4

BCF ADCON0,3

;…………………Chn tn s ly mu……………………………………….

BCF ADCON0,7

BCF ADCON0,6

BSF STATUS,5

BSF ADCON1,6

;………………...Chn nơ i lư u kt qu……………………………………………

BCF ADCON1,7BCF STATUS,5

; ………………Cho phép b chuyn i ADC hot ng……………………….

BSF ADCON0,0

BSF ADCON0,2

;……………….Chuyn i xong chư a?……………………………………………

LOOP

BCF STATUS, 5

BTFSC ADCON0 ,2GOTO LOOP

RETURN

END

Page 67: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 67/126

Giáo trình Vi iu Khin

67

CHƯƠNG 5

CÁC CNG NI TIP5.1. USART

USART (Universal Synchronous Asynchronous Receiver Transmitter) laø moät

trong hai chuaån giao tieáp noái tieáp.USART coøn ñöôïc goïi laø giao dieän giao tieáp noáitieáp noái tieáp SCI (Serial Communication Interface). Coù theå söû duïng giao dieän naøy

cho caùc giao tieáp vôùi caùc thieát bò ngoïai vi, vôùi caùc vi ñieàu khieån khaùc hay vôùi maùy

tính. Caùc daïng cuûa giao dieän USART ngoïai vi bao goàm:

∗  Baát ñoäng boä (Asynchronous).

∗  Ñoàng boä_ Master mode.

∗  Ñoàng boä_ Slave mode.

Hai pin duøng cho giao dieän naøy laø RC6/TX/CK vaø RC7/RX/DT, trong ñoù

RC6/TX/CK duøng ñeå truyeàn xung clock (baud rate) vaø RC7/RX/DT duøng ñeå truyeàn

data. Trong tröôøng hôïp naøy ta phaûi set bit TRISC<7:6> vaø SPEN (RCSTA<7>) c0ñeå

cho pheùp giao dieän USART.

PIC16F877A ñöôïc tích hôïp saün boä taïo toác ñoä baud BRG (Baud Rate Genetator)

8 bit duøng cho giao dieän USART. BRG thöïc chaát laø moät boä ñeám coù theå ñöôïc söû duïng

cho caû hai daïng ñoàng boä vaø baát ñoàng boä vaø ñöôïc ñieàu khieån bôûi thanh ghi PSBRG.

ÔÛ daïng baát ñoàng boä, BRG coøn ñöôïc ñieàu khieån bôûi bit BRGH ( TXSTA<2>). ÔÛ daïng

ñoàng boä taùc ñoäng cuûa bit BRGH ñöôïc boû qua. Toác ñoä baud do BRG taïo ra ñöôïc tính

theo coâng thöùc sau:

Trong ñoù X laø giaù trò cuûa thanh ghi RSBRG ( X laø soá nguyeân vaø 0<X<255).

Caùc thanh ghi lieân quan ñeán BRG bao goàm:TXSTA (ñòa chæ 98h): choïn cheá ñoä ñoøng boä hay baát ñoàng boä ( bit SYNC) vaø choïn

möùc toác ñoä baud (bit BRGH).

RCSTA (ñòa chæ 18h): cho pheùp hoaït ñoäng coång noái tieáp (bit SPEN).

RSBRG (ñòa chæ 99h): quyeát ñònh toác ñoä baud. 

Page 68: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 68/126

Giáo trình Vi iu Khin

68

5.2. CH  LÀM VIC

5.2.1. TRUYN D LIU BT NG B 

Thành phn quan trng nht ca khi truyn d liu là thanh ghi dch d liu TSR

(Transmit Shift Register). Thanh ghi TSR s ly d liu t thanh ghi m dùng cho quá

trình truyn d liu TXREG. D liu cn truyn phi ơ c ưa trư c vào thanh ghi

TXREG. Ngay sau khi bit Stop ca d liu cn truyn trư c ó ư c truyn xong, d liu t thanh ghi TXREG s ư c ưa vào thanh ghi TSR, thanh ghi TXREG b rng,

ngt xy ra và c hiu TXIF (PIR1<4>) ư c set. Ngt này ư c iu khin b i bit

TXIE (PIE1<4>). C hiu TXIF vn ư c set bt chp trng thái ca bit TXIE hay tác

ng ca chươ ng trình (không th xóa TXIF bng chươ ng trình) mà ch reset v 0 khi

có d liu m i ư c ưa vào thanhh ghi TXREG.

Hình 5.1: Sơ   ca b truyn ni tip 

Trong khi c hiu TXIF óng vai trò ch th trng thái thanh ghi TXREG thì c hiu

TRMT (TXSTA<1>) có nhim v th hin trng thái thanh ghi TSR. Khi thanh ghi

TSR rng, bit TRMT s ư c set. Bit này ch c và không có ngt nào ư c gn v i

trng thái ca nó. Mt im cn chú ý na là thanh ghi TSR không có trong bô nh d 

liu và ch ư c iu khin b i CPU.

Khi truyn d liu ư c cho phép hot ng khi bit TXEN (TXSTA<5>) ư c set.

Quá trình truyn d liu ch thc s bt u khi ã có d liu trong thanh ghi TXREG

và xung truyn baud ư c to ra. Khi khi truyn d liu ư c kh i ng ln u tiên,thanh ghi TSR rng. Ti th i im ó, d liu ưa vào thanh ghi TXREG ngay lp tc

ư c load vào thanh ghi TSR và thanh ghi TXREG b rng. Lúc này ta có th hình

thành mt chui d liu liên tc cho quá trình truyn d liu. Trong quá trình truyn d 

liu nu bit TXEN b reset v 0, quá trình truyn kt thúc, khi truyn d liu ư c

reset và pin RC6/TX/CK chuyn n trng thái high-impedance.

Page 69: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 69/126

Giáo trình Vi iu Khin

69

Trong trư ng h p d liu cn truyn là 9 bit, bit TX9 (TXSTA<6>) ư c set và bit d 

liu th 9 s  ư c lưu trong bit TX9D (TXSTA<0>). Nên ghi bit d liu th 9 vào

trư c, vì khi ghi 8 bit d liu vào thanh ghi TXREG trư c có th xy ra trư ng h p ni

dung thanh ghi TXREG s ư c load vào thanh ghi TSG trư c, như vy d liu truyn

i s b sai khác so v i yêu cu.

Tóm li,  truyn d  liu theo giao din USART bt ng b, ta cn th c hintun t các bư c sau: 

1. To xung truyn baud bng cách ưa các giá tr cn thit vào thanh ghi SPBRG và

bit iu khin mc tc baud BRGH.

2. Cho phép cng giao din ni tip ni tip bt ng b bng cách clear bit SYNC và

set bit PSEN.

3. ưa 8 bit d liu cn truyn vo thanh ghi TXREG.

4. Set bit TXIE nu cn s dng ngt truyn.

5. Set bit TX9 nu nh dng d liu cn truyn là 9 bit.

6. Set bit TXEN cho phép truyn d liu (lúc này bit TXIF cũng s ư c set).

7. Nu nh dng d liu là 9 bit, ưa bit d liu th 9 vào bit TX9D.

8. Nu s dng ngt truyn, cn kim tra li các bit GIE và PEIE (thanh ghi INTCON)

Chú ý: 

* Các thanh ghi liên quan:

Thanh ghi INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép tt c các ngt.

Thanh ghi PIE1 (a ch 8Ch): cha bit cho phép ngt truyn TXIE.

Thanh ghi RCSTA (a ch 18h): cha bit cho phép cng truyn d 

Thanh ghi TXREG (a ch 19h): thanh ghi cha d liu cn truyn.Thanh ghi SPBRG (a ch 99h): quyt nh tc baud.

Chi tit xem bng ph lc trang 96

* Thanh ghi iu khin b truyn ni tip:

Thanh ghi PIR1 (a ch 0Ch): cha c hiu TXIF

Thanh ghi TXSTA (a ch 98h): Thanh ghi cha các bit trng thái và iu khin vic

truyn d liu thông qua chun giao tip USART.

CSRC TX-9 TXEN SYNC - BRGH TRMT TX9DBit 7 Bit 0

Bit 7 CSRC Clock Source Select bit

ch  bt ng b: không cn quan tâm. ch  ng b:

CSRC = 1 Master mode (xung clock ư c ly t b to xung BRG).

CSRC = 0 Slave mode (xung clock ư c nhn t bên ngoài).

Page 70: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 70/126

Giáo trình Vi iu Khin

70

Bit 6 TX-9 9-bit Transmit Enable bit

TX-9 = 1 truyn d liu 9 bit.

TX-9 = 0 truyn d liu 8 bit.

Bit 5 TXEN Transmit Enable bit

TXEN = 1 cho phép truyn.

TXEN = 0 không cho phép truyn.Bit 4 SYNC USART Mode Select bit

SYNC = 1 dng ng b 

SYNC = 0 dng bt ng b.

Bit 3 Không cn quan tâm và mc nh mang giá tr 0.

Bit 2 BRGH High Baud Rate Select bit, Bit này ch có tác dng  ch  bt ng b.

BRGH = 1 tc cao.

BRGL = 0 tc thp.

Bit 1 TRMT Transmit Shift Register Status bit

TRMT = 1 thanh ghi TSR không có d liu.

TRMT = 0 thanh ghi TSR có cha d liu.

Bit 0 TX9D

Bit này cha bit d liu th 9 khi d liu truyn nhn là 9 bit. 

Ví d: 

Vit on chươ ng trình nhn d liu t PORTB sau ó xut ra Port ni tip, ch  8

bit, Baud rate =9600, Fosc = 4Mhz. 

TRUYEN_NOI_TIEP

;………………Chn baud rate………………………………

BSF TXSTA, BRGH

MOVLW D’25’

MOVWF SPBRG

;………Cho phép cng ni tip hot ng…………..

BCF TXSTA, SYNC

BSF RCSTA, SPEN

;……Xut giá tr cn truyn vào thanh ghi TXREG…. LOOP

MOVF PORTB,W

MOVWF TXREG

;……………Cho phép truyn………………………………

BSF TXSTA, TXEN

;……………Truyn xong chư a?………………………………

Page 71: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 71/126

Giáo trình Vi iu Khin

71

LOOP1

BTFSS PIR1,TXIF

GOTO LOOP1

NOP

GOTO LOOP

RETURN5.2.2. NHN D LIU BT NG B 

D liu ư c ưa vào t chân RC7/RX/DT s kích hot khi phc hi d liu. Khi

phc hi d liu thc cht là mt b dch d liu ctc cao va có tn s hot ng gp

16 ln hoc 64 ln tn s baud. Trong khi ó tc dch ca thanh thanh ghi nhn d liu

s bng v i tn s baud hoc tn s ca oscillator.

Hình 5.2: Sơ   ca b truyn ni tip

Bit iu khin cho phép khi nhn d liu là bit RCEN (RCSTA<4>). Thành phn

quan trng nht ca khi nhn d liu là thsnh ghi nhn d liu RSR (Receive Shift

Register). Sau khi nhn din bit Stop ca d liu truyn t i, d liu nhn ư c trong

thanh ghi RSR s ư c ưa vào thanh ghi RCGER, sau ó c hiu RCIF (PIR1<5>) s 

ư c set và ngt nhn ư c kích hot. Ngt này ư c iu khin b i bit RCIE (PIE1<5>).

Bit c hiu RCIF là bit ch c và không th ư c tác ng b i chươ ng trình. RCIF ch 

reset v 0 khi d liu nhn vào   thanh ghi RCREG ã ư c c và khi ó thanh ghi

RCREG rng. Thanh ghi RCREG là thanh ghi có b m kép (double-buffered register)

và hot ng theo cơ ch FIFO (First In First Out) cho phép nhn 2 byte và byte th 3

tip tc ư c ưa vào thanh ghi RSR. Nu sau khi nhn ư c bit Stop ca byte d liu

th 3 mà thanh ghi RCREG vn còn y, c hiu báo tràn d liu (Overrun Error bit)

Page 72: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 72/126

Giáo trình Vi iu Khin

72

OERR(RCSTA<1>) s ư c set, d liu trong thanh ghi RSR s b mt i và quá trình

ưa d liu t thanh ghi RSR vào thanh ghi RCREG s b gián on. Trong trư ng h p

này cn ly ht d liu  thanh ghi RSREG vào trư c khi tip tc nhn byte d liu tip

theo. Bit OERR phi ư c xóa bng phn mm và thc hin bng cách clear bit RCEN

ri set li. Bit FERR (RCSTA<2>) s ư c set khi phát hin bit Stop da d liu ư c

nhn vào. Bit d liu th 9 s ư c ưa vào bit RX9D (RCSTA<0>). Khi c d liu t thanh ghi RCREG, hai bit FERR và RX9D s nhn các giá tr m i. Do ó cn c d liu

t thanh ghi RCSTA trư c khi c d liu t thanh ghi RCREG tránh b mt d liu. 

Tóm li, khi s dng giao din nhn d  liu USART bt ng b cn tin hành

tun t các bư c sau:

1. Thit lp tc baud (ưa giá tr thích h p vào thanh ghi SPBRG và bit BRGH.

2. Cho phép cng giao tip USART bt ng b (clear bit SYNC và set bit SPEN).

3. Nu cn s dng ngt nhn d liu, set bit RCIE.

4. Nu d liu truyn nhn có nh dng là 9 bit, set bit RX9.5. Cho phép nhn d liu bng cách set bit CREN.

6. Sau khi d liu ư c nhn, bit RCIF s ư c set và ngt ư c kích hot (nu bit

RCIE ư c set).

7. c giá tr thanh ghi RCSTA  c bit d liu th 9 và kim tra xem quá trình nhn

d liu có b li không.

8. c 8 bit d liu t thanh ghi RCREG.

9. Nu quá trình truyn nhn có li xy ra, xóa li bng cách xóa bit CREN.

10. Nu s dng ngt nhn cn set bit GIE và PEIE (thanh ghi INTCON). 

Chú ý:

* Các thanh ghi liên quan:

Thanh ghi INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cha các bit cho phép ngt

Thanh ghi PIE1 (a ch 8Ch): cha bit cho phép ngt RCIE.

Thanh ghi RCREG (a ch 1Ah): cha d liu nhn ư c.

Thanh ghi TXSTA (a ch 98h): cha các bit iu khin SYNC và BRGH.

Thanh ghi SPBRG (a ch 99h): iu khin tc baud.

Chi tit các thanh ghi xem bng ph lc trang 96

* Thanh ghi iu khin b nhn ni tip:Thanh ghi PIR1 (a ch 0Ch): cha c hiu RCIE.

Thanh ghi RCSTA: (a ch 18h)Thanh ghi cha các bit trng thái và các bit iu khin

quá trình nhn d liu qua chun giao tip USART.

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

Bit 7 Bit 0

Page 73: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 73/126

Giáo trình Vi iu Khin

73

Bit 7 SPEN Serial Port Enable bit

SPEN = 1 Cho phép cng giao tip USART (pin RC7/RX/DT và RC6/TX/CK).

SPEN = 0 không cho phép cng giao tip USART.

Bit 6 RX9 9-bit Receive Enable bit

RX9 = 1 nhn 9 bit d liu.

RX9 = 0 nhn 8 bit d liu.Bit 5 SREN Single Receive Enable bit

ch  USART bt ng b: bit này không cn quan tâm.

ch  USART Master ng b:

SREN = 1 cho phép chc năng nhn 1 byte d liu (8 bit hoc 9 bit).

SREN = 0 không cho phép chc năng nhn 1 byte d liu.

Bit 4 CREN Continous Receive Enable bit

ch  bt ng b:

CREN = 1 cho phép nhn 1 chui d liu liên tc.

CREN = 0 không cho phép nhn 1 chui d liu liên tc.

ch  bt ng b:

CREN = 1 cho phép nhn d liu cho t i khi xóa bit CREN.

CREN = 0 không cho phép nhn chui d liu.

Bit 3 ADDEN Address Detect Enable bit

ch  USART bt ng b 9 bit

ADDEN = 1 cho phép xác nhn a ch, khi bit RSR<8> ư c set thì ngt ư c

cho phép thc thi và giá tr trong buffer ư c nhn vào.

ADDEN = 0 không cho phép xác nhn iz5 ch, các byte d liu ư c nhnvào và bit th 9 có th ư c s dng như là bit parity.

Bit 2 FERR Framing Eror bit

FERR = 1 xut hin li "Framing" trong quá trình truyn nhn d liu.

FERR = 0 không xut hin li "Framing" trong quá trình truyn nhn d liu.

Bit 1 OERR Overrun Error bit,

OERR = 1 xut hin li "Overrun"

OERR = 0 không xut hin li "Overrun"

Bit 0 RX9DBit này cha bit d liu th 9 ca d liu truyn nhn 

Ví d: 

Vit on chươ ng trình c d liu t Port ni tip, sau ó xut gí tr c v ra PORTD

Baud rate =9600, Fosc = 4Mhz.

Page 74: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 74/126

Giáo trình Vi iu Khin

74

NHAN_NOI_TIEP

;……………… Chn baud rate ………………………….

BSF TXSTA, BRGH

MOVLW D’25’

MOVWF SPBRG

;…………… Cho phép cng ni tip hot ng …………BCF TXSTA, SYNC

BSF RCSTA, SPEN

;……………Cho phép nhn d liu………………………

BAT_DAU

BSF RCSTA,CREN

;……………Nhn xong chư a?……………………………..

LOOP

BTFSS PIR1, RCIF

GOTO LOOP

;…………Có li không?……………………………………

BTFSS RCSTA, OERR

GOTO DOC_VE

BCF RCSTA, CREN

GOTO BAT_DAU

;……………c kt qu v…………………………………

DOC_VE

MOVF RCREG,WMOVWF PORTD

GOTO LOOP

RETURN

BÀI TP THAM KHO CHƯƠ NG 5

Bài 1:

Vit chươ ng trình c d liu t Port ni tip ( Baud rate =9600, ch  8 bit, thch

anh = 4Mhz), kim tra kt qu c v. Nu là s l thì xut ra PortB, ngư c li không

xut. PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

TEMP EQU 20H

ORG 0000H

BCF STATUS,6

BCF STATUS,5

Page 75: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 75/126

Giáo trình Vi iu Khin

75

CLRF PORTB

CLRF PORTC

BSF STATUS,5

CLRF TRISB

BCF TRISC,6

BCF TRIC,7MAIN

CALL DOC_NOI_TIEP

BTFSS TEMP,0

GOTO LOOP1

MOVF TEMP,0

MOVWF PORTB

GOTO MAIN

LOOP1

CLRF RCREG

GOTO MAIN

DOC_NOI_TIEP

;……………… Chn baud rate ………………………….

BSF TXSTA, BRGH

MOVLW D’25’

MOVWF SPBRG

;…………… Cho phép cng ni tip hot ng …………

BCF TXSTA, SYNCBSF RCSTA, SPEN

;……………Cho phép nhn d liu………………………

BAT_DAU

BSF RCSTA,CREN

;……………Nhn xong chư a?……………………………..

LOOP

BTFSS PIR1, RCIF

GOTO LOOP;…………Có li không?……………………………………

BTFSS RCSTA, OERR

GOTO DOC_VE

BCF RCSTA, CREN

GOTO BAT_DAU

;……………c kt qu v…………………………………

Page 76: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 76/126

Giáo trình Vi iu Khin

76

DOC_VE

MOVF RCREG,W

MOVWF TEMP

RETURN

END

Bài 2:Vit on chươ ng trình xut 30byte trong Ram ni, byte u tiên có a ch 22H ra Port

ni tip (Baud rate =9600, ch  8 bit, thch anh = 4Mhz) 

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 20H

TEMP EQU 21H

ORG 0000H

BCF STATUS,6

BCF STATUS,5

CLRF PORTB

CLRF PORTC

BSF STATUS,5

BCF TRISC,6

BCF TRIC,7

BCF STATUS,5

MAIN

MOVLW D’30’MOVWF DEM

MOVLW 22H

MOWF FSR

BAT_DAU

MOVF INDF,0

MOVWF TEMP

CALL TRUYEN_NOI_TIEP

DECFSZ DEM

GOTO TIEPGOTO THOAT

TIEP

INCF FSR,1

GOTO MAIN

THOAT

NOP

GOTO $

Page 77: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 77/126

Giáo trình Vi iu Khin

77

TRUYEN_NOI_TIEP

;……Chn baud rate………………………………

BSF TXSTA, BRGH

MOVLW D’25’

MOVWF SPBRG

;………Cho phép cng ni tip hot ng…………..BCF TXSTA, SYNC

BSF RCSTA, SPEN

;…Xut giá tr cn truyn vào thanh ghi RCREG…

MOVF TEMP,0

MOVWF TXREG

;……………Cho phép truyn………………………………

BSF TXSTA, TXEN

;……………Truyn xong chư a?………………………………

LOOP1 BTFSS PIR1,TXIF

GOTO LOOP1

NOP

RETURN 

END

Bài 3:

Vit chươ ng trình xut kim tra trong Ram ni (bank0) nu ký t ch hoa (A, B,C…Z)

thì xut ra Port ni tip ( Baud rate =19200, ch  8 bit, thch anh = 4Mhz).Ngư c li,

không xut. Bit ch A có mã ASCH là 65. PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

TEMP EQU A1H

DEM EQU A0H

ORG 0000H

BCF STATUS,6

BCF STATUS,5

CLRF PORTBCLRF PORTC

BSF STATUS,5

CLRF TRISB

BSF TRISC,6

BSF TRIC,7 

MAIN

MOVLW D’97’

Page 78: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 78/126

Giáo trình Vi iu Khin

78

MOVWF DEM

MOVLW 20H

MOVWF FSR

LOOP DECFSZ DEM

GOTO BAT_DAU

GOTO $

BAT_DAU

MOVF INDF,0

MOVWF TEMP

MOVLW D’65’

SUBWF TEMP,0

BTFSS STATUS,0

GOTO TIEP

INCF FSR,1

GOTO LOOP

TIEP

MOVLW D’92’

SUBWF TEMP,0

BTFSS STATUS,0

GOTO BO_QUA

GOTO XUAT

BO_QUA

INCF FSR,1

GOTO LOOP

XUAT

BCF TXSTA, BRGH

MOVLW D’12 ’

MOVWF SPBRG

;………………Cho phép cng ni tip hot ng…………..

BCF TXSTA, SYNC

BSF RCSTA, SPEN;……………Xut giá tr cn truyn vào thanh ghi RCREG…

MOVF TEMP,0

MOVWF TXREG

;……………Cho phép truyn………………………………

BSF TXSTA, TXEN

;……………Truyn xong chư a?………………………………

Page 79: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 79/126

Giáo trình Vi iu Khin

79

LOOP1

BTFSS PIR1,TXIF

GOTO LOOP1

INCF FSR,1

GOTO LOOP

END

Page 80: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 80/126

Giáo trình Vi iu Khin

80

CHƯƠNG 6

NGT - INTERRUPT6.1 KHÁI NIM

6.1.1. GI I THIU

u tiên, Ngt (interrupt) là cái gì?, nó tht s có ý ngh ĩ a ging như tên gi ca

nó, mt Interrupt là mt tác v x lý hay là mt tín hiu x lý mà nó có th bt con

Pic d ng li nh ng gì ang làm làm mt công vic khác. Mt ví d d hiu, hãy ly

sinh hot hàng ngày ca bn, gi s bn ang ngi   nhà, ri bn ang tán gu v i ai

ó,thình lình chuông in thoi reo, bn ngưng cuc nói chuyn li, nht in thoi lên và

nói chuyn v i ngư i gi n. Khi bn kt thúc cuc nói chuyn bng in thoi bn li

quay tr  v và tip tc tán gu v i ngư i ã nói chuyn v i bn trư c khi in thoi

reo.Bây gi  bn hãy tư ng tư ng, chươ ng trình chính là quá trình tán gu ca bn v i

ngư i bn ngi  nhà, in thoi reo to ra mt Interrupt và th tc (routine) Interrups là

cuc nói chuyn v i ngư i   u dây bên kia, khi kt thúc cuc nói chuyn bng inthoi bn quay v “chươ ng trình chính” tip tc tán gu.

Ví d này gii thích chính xác mt Interrups to ra mt tin trình x lý như th nào.

Mt chươ ng trình chính ang chy, thc hin mt vài chc năng nào ó trên mch in,

nhưng khi Interrupt xy ra chươ ng trình chính s tm ngưng và ngay lúc ó mt th tc

khác ư c thc hin, khi th tc này kt thúc con Pic s li quay v chươ ng trình chính.

Con Pic có 15 ngun ngt, khi ngt ư c xy ra cn: khai báo ngt (Set các bit iu

khin IE tươ ng  ng) và có c ngt tác ng (IF),  bit ngt như th nào chúng ta cn

xem sơ   sau:

Hình 6.1: Gin ngt

Page 81: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 81/126

Giáo trình Vi iu Khin

81

Chú thích: 

•  Các Bít iu khin ngt

+ Bít GIE: INTCON<7> Cho phép ngt toàn cc 

+ Bít PEIE: INTCON<6> Cho phép ngt ngoi vi 

+ Bít RBIE: INTCON<3>  Cho phép ngt PortB 

+ Bít INTE: INTCON<4> Cho phép ngt RB0 + Bít TMR0IE: INTCON<3> Cho phép ngt Timer0

+ Bít FEIE: PIE2<4> Cho phép ngt EFROM

+ Bít PSPIE: PIE1<7> Cho phép ngt truyn song song

+ Bít ADIE: PIE1<6> Cho phép ngt chuyn i ADC

+ Bít RCIE: PIE1<5> Cho phép ngt nhn ni tip

+ Bít TXIE: PIE1<4> Cho phép ngt truyn ni tip

+ Bít SSPIE: PIE1<3> Cho phép ngt truyn nhn ni tip ang bn

+ Bít CCP1IE: PIE1<2> Cho phép ngt b CCP1+ Bít TMR1IE: PIE1<0> Cho phép ngt Timer1

+ Bít TMR2IE: PIE1<1> Cho phép ngt Timer2 

+ Bít CCP2IE: PIE2<0> Cho phép ngt b CCP2

+ Bít BCLIE: PIE2<3> Cho phép ngt truyn nhn ni xy ra

+ Bít CMIE: PIE2<6> Cho phép ngt b so sánh

•  Các Bít c ngăt

+ Bít RBIF: INTCON<0>  C ngt PortB 

+ Bít INTF: INTCON<1> C ngt RB0 

+ Bít TMR0IF: INTCON<2> C ngt Timer0

+ Bít FEIF: PIR2<4> C ngt EFROM

+ Bít PSPIF: PIR1<7> C ngt truyn song song

+ Bít ADIF: PIR1<6> C ngt chuyn i ADC

+ Bít RCIF: PIR1<5> C ngt nhn ni tip

+ Bít TXIF: PIR1<4> C ngt truyn ni tip

+ Bít SSPIF: PIR1<3> C ngt truyn nhn ni tip ang bn

+ Bít CCP1IF: PIR1<2> C ngt b CCP1

+ Bít TMR1IF: PIR1<0> C ngt Timer1+ Bít TMR2IF: PIR1<1> C ngt Timer2 

+ Bít CCP2IF: PIR2<0> C ngt b CCP2

+ Bít BCLIF: PIR2<3> C ngt truyn nhn ni xy ra

+ Bít CMIF: PIR2<6> C ngt b so sánh 

Gi s trong chươ ng trình chính chúng ta có s dng Timer0. khi chươ ng trình ang

thc thi, nu b nh th i Timer0 m xong s báo cho chúng ta bit thông qua c tràn

Page 82: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 82/126

Giáo trình Vi iu Khin

82

TR0IF. Vy nêú chúng ta dùng ngt Timer0 thì chúng ta cn SET bit TMR0IE và SET

bit GIE. Tươ ng t nu chúng ta cn dùng ngt ngoi vi RB thì cn SET bit RBIE và

SET bit GIE. Tuy nhiên, chúng ta cn ngt Timer1 thì ngoài vic cn SET bit

TMR1IE và SET bit GIE và cn SET thêm bit PEIE

=>D a vào sơ   trên chúng ta cn “Set” bit nào khi khai báo ngt.

6.1.2. CU TRÚC CHƯƠ NG TRÌNH CÓ DÙNG NGT ORG 0000H ; a ch RESET

GOTO MAIN ; Nhy vào chươ ng trinh chính

;……………..INTERRUPT ROUTINE……………………. 

ORG 04H ; a ch vectơ ngt

•  Lưu các giá tr tm th i vào Ram ni ( Nu các giá tr này thay i khi thc

thi chươ ng trình ngt)

•  Thc thi chươ ng trình ngt

  Thoát ngt- Tr các giá tr t Ram ni vào các thanh ghi ã lưu

- Xóa c ngt

RETFIE ; kt thúc chươ ng trình ngt

;…………………… MAIN PROGRAM……………………….MAIN

•  Khai báo ngt (Chúng ta khai báo là ngt gì? Ngt ngoi vi, ngt timer hay

ngt ADC….)

•  Thc thi chươ ng trình chính

•  Vòng lp vô hnEND

Ơ on chươ ng trình trên ta thy, khi bt u ngay im nhp RESET gp lnh Goto

MAIN khi ó chươ ng trình thc thi chươ ng trình chính. Trong sut quá trình thc thi

nu có ngt xy ra ( ging như bn đang tán gu vi ai đó,thình lình chuơng đin

thoi reo) thì chươ ng trình lp tc “tm ngng” tr v a ch vectơ ngt ORG 04H

ê thc thi chươ ng trình ngt (bn ngưng cuc nói chuyn li, nht đin thoi

lên vànói chuyn vi ngưi gi đn). Khi kt thúc chươ ng trình ngt gp lnh

RETFIE thì chươ ng trình tr li nơ i nó ã “ra i” (ging như bn nghe in thoixong tr li v i tán gu tip câu chuy cò dang d ). 

6.2 NGT RB0

Ngt này da trên s thay i trng thái ca pin RB0/INT. Cnh tác ng gây ra ngt

có th là cnh lên hay cnh xung và ư c iu khin b i bit INTEDG (thanh ghi

OPTION_REG <6>). Khi có cnh tác ng thích h p xut hin ti pin RB0/INT, c  

ngt INTF ư c set bt chp trng thái các bit iu khin GIE và PEIE.

Page 83: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 83/126

Giáo trình Vi iu Khin

83

Thanh ghi OPTION chính là thanh ghi thit lp ch  cho Interrupt tích cc  cnh

lên hay cnh xung ca tín hiu vào, Bit 6 ca thanh ghi OPTION ư c gi là

INTEDG, nu Set Bit6 s thit lp interrupt tích cc  cnh lên ca tín hiu vào (trng

thái default), nu Clear Bit6 s thit lp interrupt tích cc  cnh xung ca tín hiu

vào. Mc nhiên sau khi bt ngun con Pic s thit lp ch  Interrupt cnh lên, có

ngh ĩ a là interrup xy ra khi tín hiu vào thay i t thp lên cao (cnh lên). Ví d:

Cho sơ   như hình v, vit chươ ng trình cho tha: Mõi ln nhn nút N, buông ra giá

tr trên Led 7 on tăng 1 ơ n v 

Hình 6.2

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 20H

ORG 0000H

GOTO MAIN

ORG 04H

MOVWF TEMPINCF DEM,1

MOVLW D'10'

XORWF DEM,0

BTFSC STATUS,2

CLRF DEM

MOVF TEMP,W

Page 84: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 84/126

Giáo trình Vi iu Khin

84

BCF INTCON,1

RETFIE

MAIN

BSF INTCON,7

BSF INTCON,4

BCF STATUS,6

BSF STATUS,5

CLRF TRISD

BCF STATUS,5

CLRF DEM

LOOP

MOVF DEM,W

MOVWF PORTD

GOTO LOOP

END 

6.3. NGT PORTB

Tươ ng t như ngt RB0, nhưng da vào s bin i trng thái ca các chân t 

RB4÷RB7. Tc là khi RB4÷RB7 có s bin i trng thái thì c ngt RBIF tích cc

mc cao. Vy s dng ngt PortB trong chươ ng trình chính chúng ta cn Set bit

RBIE (INTCON<4>) và Set bit GIE (INTCON<7>)

Ví d:

Vit chươ ng trình cho mch chng trm, 4 ngõ vào (RB4÷RB7), 1 ngõ ra (RA0).

Mt trong 4 ngõ vào có tác ng ngõ ra tích cc mc cao.

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

ORG 0000H

GOTO MAIN

ORG 04H

GOTO NGAT

MAINBSF INTCON,7

BSF INTCON,3

BCF STATUS,6

BSF STATUS,5

BCF TRISA,0

Page 85: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 85/126

Giáo trình Vi iu Khin

85

GOTO $

NGAT

BCF STATUS,6

BCF STATUS,5

BSF PORTA,0

BCF INTCON,0RETFIE

END

6.4. NGT TIMER

Như chúng ta ã bit, giá tr trong b Timer s tăng theo mõi xung nhp tác ng, i

v i Timer0 và Timer2 thì khi thanh ghi TMR0 hoc TMR2 t giá tr FFH (255) thì

khi ó c tràn TMR0IF hoc TMR2IF s tích cc mc cao. Riêng i v i Timer1  

c tràn TMR1IF t giá tr tích cc mc cao thì giá tr trong thanh TMR1 (16 Bit gm

2 thanh ghi TMR1H và TMR1L) phi t giá tr là FFFFH (65535) s dng ngt TIMER chúng ta bit r mình s dng Timer nào mà Set Bit

TMRXIE tươ ng ng khi khai báo, ng th i Set Bit PEIE và Bit GIE (riêng i

Timer0 thì không cn Set Bit PEIE)

Ví d:

Vit chươ ng trình to xung vuông ti chân RD0, tn s f=10hz, dùng ngt

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

ORG 0000H

GOTO MAIN

ORG 04H

BCF STATUS,6

BCF STATUS,5

MOVLW B'00000001'

XORWF PORTD,1

BCF PIR1,0

MOVLW 3CH

MOVWF TMR1HMOVLW 0AFH

MOVWF TMR1L

RETFIE

MAIN

BSF INTCON,7

BSF INTCON,6

Page 86: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 86/126

Giáo trình Vi iu Khin

86

BCF STATUS,6

BSF STATUS,5

BSF PIE1,0

BCF STATUS,6

BCF STATUS,5CLRF PORTD

BSF STATUS,5

BCF TRISD,0

BCF STATUS,5

LOOP

MOVLW B'00000000'

MOVWF T1CON

MOVLW 3CH

MOVWF TMR1H

MOVLW 0AFH

MOVWF TMR1L

BSF T1CON,0

GOTO $

END

6.5. NGT ADC

i v i b chuyn i ADC sau khi ã thit lp các ch  (Chn ngõ vào, in áp

chun, tn s chuyn i…) xong, sau ó cho b chuyn i ADC bt u hot ngthông qua bit ADON (ADCON0 <2>). Mt th i gian sau, khong vài trăm µS thì quá

trình chuyn i hoàn tt, khi ó c ngt ADIF ư c Set lên mc cao. Nu chúng ta

Set các Bit ADIE, PEIE và Bit GIE thì khi ó ngt s xy ra.

Ví d:

Làm li bài tp 3 chươ ng 4 (trang 67), dùng ngt

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

ORG 0000HGOTO MAIN

ORG 04H

GOTO NGAT_ADC

MAIN

BSF INTCON,7

BSF INTCON,6

Page 87: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 87/126

Giáo trình Vi iu Khin

87

BSF PIE1,6

BSF STATUS,5

BCF STATUS,6

;……………….Chn s ngõ vào……………………………………………

BCF ADCON1,3

BCF ADCON1,2BCF ADCON1,1

BSF ADCON1,0

;……………….Chn ngõ vào………………………………………………

BCF STATUS,5

BCF ADCON0,5

BCF ADCON0,4

BCF ADCON0,3

;…………………Chn tn s ly mu……………………………………….

BCF ADCON0,7

BCF ADCON0,6

BSF STATUS,5

BSF ADCON1,6

;………………...Chn nơ i lư u kt qu……………………………………………

BCF ADCON1,7

BCF STATUS,5

; ………………Cho phép b chuyn i ADC hot ng……………………….

STAR BSF ADCON0,2BSF ADCON0,0

;……………….Chuyn i xong chư a?……………………………………………

BCF STATUS, 5

LOOP

BTFSC PIR1,6

GOTO LOOP

NOP

GOTO STARNGAT_ADC

MOVF ADRESH,0

MOVWF PORTB

BCF PIR1,6

RETFIE

END

Page 88: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 88/126

Giáo trình Vi iu Khin

88

6.6. NGT PORT NI TIP

Tươ ng t như ngt ADC, i v i truyn nhn ni tip, khi truyn (nhn) xong 1 byte thì

c  ngt Set lên mc cao. ngt xy ra ta Set các Bit iu khin tươ ng ng, i v i

truyn ni tip chúng ta cn Set 3 Bit iu khin trong khi khai báo:GIE, PEIE và TXIE.

Còn i v i nhn ni tip thì các Bít cn Set: GIE, PEIE và RCIE

Ví d:Làm li bài tp 2 chươ ng 5 (trang 78), dùng ngt

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 20H

TEMP EQU 21H

ORG 0000H

GOTO MAIN

ORG 04H

GOTO NGAT_TRUYEN

MAIN

BSF INTCON,7

BSF INTCON,6

BSF PIE1,4

BCF STATUS,6

BCF STATUS,5

CLRF PORTC

BSF STATUS,5BCF TRISC,6

BCF TRIC,7

BCF STATUS,5

MOVLW D’30’

MOVWF DEM

MOVLW 22H

MOWF FSR

TRUYEN_NOI_TIEP

;………………Chn baud rate……………………………………..

BSF TXSTA, BRGH

MOVLW D’25’

MOVWF SPBRGN

;……………… Cho phép cng ni tip hot ng…………………..

BCF TXSTA, SYNC

Page 89: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 89/126

Giáo trình Vi iu Khin

89

BSF RCSTA, SPEN

;……………Xut giá tr cn truyn vào thanh ghi RCREG…

MOVF TEMP,0

MOVWF TXREG

;……………Cho phép truyn………………………………

BSF TXSTA, TXEN;Truyn xong chư a? Nu truyn xong thì vào ngt, ri tr li, truyn tip.

LOOP1

BTFSS PIR1,TXIF

GOTO LOOP1

NOP

GOTO TRUYEN_NOI_TIEP 

NGAT_TRUYEN

DECFSZ DEM

GOTO TIEP

GOTO $

TIEP

INCF FSR,1

MOVF INDF,0

MOVWF TEMP

BCF PIR1,4

RETFIE

END 

BÀI TP THAM KHO CHƯƠ NG 6

Bài 1:

Nu RB0 tác ng cnh lên thì xut ra chân RC2 mt chui xung có tn s f=1Khz trong

3 giây.

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 22H

ORG 0000H

GOTO MAINORG 04H

GOTO NGAT

MAIN

BCF STATUS,6

BCF STATUS,5

BSF INTCON,7

Page 90: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 90/126

Giáo trình Vi iu Khin

90

BSF INTCON,4

GOTO $

NGAT

;To xung dùng khi PWM, có tn s 1Khz

;.........Buoc 1..........

BSF STATUS,5BCF TRISC,2

;.........Buoc 2..........

MOVLW D'250'

MOVWF PR2

;..........Buoc 3.........

BCF STATUS,5

MOVLW D'127'

MOVWF CCPR1L

BCF CCP1CON,5

BCF CCP1CON,4

;..........Buoc4..........

BCF T2CON,1

BSF T2CON,0

BSF T2CON,2; CHO TIMER2 HOAT DONG

;...........Buoc5.........

BSF CCP1CON,3

BSF CCP1CON,2;.........TAO TRE.........

MOVLW D'100'

MOVWF DEM

MOVLW B'00000000'

MOVWF T1CON

STAR

MOVLW 3CH

MOVWF TMR1HMOVLW 0AFH

MOVWF TMR1L

BSF T1CON,0

TEMPS

BTFSS PIR1,0

GOTO TEMPS

Page 91: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 91/126

Giáo trình Vi iu Khin

91

BCF PIR1,0

DECFSZ DEM

GOTO STAR

;.........TT XUNG........

BCF STATUS,5

CLRF CCPR1LBCF CCP1CON,5

BCF CCP1CON,4

BSF CCP1CON,3

BSF CCP1CON,2

BCF INTCON,1

RETFIE

END

Bài 2:

Vit chươ ng trình iu khin ng cơ : (hình 6.3) 5V

R

PIC 16F877A

N2

RB0

RB5

RB4

R

Q2

Vcc

RB5

R

Q1

N3

RB4

N1

1 2

 Hình 6.3

Nút N1 (nút ON/OFF): Khi nhn N1 nu ng cơ  ang hot ng thì ngng và ngư c li

Nút N2 (thun): Nhn nút N2 ng cơ quay thun, cùng chiu kim ng h.

Nút N3 (ngư c): Nhn nút N3 ng cơ quay ngư c, ngư c chiu kim ng h.

Khi ng cơ ngng (không hot ng, nút N2, N3 không có tác dng

PROCESSOR 16F877A

#INCLUDE <P16F877A.INC>

DEM EQU 20H

ORG 0000H

GOTO MAIN

Page 92: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 92/126

Giáo trình Vi iu Khin

92

ORG 04H

GOTO NGAT

MAIN

BSF INTCON,7

BSF INTCON,4

BSF INTCON,3

BCF STATUS,6

BSF STATUS,5

BCF TRISD,0

BCF TRISD,7

BCF STATUS,5

CLRF PORTD

CLRF DEM

STAR

BTFSS DEM,0

GOTO STOP

GOTO ON

ON

BSF DEM,1

GOTO STAR

STOP

BCF PORTD,0

BCF PORTD,7

BCF DEM,1

GOTO STAR

NGAT

BTFSC INTCON,0

GOTO NGAT_2

MOVLW B'00000001'

XORWF DEM,1

BCF INTCON,1

RETFIE

NGAT_2

BTFSS DEM,1

GOTO X

BTFSS PORTB,5

GOTO THUAN

GOTO NGHICH

THUAN

Page 93: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 93/126

Giáo trình Vi iu Khin

93

BSF PORTD,7

BCF PORTD,0

GOTO X

NGHICH

BCF PORTD,7

BSF PORTD,0

X BTFSS PORTB,4

GOTO X

Y BTFSS PORTB,5

GOTO Y

BCF INTCON,0

RETFIE

END

Page 94: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 94/126

Giáo trình Vi iu Khin

94

PH LC: GII THIÊU LP TRÌNH CCS Chưong I: Tp Lnh Trong CCSI.1. Các Phép Toán Trong CCSI.1.1. Cách Khai Báo Bin, Hng, MngI.1.1.1.Caùc loaïi bieán sau ñöôïc hoã trôï :int1 soá 1 bit = true hay false ( 0 hay 1)int8 soá nguyeân 1 byte ( 8 bit)int16 soá nguyeân 16 bitint32 soá nguyeân 32 bitchar kyù töï 8 bitfloat soá thöïc 32 bitshort maëc ñònh nhö kieåu int1byte maëc ñònh nhö kieåu int8int maëc ñònh nhö kieåu int8long maëc ñònh nhö kieåu int16

Theâm signed hoaëc unsigned phía tröôùc ñeå chæ ñoù laø soá coù daáu hay khoâng daáu .Khaibaùo nhö treân maëc ñònh laø khoâng daáu . 4 khai baùo cuoái khoâng neân duøng vì deã nhaàm laãn. Thay vaøo ñoù neân duøng 4 khai baùo ñaàu .VD :Signed int8 a ; // soá a laø 8 bit daáu ( bit 7 laø bit daáu ).Signed int16 b , c , d ;Signed int32 , . . .Phaïm vi bieán :Int8 :0 , 255 signed int8 : -128 , 127Int16 : 0 ,215-1 signed int16 : -215 , 215-1Int32 : 0 , 232-1 signed int32 : -231 , 231-1Khai baùo haèng : VD :Int8 const a=231 ;I.1.1.1.Khai baùo 1 maûng haèng soá : VD : Int8 const a[5] = { 3,5,6,8,6 } ; //5 phaàn töû , chæ soá maûng baét ñaàu töø 0 :a[0]=3Moät maûng haèng soá coù kích thöôùc toái ña tuyø thuoäc loaïi VÑK:NeáuVÑK laø PIC 14 ( VD :16F877 ) : baïn chæ ñöôïc khai baùo 1 maûng haèng soá coù kíchthöôùc toái ña laø256 byte .Caùc khai baùo sau laø hôïp leä.

Int8 const a[5]={ . . .}; // söû duïng 5 byte , daáu . . . ñeå baïn ñieàn soá vaøoInt8 const a[256]={ . . .}; // 256 phaàn töû x 1 byte = 256 byteInt16 const a[12] = { . . . }; // 12 x 2= 24 byteInt16 const a[128] = { . . . }; // 128 x 2= 256 byte I.1.2. Các phép toán s hc

+ Cng++ Tăng 1 ơ n v - Tr -- Gim 1 ơ n v 

Page 95: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 95/126

Giáo trình Vi iu Khin

95

* Nhân  / Chia% Chia ly dư = Bng, thc hin gián

I.1.3. Các phép toán Logic && Phép toán AND|| Phép toán OR>> Dch phi<< Dch trái! o bit~ Ly bù& AND tng bit| Or tng bit

I.1.4. Các phép toán so sánh== So sánh bng> L n hơ n.>= L n hơ n hoc bng.

< Nh hơ n<= Nh hơ n hoc bng!= Khác

I.2. Các Kiu iu Khin Trong CCSI.2.1. Kiu: If – Else

Cú pháp:If ( iu kin)

{Nhng lnh tha iu kin;}

Else

{Nhng lnh tha iu kin;}

I.2.2. Kiu: WhileCú pháp: 

While ( iu kin){Nhng lnh tha iu kin;}

Chú ý: Trong vòng lp While iu kin luôn ư c kim traI.2.3. Kiu: Do – While

Cú pháp: Do{Nhng lnh ;}

While ( iu kin)I.2.4. Kiu: For

Cú pháp: For (biu thc kh i to; biu thc iu kin;biu thc tác ng)

Page 96: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 96/126

Giáo trình Vi iu Khin

96

{lnh;}

I.2.5. Kiu: witch…caseswitch (biu thc)

{case giá tr 1:{ lnh 1;

break;}case giá tr 2:{ lnh 2;

break;}….default:{ lnh ;

break ;

}}

I.3. Cu Trúc Chươ ng Trình Ví D: Vit chươ ng trình ti RB0 m c cao

#include <16f877a.h>#fuses nowdt,noprotect,nolvp,xt,put#use delay(clock=4000000)#use fast_io(b)#byte portb = 0x6#bit b0 = portb.0

void main( ){set_tris_b(0b0);while (true)

{b0=1;

}} 

Page 97: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 97/126

Giáo trình Vi iu Khin

97

Chươ ng II: S Dng Các Khi Chc Năng.II.1. S Dng Hàm DelayIII.1.1. Delay_cycles (count )Count : haèng soá töø 0 – 255 , laø soá chu kyø leänh .1 chu kyø leänh baèng 4 chu kyø maùy .haøm khoâng traû veà trò . Haøm duøng delay 1 soá chu kyø leänh cho tröôùc .

VD : delay_cycles ( 25 ) ; // vôùi OSC = 20 Mhz , haøm naøy delay 5 usIII.1.2.Delay_us ( time )Time : laø bieán soá thì = 0 – 255 , time laø 1 haèng soá thì = 0 -65535 .Haøm khoâng traû veà trò .Haøm naøy cho pheùp delay khoaûng thôøi gian daøi hôn theo ñôn vòus .Quan saùt trong C / asm list baïn seõ thaáy vôùi time daøi ngaén khaùc nhau , CSS sinh maõkhaùc nhau .III.1.3.Delay_ms (time )Time = 0-255 neáu laø bieán soá hay = 0-65535 neáu laø haèng soá .Haøm khoâng traû veà trò .

Haøm naøy cho pheùp delay daøi hôn nöõa .VD :Int a = 215;Delay_us ( a ) ; // delay 215 usDelay_us ( 4356 ) ; // delay 4356 usDelay_ms ( 2500 ) ; // delay 2 . 5 sII.2. S Dng Khi ADC.Bng khai báo s dng s ngõ vào Analog:

- ALL_ANALOGS : duøng taát caû chaân sau laøm analog : A0 A1 A2 A3 A5 E0 E1 E2(Vref=Vdd)

- NO_ANALOG : khoâng duøng analog , caùc chaân ñoù seõ laø chaân I /O .- AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF : A0 A1 A2 A5 E0 E1 E2VRefh=A3- AN0_AN1_AN2_AN3_AN4 : A0 A1 A2 A3 A5- AN0_AN1_AN3 : A0 A1 A3 , Vref = Vdd- AN0_AN1_VSS_VREF : A0 A1 VRefh = A3- AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF : A0 A1 A5 E0 E1 E2 VRefh=A3 ,VRefl=A2 .- AN0_AN1_AN2_AN3_AN4_AN5 : A0 A1 A2 A3 A5 E0

- AN0_AN1_AN2_AN4_AN5_VSS_VREF : A0 A1 A2 A5 E0 VRefh=A3- AN0_AN1_AN4_AN5_VREF_VREF : A0 A1 A5 E0 VRefh=A3 VRefl=A2- AN0_AN1_AN4_VREF_VREF : A0 A1 A5 VRefh=A3 VRefl=A2- AN0_AN1_VREF_VREF : A0 A1 VRefh=A3 VRefl=A2- AN0 : A0- AN0_VREF_VREF : A0 VRefh=A3 VRefl=A2

Page 98: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 98/126

Giáo trình Vi iu Khin

98

* Chươ ng trình s dng c ADC:Void Doc_ADC()

{setup_ADC(ADC_clock_internal); // div_by_2

setup_ADC_ports(AN0);set_ADC_channel(0);delay_us(800);

}II.3. S Dng PWM.

Void Xuat_xung(){

setup_ccp1(CCP_PWM);set_pwm1_duty(150); // TH=150*4setup_timer_2(t2_div_by_4,200,1); // T=200*4

}

II.4. Truyn Ni TipII.4.1. Chun RS232a. GETC(), GETCH(), GETCHAR():Hàm này ư c dùng   i nhn 1 ký t t pin RS232 RCV. Nu không mun  i ký t g i v.+ Cú pháp:: ch = getc()ch = getch()ch = getchar()+ Tr tr v: ký t 8 bit+ Yêu cu: #use rs232Ví d: #include <16f877.h>

#use delay(clock=20000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)char answer;

void main(){printf("Continue (Y,N)?");answer=getch();}while(answer!='Y' && answer!='N');

b. GETS(), Hàm này ư c dùng  c các ký t (dùng GETC()) trong chui cho n khi gp lnh

RETURN+ Cú pháp:: gets(char *string)+ Tham s: string là con tr (pointer) ch n dãy kí t + Yêu cu: #use rs232Ví d: #include <16f877.h>#include <string.h>#use delay(clock=20000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)char string[30];

Page 99: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 99/126

Giáo trình Vi iu Khin

99

void main(){printf("Input string: ");gets(string);printf("\n\r");printf(string);}

c. PUTC(), PUTCHAR():Hàm này ư c dùng g i mt ký t thông qua pin RS232 XMIT. Phi dùng #USERS232 trư c khi thc hin lnh này xác nh tc (baud rate) và pin truyn.

+ Cú pháp: putc(cdata)putchar(cdata)+ Tham s: cdata là ký t 8 bit+ Tr tr v: không+ Yêu cu: #use rs232

Ví d: #include <16f877.h>#use delay(clock=20000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)int i;char string[10];void main(){strcpy(string,"Hello !"); //copy “Hello !” to stringfor(i=0; i<10; i++) putc(string[i]); //put each charater of string onto screen}

d. PUTS():

Hàm này ư c dùng g i mi ký t trong chui n pin RS232 dùng PUTC(). Sau khichui ư c g i i thì RETURN (13) và LINE-FEED (10) u c g i i. Lnh printf()thư ng dùng hơ n lnh puts().

+ Cú pháp: puts(string)+ Tham s: string là chui hng (constant string) hay dãy ký t (characterarray)+ Tr tr v: không+ Yêu cu: #use rs232Ví d: Dùng PUTS()#include <16f877.h>#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)void main(){puts(" ------------- ");puts(" | Hello | ");puts(" ------------- ");}Dùng PRINTF()#include <16f877.h>

Page 100: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 100/126

Giáo trình Vi iu Khin

100

#use delay(clock=20000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)void main(){printf(" ------------- \n\r");printf(" | Hello | \n\r");printf(" ---------------");}

e. KBHIT():Hàm này ư c dùng báo ã nhn ư c bit start.

+ Cú pháp:: value = kbhit()+ Tham s: không+ Tr tr v: 0 (hay FALSE) nu getc() cn phi  i nhn 1 ký t t bànPhím 1 (hay TRUE) nu ã có 1 ký t sn sàng nhn bng getc().

+ Yêu cu: #use rs232f. PRINTF():Hàm này ư c dùng xut mt chui theo chun RS232 hoc theo mt hàm xác nh.

D liu ư c nh dng phù h p v i i s ca chui.Các nh dng d liu như sau:C Kiu ký t S Chui hoc ký t U S nguyên không dux Hex int (xut ch thư ng)X Hex int (xut chư hoa)D s nguyên có due S thc nh dng kiu s mũ f Kiu du chm ngLx Hex long int (ch thư ng)

LX Hex long int (ch hoa)Iu s thp phân không duId S thp phân có du.% Du %+ Cú pháp: printf(string)printf(cstring, values...)printf(fname, cstring, values...)+ Tham s: String là mt chui hng Hoc mt mng ký t không xác nh.Values là danh sách các bin phân cách nhau b i du ‘,’ , fname is là tên

hàm dùng xut d liu (mc nhiên là putc()).+ Tr tr v: không

+ Yêu cu: #use rs232g. SET_UART_SPEED():Hàm này ư c dùng  t tc truyn d liu thông qua cng RS232.

+ Cú pháp:: set_uart_speed(baud)+ Tham s: baud là hng s tc truyn (bit/giây) t 100 n 115200.+ Tr tr v: không+ Yêu cu: #use rs232Ví d: // Set baud rate based on setting of pins B0 and B1switch(input_b() & 3)

Page 101: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 101/126

Giáo trình Vi iu Khin

101

{case 0 : set_uart_speed(2400); break;case 1 : set_uart_speed(4800); break;case 2 : set_uart_speed(9600); break;case 3 : set_uart_speed(19200); break;}

II.4.2. Chun I2Ca. #USE I2C():Thư vin I2C gm các hàm dùng cho I2C bus. #USE I2C dùng v i các lnhI2C_START,I2C_STOP, I2C_READ, I2C_WRITE and I2C_POLL. Các hàm phn mmư c to ra tr khi dùng lnh FORCE_HW.

+ Cú pháp: #use i2c(mode,SDA=pin,SCL=pin[options])+ Tham s: mode: master/slave - t master/slave modeSCL=pin – ch nh pin SCL (pin là bit address)SDA=pin – ch nh pin SDA options như sauADDRESS=nn : ch nh a ch slave modeFAST : s dng fast I2C specification

SLOW : s dng slow I2C specificationRESTART_WDT : kh i ng li WDT trong khi ch  c I2C_READFORCE_HW : s dng chc năng I2C phn cng (hardware I2C functions)

b. I2C_START():Hàm này ư c dùng Kh i ng start bit (bit kh i ng)  I2C master mode. Sau khikh i ng start bit, xung clock  mc thp ch  n khi lnh I2C_WRITE() ư c thchin. Chú ý I2C protocol ph thuc vào thit b slave.

+ Cú pháp:: i2c_start()+ Tham s: không+ Tr tr v: không+ Yêu cu: #use i2c

Ví d: i2c_start();i2c_write(0xa0); //Device addressi2c_write(address); //Data to devicei2c_start(); //Restarti2c_write(0xa1); //to change data directiondata=i2c_read(0); //Now read from slavei2c_stop();

c. I2C_STOP():Hàm này ư c s dng tt s dng I2C  master mode.

+ Cú pháp: i2c_stop()+ Tham s: không

+ Tr tr v: không+ Yêu cu: #use i2cVí d: i2c_start(); //Start conditioni2c_write(0xa0); //Device addressi2c_write(5); //Device commandi2c_write(12); //Device datai2c_stop(); //Stop condition

d. I2C_POLL():

Page 102: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 102/126

Giáo trình Vi iu Khin

102

Hàm này ư c dùng hi vòng I2C, hàm này ch ư c dùng khi SSP ư c dùng. Hàmnày trv giá tr TRUE nu nhn ư c giá tr  b m. Khi hàm này lên TRUE, nudùng hàm I2C_READ thì ta ư c giá tr c v.

+ Cú pháp: i2c_poll()+ Tham s: không+ Tr tr v: 1 (TRUE) hay 0 (FALL)+ Yêu cu: #use i2cVí d: i2c_start(); //Start conditioni2c_write(0xc1); //Device address/Readcount=0;while(count!=4){while(!i2c_poll()) ;buffer[count++]= i2c_read(); //Read Next}i2c_stop(); // Stop condition

e. I2C_READ(), I2CREAD(ACK):

Hàm này ư c dùng  c mt byte qua cng I2C thit b master: lnh này to xungclock và  thíet b claver, lnh này ch  c xung clock. There is no timeout for the slave,use I2C_POLL to prevent a lockup. Use ESTART_WDT in the #USE I2C to strobe thewatch-dog timer in the slave mode while waiting.

Cú pháp: i2c_stop()i2c_stop(ack)Tham s: tùy chn, mc nh là 1ack = 0: không kim tra trng thái thu g i tín hiu (ack: acknowlegde)ack = 1: kim tra trng thái thu g i tín hiuTr tr v: 8 bit intYêu cu: #use i2c

Ví d: i2c_start();i2c_write(0xa1);data1 = i2c_read();data2 = i2c_read();i2c_stop();

f. I2C_WRITE():Hàm này ư c dùng Gi tng byte thông qua giao din I2C. ch  ch s phát raxung Clock v i d liu và  ch  Slave s ch xung Clock t con ch truyn v. Khôngt ng m ngoài là iu kin ca lnh này. Lnh này s tr v bit ACK. Phát LSB trư ckhi truyn khi ã xác nh hư ng truyn ca d liu truyn (0 cho master sang slave).Chú ý chun giao tip I2C

ph thuc vào thit b slave.+ Cú pháp: i2c_write(data)+ Tham s: data: 8 bit int+ Tr tr v: Lnh này tr v bit ACKack = 0: không kim tra trng thái thu g i tín hiu (ack: acknowlegde)ack = 1: kim tra trng thái thu g i tín hiu+ Yêu cu: #use i2cVí d: long cmd;...

Page 103: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 103/126

Giáo trình Vi iu Khin

103

i2c_start(); //Start conditioni2c_write(0xa0); //Device addressi2c_write(cmd); //Low byte of commandi2c_write(cmd>>8); //High byte of commandi2c_stop(); //Stop condition 

Chươ ng III: S Dng Ngt

III.1. Cu Trúc Chươ ng Trình Có S Dng Ngt.III.1.1. Khai Báo Ngt.Enable_interrupts(int_EXT);// Cho phép ngt ngoàiEnable_interrupts(global); // Cho phép ngt toàn cc#INT_AD : chuyeån ñoåi A /D ñaõ hoaøn taát , thöôøng thì khoâng neân duøng#INT_CCP1 : coù Capture hay compare treân CCP1#INT_CCP2 : coù Capture hay compare treân CCP2#INT_COMP : kieåm tra baèng nhau treân Comparator#INT_EXT : ngaét ngoaøi#INT_I2C : coù hoaït ñoäng I 2C

#INT_LCD : coù hoaït ñoäng LCD#INT_PSP : coù data vaøo coång Parallel slave#INT_RB : baát kyø thay ñoåi naøo treân chaân B4 ñeán B7#INT_RDA : data nhaän töø RS 232 saün saøng#INT_RTCC : traøn Timer 0#INT_SSP : coù hoaït ñoäng SPI hay I 2C#INT_TBE : boä ñeäm chuyeån RS 232 troáng#INT_TIMER0 : moät teân khaùc cuûa #INT_RTCC#INT_TIMER1 : traøn Timer 1#INT_TIMER2 : traøn Timer 2

III.1.2 Cu Trúc Chươ ng Trình#include <16F877a.h>#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay(clock=4000000)#INT_xvoid ngat();void main(){enable_interrupts(int_x);// Khai báo ngt gì?enable_interrupts(global); // Cho phép ngt toàn cc

Chươ ng trình chính;}void ngat(){X lý ngt;}

III.2. S Dng NgtIII.2.1. Ngt RB0#include <16F877a.h>#fuses XT,NOWDT,NOPROTECT,NOLVP

Page 104: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 104/126

Giáo trình Vi iu Khin

104

#use delay(clock=4000000)#use fast_io(b)#byte portb=0x6#bit b7=portb.7#INT_EXTvoid ngat(){

b7=!b7;}

void main(){

enable_interrupts(int_EXT);enable_interrupts(global);set_tris_b(0b00000001);portb=0;

While (1){} }

III.2.2. Ngt Timer#include <16F877a.h>#fuses XT,NOWDT,NOPROTECT,NOLVP#use delay(clock=4000000)#use fast_io(b)#byte portb=0x6#bit b0=portb.0int16 time;#INT_TIMER1void Ngat_timer1();void main()

{ enable_interrupts(int_timer1);//Ngat Timer1enable_interrupts(global); // Ngat toan cucsetup_timer_1(t1_INTERNAL|t1_div_by_4); // Chia tanset_timer1(55535);//Cai gia tri cho Timer1set_tris_b(0b0);

While (1){}

}#INT_TIMER1void Ngat_timer1()

{ set_timer1(55535);//Cai gia tri cho Timer1b0=!b0;

}

Page 105: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 105/126

Giáo trình Vi iu Khin

105

PH LC: CÁC THANH GHI CH C NĂNG 

1. Thanh ghi TMR0: ñòa chæ 01h, 101h.

Thanh ghi 8 bit chöùa giaù trò cuûa boä ñònh thôøi Timer0.

2. Thanh ghi PCL: ñòa chæ 02h, 82h, 102h, 182h.Thanh ghi chöùa 8 bit thaáp cuûa boä ñeám chöông trình (PC) 

3. Thanh ghi STATUS: ñòa chæ 03h, 83h, 103h, 183h

IPR RP1 RP0 TO PD Z DC C

Bit 7 Bit 0

Thanh ghi trng thái cha các trng thái s hc ca b ALU, trng thái Reset và các

bit chn Bank ca b nh d liu.

Bit 7 IRP: Bit la chn bank thanh ghi (S dng cho nh a ch gián tip).

1 = Bank 2, 3 (100h – 1FFh )

0 = Bank 0, 1 (00h – FFh)

Bit 6 – 5 RP1 – RP0: Bit la chn bank thanh ghi (Dùng trong nh i ch trc tip).

11 = Bank 3 ( 180h – 1FFh)

10 = Bank 2 (100h – 17Fh)

01 = Bank 1 (80h – FFh)00 = Bank 0 (00h – 7Fh)

Each bank is 128 bytes

Bit 4 TO: Bit báo hiu hot ng ca WDT.

1: Lnh xóa WDT hoc Sleep xy ra.

0: WDT hot ng.

Bit 3 PD: Bit báo công sut thp ( Power down bit).

1: Sau khi ngun tăng hoc có lnh xóa WDT.

0: Thc thi lnh Sleep.

Bit 2 Z: bit Zero

1: Khi kt qu ca mt phép toán bng 0.

0: Khi kt qu ca mt phép toán khác 0.

Bit 1 DC: Digit Carry

1: Có mt s nh sinh ra b i phép cng hoc phép tr 4 bit thp.

0: Không có s nh sinh ra.

Bit 0 C: c nh (Carry Flag)

Page 106: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 106/126

Giáo trình Vi iu Khin

106

1: Có mt s nh sinh ra b i phép cng hoc phép tr 4 bit cao.

0: Không có s nh sinh ra.

4. Thanh ghi FSR: ñòa chæ 04h.

Thanh ghi chöùa con troû ñòa chæ giaùn tieáp cuûa boä nhôù döõ lieäu. 

5. Thanh ghi PORTA: ñòa chæ 05h.

Thanh ghi chöùa giaù trò nhaän vaøo hay xuaát ra PORTA.6. Thanh ghi PORTB: ñòa chæ 06h, 106h.

Thanh ghi chöùa giaù trò nhaän vaøo hay xuaát ra PORTB.

7. Thanh ghi PORTC: ñòa chæ 07h.

Thanh ghi chöùa giaù trò nhaän vaøo hay xuaát ra PORTC

8. Thanh ghi PORTD: ñòa chæ 08h.

Thanh ghi chöùa giaù trò nhaän vaøo hay xuaát ra PORTD.

9. Thanh ghi PORTE: ñòa chæ 09h.

Thanh ghi chöùa giaù trò nhaän vaøo hay xuaát ra PORTE.

10. Thanh ghi PCLATCH: ñòa chæ 0Ah, 8Ah, 10Ah, 18Ah.

Thanh ghi ñoùng vai troø laø buffer ñeäm trong quaù trình ghi giaù trò leân 5 bit cao cuûa boä

ñeám chöông trình PC. 

11. Thanh ghi INTCON: ñòa chæ 0Bh, 8Bh, 10Bh, 18Bh.

Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép c và ghi, cha các bit

iu khin và các bit c hiu khi timer0 b tràn, ngt ngoi vi RB0/INT và ngt

interrputon-change ti các chân ca PORTB.

GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF

Bit 7 Bit 0

Bit 7: GIE Global Interrupt Enable bit

GIE = 1 cho phép tt c các ngt.

GIE = 0 không cho phép tt c các ngt.

Bit 6: PEIE Pheripheral Interrupt Enable bit

PEIE = 1 cho phép tt c các ngt ngoi viPEIE = 0 không cho phép tt c các ngt ngoi vi

Bit 5: TMR0IE Timer0 Overflow Interrupt Enable bit

TMR0IE = 1 cho phép ngt Timer0

TMR0IE = 0 không cho phép ngt Timer0

Bit 4: INTE RB0/INT External Interrupt Enable bit

INTIE = 1 cho phép ngt ngoi vi RB0/INT

Page 107: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 107/126

Giáo trình Vi iu Khin

107

INTIE = 0 không cho phép ngt ngoi vi RB0/INT

Bit3: RBIE RB Port change Interrupt Enable bit

RBIE = 1 cho phép ngt RB Port change

RBIE = 0 không cho phép ngt RB Port change

Bit 2: TMR0IF Timer0 Interrupt Flag bit

TMR0IF = 1 thanh ghi TMR0 b tràn (phi xóa bng chươ ng trình) .TMR0IF = 0 thanh ghi TMR0 chưa b tràn.

Bit 1: INTF BR0/INT External Interrupt Flag bit

INTF = 1 ngt RB0/INT xy ra (phi xóa c hiu bng chươ ng trình).

INTF = 0 ngt RB0/INT chưa xy ra.

Bit 0: RBIF RB Port Change Interrupt Flag bit

RBIF = 1 ít nht có mt chân RB7:RB4 có s thay i trng thái.Bit này phi

ư c xóa bng chươ ng trình sau khi ã kim tra licác giá tr ca các chân ti

PORTB.

RBIF = 0 không có s thay i trng thái các chân RB7:RB4 

12. Thanh ghi PIR1: ñòa chæ 0Ch

Thanh ghi chöùa côø ngaét cuûa caùc khoái ngoaïi vi.

PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

Bit 7 Bit 0

Bit 7: PSPIF Parallel Slave Port Read/Write Interrupt Flag bit

PSPIF = 1 va hoàn tt thao tác c hoc ghi PSP (phi xóa bngchươ ng trình).

PSPIF = 0 không có thao tác c ghi PSP nào din ra.

Bit 6: ADIF ADC Interrupt Flag bit

ADIF = 1 hoàn tt chuyn i ADC.

ADIF = 0 chưa hoàn tt chuyn i ADC.

Bit 5: RCIF USART Receive Interrupt Flag bit

RCIF = 1 buffer nhn qua chun giao tip USART ã y.

RCIF = 0 buffer nhân qua chun giao tip USART rng.

Bit 4: TXIF USART Transmit Interrupt Flag bit

TXIF = 1 buffer truyn qua chun giao tip USART rng.TXIF = 0 buffer truyn qua chun giao tip USART y.

Bit 3: SSPIF Synchronous Serial Port (SSP) Interrupt Flag bit

SSPIF = 1 ngt truyn nhn SSP xy ra.

SSPIF = 0 ngt truyn nhn SSP chưa xy ra.

Bit 2: CCP1IF CCP1 Interrupt Flag bit

Khi CCP1  ch  Capture

Page 108: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 108/126

Giáo trình Vi iu Khin

108

CCP1IF=1 ã cp nht giá tr trong thanh ghi TMR1.

CCP1IF=0 chưa cp nht giá tr trong thanh ghi TMR1.

Khi CCP1  ch  Compare

CCP1IF=1 giá tr cn so sánh bng v i giá tr cha trong TMR1

CCP1IF=0 giá tr cn so sánh không bng v i giá tr trong TMR1.

Bit 1: TMR2IF TMR2 to PR2 Match Interrupt Flag bitTRM2IF = 1 giá tr cha trong thanh ghi TMR2 bng v i giá tr cha

trong thanh ghi PR2.

TRM2IF = 0 giá tr cha trong thanh ghi TMR2 chưa bng v i giá tr 

cha trong thanh ghi PR2.

Bit 0: TMR1IF TMR1 Overflow Interrupt Flag bit

TMR1IF = 1 thanh ghi TMR1 b tràn (phi xóa bng chươ ng trình).

TMR1IF = 0 thanh ghi TMR1 chưa b tràn 

13. Thanh ghi PIR2: ñòa chæ 0Dh

- CMIF - EEIF BCLIF - - CCP2IF

Bit 7 Bit 0

Bit 7, 5, 2, 1: không quan tâm và mc nh mang giá tr 0.

Bit 6: CMIF Comparator Interrupt Flag bit

CMIF = 1 tín hiu ngõ vào b so sánh thay i.

CMIF = 0 tín hiu ngõ vào b so sánh không thay i.

Bit 4: EEIF EEPROM Write Operation Interrupt Flag bit

EEIF = 1 quá trình ghi d liu lên EEPROM hoàn tt.

EEIF = 0 quá trình ghi d liu lên EEPROM chưa hoàn tt hoc chưa bt u.

Bit 3: BCLIF Bus Collision Interrupt Flag bit

BCLIF = 1 Bus truyn nhn ang bn khi (ang có d liu truyn i trong bus) khi

SSP ht ng  ch  I2C Master mode.

BCLIF = 0 Bus truyn nhn chưa b tràn (không có d liu truyn itrong bus).

Bit 0: CCP2IF CCP2 Interrupt Flag bit

ch  CaptureCCP2IF = 1 ã cp nht giá tr trong thanh ghi TMR1.

CCP2IF = 0 chưa cp nht giá tr trong thanh ghi TMR1.

ch  Compare

CCP2IF = 1 giá tr cn so sánh bng v i giá tr cha trong TMR1.

CCP2IF = 0 giá tr cn so sánh chưa bng v i giá tr cha trong TMR1 

14. Thanh ghi TMR1L: ñòa chæ 0Eh

Page 109: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 109/126

Giáo trình Vi iu Khin

109

Thanh ghi chöùa 8 bit thaáp cuûa boä ñònh thôøi TMR1.

15. Thanh ghi TMR1H: ñòa chæ 0Fh

Thanh ghi chöùa 8 bit cao cuûa boä ñònh thôøi TMR2. 

16. Thanh ghi T1CON: ñòa chæ 10h

Thanh ghi ñieàu khieån Timer1.

- - T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ONBit7 Bit 0

Bit 7,6 Không s dng, c là 0.

Bit 5,4 T1CKPS1 : T1CKPS0 : Các bit chn t l xung ngõ vào cho Timer1.

11 1 : 8 giá tr t l 

10 1 : 4 giá tr t l 

01 1 : 2 giá tr t l 00 1 : 1 giá tr t l 

Bit 3 T10SCEN : Bit cho phép b dao ng Timer 1 Oscillator

1 : Cho phép dao ng

0 : Không cho phép dao ng

Bit 2 T1SYNC : Bit la chn ng b hóa xung clock ngoài ca Timer 1

(Chú ý: Bit này ch có tác dng khi bit TMR1CS = 1)

1: Không ng b hóa xung clock ngoi

0: ng b hóa xung clock ngoi.Bit 1 TMR1CS : Bit chn ngun xung clock cho Timer 1

1: Chn xung clock ngoài qua chân T1OSC/T1CKI ( tác ng cnh lên)

0: Chn xung clock ni (Fosc/4)

Bit 0 TMR1ON: Bit cho phép ngoc ngưng Timer 1 

1: Cho phép

0: Không cho phép 

17. Thanh ghi TMR2: ñòa chæ 11h

Thanh ghi chöùa giaù trò boä ñeám Timer2.

18. Thanh ghi T2CON: ñòa chæ 12h

Thanh ghi ñieàu khieån Timer2.

- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 Bit 7 Bit0 

Bit 7: không s dng

Page 110: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 110/126

Giáo trình Vi iu Khin

110

Bit 6:3 TOUTPS3:TOUTPS0: Bit chn t l ngõ ra ca Timer 2

0000: 1:1 T l ngõ ra

0001: 1:2 T l ngõ ra

.

1111: 1:16 T l ngõ ra

Bit 2 TMR2ON: Bit cho phép hot ng ca Timer 21: Cho phép

0: Không cho phép.

Bit 1:0 T2CKPS1:T2CKPS0: Bit chn t l ngõ vào ca Timer 2

00 : Prescaler 1

01 : Prescaler 4

1x : Prescaler 16 

19. Thanh ghi SSPBUF: ñòa chæ 13h

Thanh ghi ñeäm döõ lieäu 8 bit cho chuaån giao tieáp MSSP.20. Thanh ghi SSPCON: ñòa chæ 14h

Thanh ghi iu khin chun giao tip MSSP.

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

Bit 7 Bit 0

Khi MSSP  ch  SPI:

Bit 7 WCOL Write Collition Detect bit

WCOL = 1 d liu m i ư c ưa vào thanh ghi SSPBUF trong khi chưa truynxong d liu trư c ó.

WCOL = 0 không có hin tư ng trên xy ra.

Bit 6 SSPOV Receive Overflow Indicalor bit (bit này ch có tác dng  ch  SPI

Slave mode).

SSPOV = 1 d liu trong bufer m (thanh ghi SSPBUF) b tràn (d liu cũ 

chưa ư c c thì có d liu m i gi è lên).

SSPOV = 0 không có hin tư ng trên xy ra.

Bit 5 SSPEN Synchronous Serial Port Enable bitSSPEN = 1 cho phép cng giao tip MSSP (các pin SCK, SDO, SDI và ).

SSPEN = 0 không cho phép cng giao tip MSSP.

Bit 4 CKP Clock Polarity Select bit

CKP = 1 trng thái ch ca xung clock là mc logic cao.

CKP = 0 trng thái ch ca xung clock là mc logic thp.

Bit 3-0 SSPM3:SSPM0 Synchronous Serial Mode Select bit

Page 111: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 111/126

Giáo trình Vi iu Khin

111

Các bit này óng vai trò la chn các ch  hot ng ca MSSP.

0101 Slave mode, xung clock ly t pin SCK, không cho phép pin iu khin

( là pin I/O bình thư ng).

0100 SPI Slave mode, xung clock ly t pin SCK, cho phép pin iu khin .

0011 SPI Master mode, xung clock bng (ngõ ra TMR2)/2.

0010 SPI Master mode, xung clock bng (FOSC/64).0001 SPI Master mode, xung clock bng (FOSC/16).

0000 SPI Master mode, xung clock bng (FOSC/4).

Các trng thái không ư c lit kê hoc không có tác dng iu khin hoc ch 

có tác dng i v i ch  I2C mode.

Khi MSSP  ch  I2C

Bit 7 WCOL Write Collition Detect bit

Khi truyn d liu  ch  I2C Master mode:

WCOL = 1 ưa d liu truyn i vào thanh ghi SSPBUF trong khi ch  

truyn d liu ca I2C chưa sn sàng.

WCOL = 0 không xy ra hin tư ng trên.

khi truyn d liu  ch  I2C Slave mode:

WCOL = 1 d liu m i ư c ưa vào thanh ghi SSPBUF trong khi d liu cũ 

chưa ư c truyn i.

WCOL = 0 không có hin tư ng trên xy ra.

ch  nhn d liu (Master hoc Slave):

Bit này không có tác dng ch thi các trng thái.

Bit 6 SSPOV Receive Overflow Indicator Flag bit. Khi nhn d liu:SSPOV = 1 d liu m i ư c nhn vào thanh ghi SSPBUF trong khi d liu cũ 

chưa ư c c.

SSPOV = 0 không có hin tư ng trên xy ra.

Khi truyn d liu:

Bit này không có tác dng ch th các trng thái.

Bit 5 SSPEN Synchronous Serial Port Enable bit

SSPEN = 1 cho phép cng giao tip MSSP (các pin SDA và SCL).

SSPEN = 0 không cho phép cng giao tip MSSP.Cn chú ý là các pin SDA và SCL phi ư c iu khin trng thái bng các bit

tươ ng ng trong thanh ghi TRISC trư c ó).

Bit 4 CKP SCK Release Control bit

ch  Slave mode:

CKP = 1 cho xung clock tác ng.

CKP = 0 gi xung clock  mc logic thp ( bo m th i gian thit lp d liu).

Page 112: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 112/126

Giáo trình Vi iu Khin

112

Bit 3,0 SSPM3:SSPM0

Các bit này óng vai trò la chn các ch  hot ng ca MSSP.

1111 I2C Slave mode 10 bit a ch và cho phép ngt khi phát hin bit Start và

bit Stop.

1110 I2C Slave mode 7 bit a ch và cho phép ngt khi phát hin bit Start và

bit Stop.1011 I2C Firmwave Controlled Master mode (không cho phép ch  Slave).

1000 I2C Master mode, xung clock = FOSC/(4*(SSPADD+1)).

0111 I2C Slave mode 10 bit a ch.

Các trng thái không ư c lit kê hoc không có tác dng iu khin hoc ch có

tác dng i v i ch  SPI mode. 

21. Thanh ghi CCPR1L: ñòa chæ 15h

Thanh ghi chöùa 8 bit thaáp cuûa khoái CCP1.

22. Thanh ghi CCPR1H: ñòa chæ 16hThanh ghi chöùa 8 bit cao cuûa khoái CCP1.

23. Thanh ghi CCP1CON vaø thanh ghi CCP2CON: ñòa chæ 17h (CCP1CON) vaø 1Dh

(CCP2CON)

Thanh ghi ñieàu khieån khoái CCP1.

- - CCPXX CCPXY CCPXMP3 CCPXMP2 CCPXMP1 CCPXMP0

7 0

Bit 7,6 Không có tác dng và mc nh mang giá tr 0.

Bit 5,4 CCPxX:CCPxY: PWM least Significant bits (các bit này không có tác dng   

ch  Capture và Compare). ch  PWM, ây là 2 bit MSB cha giá tr tính  

rng xung (duty cycle) ca khi PWM (8 bit còn li ư c cha trong thanh ghi

CCPRxL).

Bit 3-0 CCPxM3:CCPxM0 CCPx Mode Select bit

Các bit dùng xác lp các ch  hot ng ca khi CCPx

0000 không cho phép CCPx (hoc dùng reset CCPx)

0100 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh xung ti pin dùng cho khi CCPx.

0101 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh lên ti pin dùng cho khi CCPx.

0110 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

cnh lên th 4 ti pin dùng cho khi CCPx.

0111 CCPx hot ng  ch  Capture, "hin tư ng" ư c thit lp là mi

Page 113: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 113/126

Giáo trình Vi iu Khin

113

cnh lên th 16 ti pin dùng cho khi CCPx.

1000 CCPx hot ng  ch  Compare, ngõ ra ư c ưa lên mc cao và bit

CCPxIF ư c set khi các giá tr cn so sánh bng nhau.

1001 CCPx hot ng  ch  Compare, ngõ ra ư c xung mc thp và bit

CCPxIF ư c set khi các giá tr cn so sánh bng nhau.

1010 CCPx hot ng  ch  Compare, khi các giá tr cn so sánh bngnhau, ngt xy ra, bit CCPxIF ư c set và trng thái pin output không b nh

hư ng.

1011 CCPx hot ng  ch  Compare, khi các giá tr cn so sánh bng

nhau, xung trigger c bit (Trigger Special Event) s ư c to ra, khi ó c  

ngt CCPxIF ư c set, các pin output không thay i trng thái, CCp1 reset

Timer1, CCP2 reset Timer1 và kh i ng khi ADC.

11xx CCPx hot ng  ch  PWM.

24. Thanh ghi RCSTA: a ch 18h

Thanh ghi cha các bit trng thái và các bit iu khin quá trình nhn d liu qua

chun giao tip USART.

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

Bit 7 Bit 0

Bit 7 SPEN Serial Port Enable bit

SPEN = 1 Cho phép cng giao tip USART (pin RC7/RX/DT và RC6/TX/CK).

SPEN = 0 không cho phép cng giao tip USART.Bit 6 RX9 9-bit Receive Enable bit

RX9 = 1 nhn 9 bit d liu.

RX9 = 0 nhn 8 bit d liu.

Bit 5 SREN Single Receive Enable bit

ch  USART bt ng b: bit này không cn quan tâm.

ch  USART Master ng b:

SREN = 1 cho phép chc năng nhn 1 byte d liu (8 bit hoc 9 bit).

SREN = 0 không cho phép chc năng nhn 1 byte d liu.Bit 4 CREN Continous Receive Enable bit

ch  bt ng b:

CREN = 1 cho phép nhn 1 chui d liu liên tc.

CREN = 0 không cho phép nhn 1 chui d liu liên tc.

ch  bt ng b:

CREN = 1 cho phép nhn d liu cho t i khi xóa bit CREN.

Page 114: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 114/126

Giáo trình Vi iu Khin

114

CREN = 0 không cho phép nhn chui d liu.

Bit 3 ADDEN Address Detect Enable bit

ch  USART bt ng b 9 bit

ADDEN = 1 cho phép xác nhn a ch, khi bit RSR<8> ư c set thì ngt ư c

cho phép thc thi và giá tr trong buffer ư c nhn vào.

ADDEN = 0 không cho phép xác nhn iz5 ch, các byte d liu ư c nhnvào và bit th 9 có th ư c s dng như là bit parity.

Bit 2 FERR Framing Eror bit

FERR = 1 xut hin li "Framing" trong quá trình truyn nhn d liu.

FERR = 0 không xut hin li "Framing" trong quá trình truyn nhn d liu.

Bit 1 OERR Overrun Error bit,

OERR = 1 xut hin li "Overrun"

OERR = 0 không xut hin li "Overrun"

Bit 0 RX9D

Bit này cha bit d liu th 9 ca d liu truyn nhn.

25. Thanh ghi TXREG: a ch 19h

Thanh ghi óng vai trò là buffer m 8 bit trong quá trình truyn d liu thông qua

chun giao tip USART.

26. Thanh ghi RCREG: a ch 1Ah

Thanh ghi óng vai trò là buffer m trong quá trình nhn d liu qua chun giao tip

USART.

27. Thanh ghi CCPR2L: a ch 1Bh 

Thanh ghi cha 8 bit thp ca khi CCP2.

28. Thanh ghi CCPR2H: a ch 1Ch

Thanh ghi cha 8 bit cao ca khi CCP2.

29. Thanh ghi ADRESH: a ch 1Eh

Thanh ghi cha byte cao ca kt qu quá trình chuyn i ADC.

30. Thanh ghi ADCON0: a ch 1Fh

ây là mt trong hai thanh ghi iu khin khi chuyn i ADC. Thanh ghi còn li là

thanh ghi ADCON1 (a ch 9Fh)

Bit 7:6 ADCS1:ADCS0: Các bit la chn tn s chuyn i A/D

00 =FOSC/2

01 =FOSC/4

Page 115: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 115/126

Giáo trình Vi iu Khin

115

10 =FOSC/32

11 =FRC (xung clock ư c ly t dao ông ni RC)

Bit 5:3 CHS2:CHS0: Các bit la chn kênh Analog

000: Kênh 0, (AN0)

001: Kênh 1, (AN1)

010: Kênh 2, (AN2)011: Kênh 3, (AN3)

100: Kênh 4, (AN4)

101: Kênh 5, (AN5)

110: Kênh 6, (AN6)

111: Kênh 7, (AN7)

Bit 2 GO/ DONE: Bit báo trng thái chuyn i A/D

Khi bit ADON = 1

1: Quá trình A/D ang thc hin (Khi chúng ta set bit này lên thì quá trình

chuyn i s xy ra, khi quá trình kt thúc nó s t ng ư c xóa bng

phn mm).

0: Quá trình A/D không xy ra hoc ã hoàn tt.

Bit 1 Không s dng, giá tr là 0

Bit 0 ADON : Bit cho phép module A/D hot ng.

1: Ngun ư c cung cp cho A/D

0: Ngưng cung cp ngun cho A/D

31. Thanh ghi ADCON1: a ch 9FhThanh ghi cha các bit iu khin b chuyn i ADC (ADC có hai thanh ghi iu

khin là ADCON1 và ADCON0).

Bit 7 ADFM: Bit la chn nh dng kt qu A/D1: Canh phi, 6 bit cao nht ca thanh ghi ADRESH có giá tr 0

0: Canh trái, 6 bit thp nht ca thanh ghi ADRESL có giá tr 0

Bit 6 ADCS2: Bit la chn clock chuyn i A/D

Page 116: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 116/126

Giáo trình Vi iu Khin

116

Bit 5,4 không s dng

Bit 3:0 PCFG3:PCFG0: Các bit iu khin cu hình các chân ADC

32. Thanh ghi OPTION_REG: a ch 81h, 181h

Thanh ghi naøy cho pheùp ñoïc vaø ghi, cho pheùpñieàu khieån chöùc naêng pull-up cuûa caùc chaân

trong PORTB, xaùc laäp caùc tham soá veà xung taùcñoäng, caïnh taùc ñoäng cuûa ngaét ngoaïi vi vaø boä

ñeám Timer0. 

Thanh ghi tùy chn cha các bit iu khin cu hình cho các cha năng như:

ngt ngoài, Timer 0 chc năng kéo lên Vdd ca các chân Port B, và th i gian ch ca

WDT.

Bit 7RBPU : Bit cho phép PORTB ư c kéo lên ngun.

1: Không cho phép PORTB kéo lên ngun.

Page 117: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 117/126

Giáo trình Vi iu Khin

117

0: Cho phép PORTB kéo lên ngun.

Bit 6 INTEDG: Bít la chn cnh tác ng ngt (INTERRUPT EDGE)

1: Ngt s ư c tác ng b i cnh lên ca chân RB0/INT 

0: Ngt s ư c tác ng b i cnh xung ca chân RB0/INT 

Bit 5 T0CS: Bit la chn ngun xung Clock cho Timer 0 

1: Xung Clock cung cp b i ngun ngoài qua chân RA4/T0CKI 0: Xung Clock cung cp b i ngun dao ng ni. 

Bit 4 T0SE: Bit la chn cnh nào ca xung clock tác ng lên timer 0 

1: Cnh xung

0: Cnh lên

Bit 3 PSA: Bit quyt nh tc  m PS2:PS0 s tác ng lên Timer 0 hay WDT

1: Tc  m PS2:PS0 s tác ng lên WDT 

0: Tc  m PS2:PS0 s tác ng lên Timer 0 

Bit 2-0 PS2:PS0: Dùng la chn tc  m ca timer hay WDT

33. Thanh ghi TRISA: a ch 85h

Thanh ghi iu khin xut nhp ca các pin trong PORTA.

34. Thanh ghi TRISB: a ch 86h, 186h

Thanh ghi iu khin xut nhp ca các pin trong PORTB.

35. Thanh ghi TRISC: a ch 87h

Thanh ghi iu khin xut nhp ca các pin trong PORTC.36. Thanh ghi TRISD: a ch 88h

Thanh ghi iu khin xut nhp ca các pin trong PORTD.

37. Thanh ghi TRISE: a ch 89h

Thanh ghi iu khin xut nhp ca các pin trong PORTE, iu khin cng giao tip

song song PSP (Parallel Slave Port).

Page 118: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 118/126

Giáo trình Vi iu Khin

118

IBF OBF IBOV SPPMODE - 2 1 0

Bit 7 Bit 0

Bit 7 BIF Input Buffer Full Status bit

BIF = 1 mt Word d liu va ư c nhn và ang ch CPU c vào.

BIF = 0 chưa có Word d liu nào ư c nhn.

Bit 6 OBF Output Buffer Full Status bitOBF = 1 Buffer truyn d liu vn còn cha d liu cũ và vn chưa ư c c.

OBF = 0 Buffer truyn d liu ã ư c c.

Bit 5 IBOV Input Buffer Overflow Detect bit

IBOV = 1 d liu ư c ghi lên buffer trong khi d liu cũ vn chưa ư c c.

IBOV = 0 buffer chưa b tràn.

Bit 4 PSPMODE Parallel Slave Port Mode Select bit

PSPMODE = 1 Cho phép PSP, PORTD óng vai trò là cng giao tip song song

PSP. PSPMODE = 0 Không cho phép PSP.

Bit 3 Không cn quan tâm và mc nh mang giá tr 0.

Bit 2 Bit2 Direction Control for pin .

Bit2 = 1 Input

Bit2 = 0 Output

Bit 1 Bit1 Direction Control for pin

Bit1 = 1 Input

Bit1 = 0 Output

Bit 0 Bit0 Direction Control for pinBit0 = 1 Input

Bit0 = 0 Output

38. Thanh ghi PIE1: a ch 8Ch

Thanh ghi cha các bit cho phép các ngt ngoi vi.

PSPIE ADIE RCIE TXIE SSPIE CCPIE1 TMR2IE TMR1IE

Bit 7 Bit 0

Bit 7 PSPIE Parallel Slave Port Read/Write Interrupt Enable bit

PSPIE = 1 cho phép ngt PSP read/write.

PSPIE = 0 không cho phép ng PSP read/write.

Bit 6 ADIE ADC (A/D converter) Interrupt Enable bit

ADIE = 1 cho phép ngt ADC.

ADIE = 0 không cho phép ngt ADC.

Page 119: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 119/126

Giáo trình Vi iu Khin

119

Bit 5 RCIE USART Receive Interrupt Enable bit

RCIE = 1 cho phép ngt nhn USART

RCIE = 0 không cho phépn gt nhn USART

Bit 4 TXIE USART Transmit Interrupt Enable bit

TXIE = 1 cho phép ngt truyn USART

TXIE = 0 không cho phép ngt truyn USARTBit 3 SSPIE Synchronous Serial Port Interrupt Enable bit

SSPIE = 1 cho phép ngt SSP

SSPIE = 0 không cho phép ngt SSP

Bit 2 CCP1IE CCP1 Interrupt Enable bit

CCP1IE = 1 cho phép ngt CCP1

CCP1IE = 0 không cho phép ngt CCP1

Bít 1 TMR2IE TMR2 to PR2 Match Interrupt Enable bit

TMR2IE = 1 cho phép ngt.

TMR2IE = 0 không cho phép ngt.

Bit 0 TMR1IE TMR1 Overflow Interrupt Enable bit

TMR1IE = 1 cho phép ngt.

TMR1IE = 0 không cho phép ngt.

39. Thanh ghi PIE2: a ch 8Dh

Thanh ghi cha các bit cho phép các ngt ngai vi.

- CMIE - EEIE BCLIE - - CCP2IE

Bit 7 Bit 0

Bit 7, 5, 2, 1 Không cn quan tâm và mc nh mang giá tr 0.

Bit 6: CMIE Comparator Interrupt Enable bit

CMIE = 1 Cho phép ngt ca b so sánh.

CMIE = 0 Không cho phép ngt.

Bit 4: EEIE EEPROM Write Operation Interrupt Enable bit

EEIE = 1 Cho phép ngt khi ghi d liu lên b nh EEPROM.

EEIE = 0 Không cho phép ngt khi ghi d liu lên b nh EEPROM.Bit 3: BCLIE Bus Collision Interrupt Enable bit

BCLIE = 1 Cho phép ngt.

BCLIE = 0 Không cho phép ngt.

Bit 0: CCP2IE CCP2 Interrupt Enable bit

CCP2IE = 1 Cho phép ngt.

CCP2IE = 0 Không cho phép ngt

Page 120: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 120/126

Giáo trình Vi iu Khin

120

40. Thanh ghi PCON: a ch 8Eh

Thanh ghi iu khin cha các c hiu cho bit trng thái các ch  reset ca vi iu

khin.

Bit 7, 6, 5, 4, 3, 2 Khoâng caàn quan taâm vaø maëc ñònh mang giaù trò 0.

Bit 1 Power-on Reset Status bit

= 1 không có s tác ng ca Power-on Reset.= 0 có s tác ng ca Power-on reset.

Bit 0 Brown-out Reset Status bit

= 1 không có s tác ng ca Brown-out reset.

= 0 có s tác ng ca Brown-out reset.

41. Thanh ghi SSPCON2: a ch 91h

Thanh ghi iu khin các ch  hot ng ca chun giao tip I2C.

GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SENBit 7 Bit 0

Bit 7 GCEN General Call Enable bit

GCEN = 1 Cho phép ngt khi a ch 0000h ư c nhn vào thanh ghi SSPSR

(a ch ca ch  General Call Address).

GCEN = 0 Không cho phép ch  a ch trên.

Bit 6 ACKSTAT Acknowledge Status bit (bit này ch có tác dng khi truyn d liu

 ch  I2C Master mode).

ACKSTAT = 1 nhn ư c xung t I2C Slave.

ACKSTAT = 0 chưaq nhn ư c xung .

Bit 5 ACKDT Acknowledge Data bit (bit này ch có tác dng khi nhn d liu  ch 

I2C Master mode).

ACKDT = 1 chưa nhn ư c xung .

ACKDT = 0 ã nhn ư c xung .

Bit 4 ACKEN Acknowledge Sequence Enable bit (bit này ch có tác dng khi nhn

d liu  ch  I2C Master mode)

ACKEN = 1 cho phép xung xut hin  2 pin SDA và SCL khi kt thúcquá trình nhn d liu.

ACKEN = 0 không cho phép tác ng trên.

Bit 3 RCEN Receive Enable bit (bit này ch có tác dng  ch  I2C Master mode).

RCEN = 1 Cho phép nhn d liu  ch  I2C Master mode.

RCEN = 0 Không cho phép nhn d liu.

Bit 2 PEN Stop Condition Enable bit

Page 121: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 121/126

Giáo trình Vi iu Khin

121

PEN = 1 cho phép thit lp iu kin Stop  2 pin SDA và SCL.

PEN = 0 không cho phép tác ng trên.

Bit 1 RSEN Repeated Start Condition Enable bit

RSEN = 1 cho phép thit lp iu kin Start lp li liên tc  2 pin SDA và SCL.

RSEN = 0 không cho phép tác ng trên.

Bit 0 SEN Start Condition Enable/Stretch Enable bit ch Master mode:

SEN = 1 cho phép thit lp iu kin Start  2 pin SDA và SCL.

SEN = 0 không cho phép tác ng trên.

 ch  Slave mode:

SEN = 1 cho phép khóa xung clock t pin SCL ca I2C Master.

Không cho phép tác ng trên.

42. Thanh ghi PR2: a ch 92h

Thanh ghi dùng  n nh trư c giá tr m cho Timer2. Khi vi iu khin ư c

reset, PR2 mang giá tr FFh. Khi ta ưa mt giá tr vào thanh ghi PR2, Timer2 s m t 

00h cho n khi giá tr b m ca Timer2 bng v i giá tr ca b m trong thanh ghi

PR2. Như vy mc nh Timer2 s m t 00h n FFh.

43. Thanh ghi SSPADD: a ch 93h

Thanh ghi cha a ch ca vi iu khin khi hot ng  chun giao tip I2C Slave

mode. Khi không dùng cha a ch (I2C Master mode) SSPADD ư c dùng cha

giá tr to ra xung clock ng b ti pin SCL.

44. Thanh ghi SSPSTAT: a ch 94h

Thanh ghi cha các bit trng thái ca chun giao tip MSSP.

SMP CKE D/A P S R/W UA BF

Bit 7 Bit 0

Khi MSSP hot ng  ch  SPI:

Bit 7 SMP Sample bit

SPI Master mode:

SMP = 1 d liu ư c ly mu (xác nh trang thái logic) ti th i im cui xungclock.

SMP = 0 d liu ư c ly mu ti th i im gia xung clock.

SPI Slave mode: bit này phi ư c xóa v 0.

Bit 6 CKE SPI Clock Select bit

CKE = 1 SPI Master truyn d liu khi xung clock chuyn t trng thái tích

cc n trng thái ch .

Page 122: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 122/126

Giáo trình Vi iu Khin

122

CKE = 0 SPI Master truyn d liu khi xung clock chuyn t trng thái ch  n

trng thái tích cc.(trng thái ch  ư c xác nh b i bit CKP (SSPCON<4>).

Bit 5 bit.

Bit này ch có tác dng  ch  I2C mode.

Bit 4 P Stop bit

Bit này ch s dng khi MSSP  ch  I2C.Bit 3 S Start bit

Bit này ch có tác dng khi MSSP  ch  I2C.

Bit 2 bit information

Bit này ch có tác dng khi MSSP  ch  I2C.

Bit 1 UA Update Address bit

Bit này ch có tác dng khi MSSP  ch  I2C.

Bit 0 BF Buffer Status bit

BF = 1 thanh ghi m SSPBUF ã có d liu.

BF = 0 thanh ghi m SSPBUF chưa có d liu.

Khi hot ng  ch  I2C

Bit 7 SPM Slew Rate Control bit

SPM = 1 dùng tc chun (100 KHz và 1 MHz).

SPM = 0 dùng tc cao ( 400 KHz).

Bit 6 CKE MSBus Select bit

CKE = 1 cho phép MSBus.

CKE = 0 không cho phép MSBus.

Bit 5 bitI2C Master mode: không quan tâm.

= 1 byte va truyn i hoc nhn ư c là d liu.

= 0 byte va truyn i hoc nhn ư c là a ch.

Bit 4 P Stop bit

P = 1 va nhn ư c bit Stop.

P = 0 chưa nhn ư c bit Stop.

Bit 3 S Start bit

S = 1 va nhn ư c bit Start.S = 0 chưa nhn ư c bit Start.

Bit 2 bit information

I2C Slave mode:

= 1 c d liu.

= 0 ghi d liu.

I2C Master mode:

Page 123: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 123/126

Giáo trình Vi iu Khin

123

= 1 ang truyn d liu.

= 0 không truyn d liu.

Bit 1 UA Update Address

Bit này ch có tác dng i v i ch  I2C Slave mode10 bit a ch.

UA = 1 vi iu khin cn cp nht thêm a ch t thanh ghi SSPADD.

UA = 0 không cn cp nht thêm a ch.Bit 0 BF Buffer Full Status bit

BF = 1 Thanh ghi SSPBUF ang cha d liu truyn i hoc nhn ư c.

BF = 0 thanh ghi SSPBUF không có d liu.

45. Thanh ghi TXSTA: a ch 98h

Thanh ghi cha các bit trng thái và iu khin vic truyn d liu thông qua chun

giao tip USART.

CSRC TX-9 TXEN SYNC - BRGH TRMT TX9D

Bit 7 Bit 0

Bit 7 CSRC Clock Source Select bit

ch  bt ng b: không cn quan tâm. ch  ng b:

CSRC = 1 Master mode (xung clock ư c ly t b to xung BRG).

CSRC = 0 Slave mode (xung clock ư c nhn t bên ngoài).

Bit 6 TX-9 9-bit Transmit Enable bit

TX-9 = 1 truyn d liu 9 bit.

TX-9 = 0 truyn d liu 8 bit.Bit 5 TXEN Transmit Enable bit

TXEN = 1 cho phép truyn.

TXEN = 0 không cho phép truyn.

Bit 4 SYNC USART Mode Select bit

SYNC = 1 dng ng b 

SYNC = 0 dng bt ng b.

Bit 3 Không cn quan tâm và mc nh mang giá tr 0.

Bit 2 BRGH High Baud Rate Select bit, Bit này ch có tác dng  ch  bt ng b.BRGH = 1 tc cao.

BRGL = 0 tc thp.

Bit 1 TRMT Transmit Shift Register Status bit

TRMT = 1 thanh ghi TSR không có d liu.

TRMT = 0 thanh ghi TSR có cha d liu.

Bit 0 TX9D

Page 124: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 124/126

Giáo trình Vi iu Khin

124

Bit này cha bit d liu th 9 khi d liu truyn nhn là 9 bit.

45. Thanh ghi SPBRG: a ch 99h

Thanh ghi cha giá tr to xung clock cho b to xung BRG (Baud Rate Generator).

Tn s xung clock do BRG to ra ư c tính theo các công thc trong bng sau:

46.Thanh ghi CMCON: a ch 9Ch

Thanh ghi iu khin và ch th các trng thái cũng như kt qu ca b so sánh.

C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0

Bit 7 Bit 0

Bit 7 C2OUT Comparator 2 (C2) Output bit

Khi C2INV = 0

C2OUT = 1 khi (pin VIN+ ca C2)> (pin VIN- ca C2).

C2OUT = 0 khi (pin VIN+ ca C2) < (pin VIN- ca C2).

Khi C2INV = 1

C2OUT = 1 khi (pin VIN+ ca C2)< (pin VIN- ca C2).

C2OUT = 0 khi (pin VIN+ ca C2) > (pin VIN- ca C2).

Bit 6 C1OUT Comparator 1 (C1) Output bit

Khi C1INV = 0C1OUT = 1 khi (pin VIN+ ca C1)> (pin VIN- ca C1).

C1OUT = 0 khi (pin VIN+ ca C1) < (pin VIN- ca C1).

Khi C1INV = 1

C1OUT = 1 khi (pin VIN+ ca C1)< (pin VIN- ca C1).

C1OUT = 0 khi (pin VIN+ ca C1) > (pin VIN- ca C1).

Bit 5 C2INV Comparator 2 Output Conversion bit

C2INV = 1 ngõ ra C2 ư c o trng thái.

C2INV = 0 ngõ ra C2 không o trng thái.Bit 4 C1INV Comparator 1 Output Conversion bit

C1INV = 1 ngõ ra C1 ư c o trng thái.

C1INV = 0 ngõ ra C1 không o trng thái.

Bit 3 CIS Comparator Input Switch bit

Bit này ch có tác dng khi CM2:CM0 = 110

Page 125: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 125/126

Giáo trình Vi iu Khin

125

CIS = 1 khi pin VIN- ca C1 ni v i RA3/AN3 và pin VIN- ca C2 ni v i

RA2/AN2

CIS = 0 khi pin VIN- ca C1 ni v i RA0/AN0 và pin VIN- ca C2 ni v i

RA1/AN1

Bit 2-0 CM2:CM0 Comparator Mode bit

Các bit này óng vai trò trong vic thit lp các cu hình hot ng ca b Comparator. 

47. Thanh ghi CVRCON: a ch 9Dh

Thanh ghi iu khin b to in áp so sánh khi b Comparator

CVREN CVROE CVRR - CVR3 CVR2 CVR1 CVR0

Bit 7 Bit 0

Bit 7 CVREN Comparator Voltage Reference Enable bit.CVREN = 1 b to in áp so sánh ư c cp in áp hot ng.

CVREN = 0 b to in áp so sánh không ư c cp in áp hot ng.

Bit 6 CVROE Comparator VREF Output Enable bit

CVROE = 1 in áp do b to in áp so sánh to ra ư c ưa ra pin RA2.

CVROA = 0 in áp do b to in áp so sánh to ra không ư c ưa ra ngoài.

Bit 5 CVRR Comparator VREF Range Selection bit

CVRR = 1 mt mc in áp có giá tr VDD/24 (in áp do b to in áp so

sánh to ra có giá tr t 0 n 0.75VDD).

CVRR = 0 mt mc in áp có giá tr VDD/32 (in áp do b to in áp sosánh to ra có giá tr t 0.25 n 0.75VDD).

Bit 4 Không cn quan tâm và mc nh mang giá tr 0.

Bit 3-0 CVR3:CVR0 Các bit chn in áp ngõ ra ca b to in áp so sánh.

Khi CVRR = 1:

in áp ti pin RA2 có giá tr CVREF = (CVR<3:0>/24)*VDD.

Khi CVRR = 0

in áp ti pin RA2 có giá tr CVREF = (CVR<3:0>/32)*VDD + ¼VDD.

48. Thanh ghi ADRESL: a ch 9EhThanh ghi cha các bit thp ca kt qu b chuyn i A/D (8 bit cao cha trong

thanh ghi ADRESH a ch 1Eh).

50. Thanh ghi EEDATA: a ch 10Ch

Thanh ghi cha byte thp ca d liu trong quá trình ghi c trên b nh d liu

EEPROM.

51. Thanh ghi EEADR: a ch 10Dh

Page 126: Giao Trinh Vi Dieu Khien Pic 16F877A

5/14/2018 Giao Trinh Vi Dieu Khien Pic 16F877A - slidepdf.com

http://slidepdf.com/reader/full/giao-trinh-vi-dieu-khien-pic-16f877a 126/126

Giáo trình Vi iu Khin

Thanh ghi cha byte thp ca a ch trong quá trình ghi c trên b nh d liu

EEPROM.

52. Thanh ghi EEDATH: a ch 10Eh

Thanh ghi cha byte cao ca d liu trong quá trình ghi c trên b nh d liu

EEPROM (thanh ghi này ch s dng 6 bit thp).

53. Thanh ghi EEADRH: a ch 10FhThanh ghi cha byte cao ca a ch trong quá trình ghi c trên b nh d liu

EEPROM (thanh ghi này ch s dng 4 bit thp).

54. Thanh ghi EECON1: a ch 18Ch

Thanh ghi iu khin b nh EEPROM.

EEPGD  - - - WRERR WREN WR RD

Bit 7 Bit 0

Bit 7 EEPGD Program/Data EEPROM Select bit

EEPGD = 1 truy xut b nh chươ ng trình.

EEPGD = 0 truy xut b nh d liu.

Bit 6-4 Không cn quan tâm và mc nh mang giá tr 0.

Bit 3 WRERR EEPROM Error Flag bit

WRERR = 1 quá trình ghi lên b nh b gián on và không th tip tc (do các

ch  Reset WDT hoc ).

WRERR = 0 quá trình ghi lên b nh hoàn tt.

Bit 2 WREN EEPROM Write Enable bit

WREN = 1 cho phép ghi.

WREN = 0 không cho phép ghi.

Bit 1 WR Write Control bit

WR = 1 ghi d liu. Bit này ch ư c set bng chươ ng trình và t ng xóa v 0

khi quá trình ghi d liu hoàn tt.

WR = 0 hoàn tt quá trình ghi d liu.

Bit 0 RD Read Control bit

RD = 1 c d liu. Bit này ch ư c set bng chươ ng trình và t ng xóa v 0khi quá trình c d liu hoàn tt.

RD = 0 quá trình c d liu không xy ra.

55.Thanh ghi EECON2: a ch 18Dh.

ây là mt trong 2 thanh ghi iu khin b nh EEPROM. Tuy nhiên ây không phi

là thanh ghi vt lí thông thư ng và không cho phép ngươ i1 s dng truy xut d liu trên

thanh ghi.