Chương2:
GIỚI THIỆU HỌ VI ĐIỀU KHIỂN PIC 16F877/16F877A
IC 16F877A là một vi điều khiển được chế tạo theo cơng nghệ RISC của hãng Microchip, cĩ 40 pin.
Hình 2.1: Sơ đồ chân PIC 16F877
2.1 Các thơng số chính của Pic 16F877A:
Tập lệnh: gồm 35 lệnh đơn, gần như các lệnh được thực hiện trong một chu kỳ lệnh (một chu kỳ lệnh bằng 4 lần chu kỳ xung clock) ngoại trừ các lệnh rẽ nhánh thực hiên trong 2 chu kỳ lệnh.
Tần số hoạt động: 0 Mhz đến 20 Mhz, chu kỳ lệnh ở tần số 20 Mhz là 200ns.
Bộ nhớ
18 trang |
Chia sẻ: huyen82 | Lượt xem: 1610 | Lượt tải: 0
Tóm tắt tài liệu Thiết kế và thi công hệ thống đo đồ thị phụ tải công suất 3KVA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
chương trình (FLASH ROM): 8Kx14bit.
Bộ nhớ dữ liệu: 368 byte RAM và 256 byte EEFROM.
Điện áp làm việc: từ 2V đến 5VDC.
Dịng điện điều khiển: 25mA cho cả mức High và Low.
Số nguồn ngắt: 14.
Chức năng WATCHDOG hoạt động với bộ dao động RC bên trong vi điều khiển.
Cĩ 8 kênh chuyển đổi tương tự số (ADC) 10 bit. Cĩ 2 bộ PWM với độ phân giải 10 bit. Cĩ khả năng giao tiêp nối tiếp và giao tiếp song song.
Hình 2.2:Sơ đồ khối của PIC 16F877
2.2 Cấu trúc các cổng vào/ra:
PIC 16F877 cĩ 5 port cĩ cấu trúc và chức năng khác nhau
2.2.1 PORT A:
Gồm 6 chân điều khiển vào/ra được đa hợp với 5 kênh ADC (AN0 đến AN4). Khi được cấu hình như các kênh ADC các tín hiệu này chỉ là ngõ vào điện áp analog, trạng thái ngõ vào khi đọc luơn ở mức 0. Xem hình 2.3, 2.4. Khi khơng sử dụng như các kênh ADC thì các tín hiệu này được cấu hình như các ngõ ra hoặc ngõ vào tuỳ thuộc vào bít điều khiển hướng TRISA, nếu bit TRISA = 1: tín hiệu tương ứng là ngõ ra (vì lúc này hai MOSFET N và P đều ngưng dẫn), nếu bit TRISA = 0: tín hiệu tương ứng là ngõ ra, trạng thái logic ở ngõ ra phụ thuộc vào bit dữ lêu là 1, thơng qua data FF và TRIS latch, ngõ ra cổng OR ở mức 0, MOSFET P dẫn và cung cấp Vdd ngõ ra, trong khi ngõ ra cổng AND là 0 nên MOSFET N ngưng dẫn, ta được ngõ ra ở mức 1. Ngược lại, nếu bit data là 0 thì MOSFET P ngưng dẫn, trong khi đĩ MOSFET N dẫn, kéo ngõ ra về mức logic 0. Tín hiệu RA4 trong PORT A được đa hợp giữa nguồn cung cấp xung từ bên ngồicho bộ Timer 0. Khi được cấu hình như một I/O, RA4 sẽ được điều khiển bởi tín hiệu TRISA tương ứng, nếu TRISA = 1: ngõ ra cổng AND là mức 0, nên MOSFET N ngưng dẫn, RA4 là ngõ vào, ngược lai: RA4 là ngõ ra cực thu để hở (open collector) và mức logic phụ thuộc vào data bit, nếu data bit là 1 thì MOSFET N ngưng dẫn, do đĩ ngõ ra gần như cách ly nên thực tế thì thương dùng điện trở ngồi kéo lên (pull up resistor), giá trị điện trở phụ thuộc vào dịng mức cao cần điều khiển, tuy nhiên khơng vượt quá 25mA.
Hình 2.3: Cấu trúc của các chân RA0 đến RA3 và RA5
Hình 2.4 Cấu trúc chân RA4
2.2.2 PORT B:
Gồm 8 chân điều khiển vào/ra.
Hình 2.5: Cấu trúc của RB0 đến RB3
Cĩ thể định cấu hình các tín hiệu này như là ngõ ra hoặc ngõ vào phụ thuộc vào bit TRISB tương ứng. Nếu là ngõ ra thì MOSFET P luơn ngưng dẫn, tín hiệu ra phụ thuộc vào ngõ ra của bộ đệm, nếu là ngõ vào và nếu bit RBPU là 0 thì MOSFET P dẫn tương đương một điện trở vài kiolohm kéo ngõ vào lên nguồn để tăng dịng HIGH input.
Cấu trúc các chân này tương tự như RB0-RB3 tuy nhiên khi đựơc cấu hình như ngõ vàothì sự thay đổi trạng thái logic tại bất kỳ một trong bốn chân này cũng sẽ tạo ra sự kiện ngắt (interrupt on_change RB)
Hình 2.6: Cấu trúc RB4 đến RB7
2.2.3 PORT C:
Cấu trúc của RC0-RC2 và RC5-RC7, trong các tín hiệu này đáng quan tâm nhất là RC6 và RC7 do đa hợp với các đường USART là TxD và RxD dùng trong trao đổi dữ liệu (h ình 2.7):
Hình 2.7: Cấu trúc của RC0-RC2 và RC5-RC7
Hình 2.8:Cấu trúc của RC3 và RC4
2.2.4 PORT D:
Gồm 8 bit điều khiển vào/ra cĩ thể định cáu hình là ngõ vào hoặc ngõ ra phụ thuộc vào các bit TRISD tương ứng. Khi là ngõ ra thì tín hiệu là ngõ ra của một bộ đệm.
Hình 2.9: Cấu trúc PORT D
2.2.5 PORT E:
RE được đa hợp với 3 kênh ADC, khi sử dụng như các bộ ADC thì trạng thái đọc luơn là logic 0. Xem hình 2.10.
Hình 2.10: Cấu trúc PORT E
2.3 Bản đồ địa chỉ thanh ghi và bộ nhớ RAM:
Các thanh ghi và bộ nhớ trong PIC được ghi nhớ trong 3 bank địa chỉ, khi muốn truy xuất đến thanh ghi hoặc ơ nhớ nào phải thực hiện việc chuyển đến bank thanh ghi đĩ ngoại trừ các thanh ghi STATUS, FSR, PCL, PCLATH, INTCON và các ơ nhớ cĩ địa chỉ từ 70H đến7FH. Việc định bank cho thanh ghi được điều chỉnh bởi 2 bit thấp RP0 và RP1 trong thanh ghi STATUS:
Bảng 2.1: Bảng định trang
Hình 2.11: Bản đồ địa chỉ thanh ghi
2.4 Bản đồ bộ nhớ chương trình :
Bộ nhớ chương trình chia làm 4 trang, mỗi trang cĩ kich thước 2Kx14bit , nếu dung lượng mã lệnh dưới 2K thì khơng cần quan tâm đến lưu ý này, ngược lại, khi muốn chuyển đến các đoạn chương trình nằm ở trang nào dùng các lệnh gọi chương trình con (CALL) hoặc lệnh nhảy khơng điều kiện (GOTO) phải thực hiện chuyển trang bộ nhớ. Hai bit 3 và 4 của PCLATH cho phép chọn trang (xem bảng 2.2).
Hình 2.12: Bản đồ bộ nhớ chương trình
PC_LATH
PC_LATH
TRANG
0
0
0 (DEFAULT)
0
1
1
1
0
2
1
1
3
Bảng 2.2: Cho phép chọn trang
2.5 Tập lệnh PIC:
ADDLW (Add literal and W):
Cú pháp: ADDLW K
Trong đĩ: K là một giá trị một byte (0->255)
Thực hiện lệnh: W<- W +
Thời gian:1 chu kì
Cờ ảnh hưởng:C;Z
Ví dụ: W = 0x 10
ADDLW 0x21
Sau khi thực hiện lệnh, nội dung thanh ghi W = 0x31
ADDWF (Add W and file):
Cú pháp: ADDWF F,d
Trong đĩ: F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ; d= 0 : kết quả lưu vào W; d=1: két quả lưu vào thanh ghi F
Thực hiện lệnh: thanh ghi kết quả <-W+F
Thời gian:1 chu kì
Cờ ảnh hưởng:C,Z
ANDLW (And literal with W):
Cú pháp: ANDLW K
Trong đĩ: K là một giá trị một byte (0->255)
Thực hiện lệnh: W<- W and K
Thời gian:1 chu kì
Cú pháp: ANDWF F,d
Trong đĩ: F là một ơ nhớ RAM (9 cĩ địa chỉ từ 0 đến 127)hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d=0: kết quả lưu vào W ; d= 1 : keets quả lưu vào thanh ghi F .
Thực hiện lệnh: thanh ghi kết quả <-W and K
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
BCF (Bit clear F):
Cú pháp: BFS F,b
Trong đĩ: F là một thanh ghi.
b là vị trí bit trongg thanh ghi (b =[0,7] )
Thực hiện lệnh: bit thứ b trong F<- 1
Thời gian:1 chu kì
Cờ ảnh hưởng: khơng
BTFSC (Bit test, skip if clear):
Cú pháp: BTFSC F,b
Trong đĩ: F là một thanh ghi; b là vị trí bit trong thanh ghi (b=[0,7])
Thực hiện lệnh:nếu bit của thanh ghi F là 0 thì bỏqua lệnh kế tiếp ( thay thế lệnh kế tiếp bằng một lệnh NOP), ngược lại sẽ thự hiện lệnh kế tiếp.
Thời gian: 1 hoặc 2 chu kì ( nếu bit b trong F là 0 thì mất 2 chu kì để thực hiện lệnh)
Cờ ảnh hưởng:khơng
BTFSS (Bit test, skip if set):
Cú pháp: BTFSS F,b
Trong đĩ: F là một thanh ghi.
b là vị trí bit trong thanh ghi (b=[0,7])
Thực hiện lệnh: Nếu bit b của thanh ghi Flà 1 thì bỏ qua lệnh kế tiếp (thay thế lệnh kế tiếp bằng một lệnh NOP), ngược lại sẽ thực hiện lênh kế tiếp.
Thời gian: 1 hoăc 2 chu kì (nếu bit b trong F là 1 thì mất 2 chu kì đẻ thực hiện lệnh)
Cờ ảnh hưởng: khơng
CALL (Call subroutine):
Cú pháp: CALL
Đây là lệnh gọi thực hiện 1 chương trình con
Thời gian: 2 chu kì
Cờ ảnh hưởng: khơng
CLRF (Clear F):
Cú pháp: CLLRF F
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hộăc là một thanh ghi
Thực hiện lệnh: F<- 0x00
Thời gian:1 chu kì
Cờ ảnh hưởng: Z=1
CLRW (Clear W):
Cú pháp: CLRW
Thực hiện lệnh: W<- 0
Thời gian: 1 chu kì
Cờ ảnh hưởng: Z=1
CLRWDT (Clear watchdog timer):
Cú pháp: CLRWDT
Thực hiện lệnh: WDT<-0
WDT prescaler <-0
Bit TO <- 1
Bit PD <- 1
Thời gian thực hiện:1 chu kì
Cờ ảnh hưởng: TO,PD
COMF (Complement F):
Cú pháp: COMF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ;d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- not (F)
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
DECF (decrement F):
Cú pháp: DECF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ; d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- F-1
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
.DECFSZ (Decrement F, skip if zero):
Cú pháp: DECFSZ F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ;d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- F-1, nếu kết quả là 0 thì lệnh kế tiếp bị bỏ qua (thay thế lệnh kế tiếp bằng lệnh NOP), ngược lại sẽ thực hiện lệnh kế tiếp.
Thời gian: 1 hoặc 2 chu kì (nếu kết quả là zero thì mất 2 chu kì )
Cờ ảnh hưởng: khơng.
GOTO (unconditional branch):
Cú pháp: GOTO
Thực hiện: chuyển đến thực hiện lênh tại vị trí được chỉ ra bởi .
Thời gian: 2 chu kì
Cờ ảnh hưởng: khơng
INCF (Increment F):
Cú pháp: INCF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127)hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ;d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- F+1
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
INCFSZ (Increment F, skip if zero):
Cú pháp: INCFSZ F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127)hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ; d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- F+1, nếu kết quả là 0 thì lệnh kế tiếp bị bỏ qua (thay thế lệnh kế tiếp bằng lệnh NOP), ngược lại sẽ thực hiện lệnh kế tiếp
Thời gian:1 hoặc 2 chu kì(nếu kết quả là zero thì mất 2 chu kì )
Cờ ảnh hưởng: khơnng
ORLW (Inclusive OR literal with F):
Cú pháp: IORLW k
Trong đĩ: k là một gía trị 1 byte
Thực hiện: W <- W OR k
Thời gian: 1 chu kì
Cờ ảnh hưởng: Z
IORWF (Inclusive OR W with F):
Cú pháp: IORWF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ;d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thannh ghi đích <- W OR F
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
MOVLW (Move literal to W):
Cú pháp MOVLW k
Trong đĩ: k là một gía trị 1 byte
Thực hiện: W <- k
Thời gian: 1 chu kì
Cờ ảnh hưởng: khơng
MOVF (Move f):
Cú pháp MOVF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thanh ghi đích <- F
Thời gian:1 chu kì
Cờ ảnh hưởng:Z
MOVWF (Move W to F):
Cú pháp MOVWF F
F một ơ nhớ RAM (cĩ địa chỉ từ 0 đến127) hoặc là một thanh ghi
Thực hiện lệnh:F<- w
Thời gian: 1 chu kì
Cĩ ảnh hưởng: khơng
NOP (No operation):
Cú pháp: NOP
Thực hiện: khơng làm gì cả
thời gian: 1 chu kì
Cĩ ảnh hưởng: khơng
RETFIE (Return from interrupt):
Cú pháp: RETFIE
Thực hiện: lệnh kết thúc chương trình con phục vụ ngắt.
Thời gian: một chu kỳ.
Cờ ảnh hưởng: khơng.
RETLW (Retu with literal in W):
Cú pháp RETLW k
K là một giá trị của một byte
Thực hiện lệnh: W<-k
PC <- địa chỉ quay về chương trình chính trong stack
Thời gian: 1 chu kỳ
Cờ ảnh hưởng: khơng
RETURN (return from subrountine ):
Thực hiện: lệnh kết thúc trong một chương trình con
Thời gian: 1 chu kỳ
Cờ ảnh hưởng: khơng
RLF (Rotation left F through carry flag ):
Cú pháp RLF F,d
F là một ơ nhớ RAM (cĩ địa chỉ ttừ 0 đến 127 )hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d =0: kết quả lưu vào W; d =1: kết quả lưu vào thanh F
Thời gian: 1 chu kì
Cờ ảnh hưởng : carry
RRF (Rotation right F through carry flag):
Cú pháp: RRF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127 ) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d =0: kết quả lưu vào W; d =1: kết quả lưu vào thanh F
Thời gian: 1 chu kì
Cờ ảnh hưởng: carry
SLEEP:
Cú pháp SLEEP
Thực hiện: WDT <- 0x00
WDT prescaler <-0
Bit TO<-1
Bit PD<-0
OSC ngừng hoạt động , vi điều khiển đi vào trang thái SLEEP
Thời gian: chu kì
SUBLW (Subtract W from literal):
Cú pháp: SUBLW k ,k là giá trị một byte
Thực hiện lệnh: W <-W-k
Thời gian: 1 chu kì
Cờ ảnh hưởng: C, Z
SUBWF (Subtract W from F):
Cú pháp: SUBWF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127)hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: thanh ghi đich <-W-F
Thời gian:1 chu kì
Cờ ảnh hưởng:C,Z
SWAPF (Swap nibble in F):
Cú pháp: SWAPF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127) hoặc là một thanh ghi
d: hướng di chuyển dữ liệu ;d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F
Thực hiện: High nibble low nibble
Thời gian:1 chu kì
Cờ ảnh hưởng: khơng
XORLW (Exclusive OR literal with W):
Cú pháp: XORLW k
k là giá trị một byte
Thực hiện: W<-W XOR k
Thời gian: 1 chu kì
Cờ ảnh hưởng: Z
XORWF (Exclusive OR W with F ):
Cú pháp: XORWF F,d
F là một ơ nhớ RAM (cĩ địa chỉ từ 0 đến 127)hoặc là một thanh ghi
d: hướng di chuyển dữ liệu; d=0: kết quả lưu vào W; d=1 kết quả lưu vào thanh ghi F.
Thực hiện: thanh ghi đích <- W XOR F
Thời gian:1 chu kì.
Cờ ảnh hưởng: Z.
._.