Bài giảng về Vi điều khiển PIC 16F877A

33 682 5
Bài giảng về Vi điều khiển PIC 16F877A

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG TỔNG QUAN VỀ PIC 1.1 Tổng quan PIC 1.2 Vi điều khiển PIC 16f877A 1.3 Ngôn ngữ lập trình ASM PIC 16F877A 1.1 Tổng quan PIC PIC họ vi điều khiển sản xuất công ty Microchip Technology Một số đặc tính PIC: - Có cổng xuất nhập (I/O pin) - Có timer 8/16 bit - Có chuyển đổi ADC 10/12 bit - Có khối tạo xung PWM - Tất lệnh thực thi chu kỳ máy, trừ lệnh gọi chương trình chu kỳ - Tần số thạch anh tối đa 20MHz Công thức tính chu kỳ máy: PIC 16F877A 1.2 Vi điều khiển PIC 16F877A a Tổng quan: PIC 16F877A 1.2 Vi điều khiển PIC 16F877A PIC 16F877A có 40 chân với cấu trúc sau: - Có port xuất nhập: A, B, C, D, E - Có Timer - Có 15 nguồn ngắt - Có kênh tạo xung PWM - Có kênh chuyển đổi A/D PIC 16F877A 1.2 Vi điều khiển PIC 16F877A Chức chân sau: - Các chân nguồn: + Chân 11 32 (chân Vdd): cấp nguồn +5V + Chân 12 31 (chân Vss): cấp nguồn 0V PIC 16F877A 1.2 Vi điều khiển PIC 16F877A - Mạch dao động: chân 13 14 có nhiệm vụ tạo dao động cho 16F877A PIC 16F877A 1.2 Vi điều khiển PIC 16F877A - Chân reset: chân 1, tác động mức thấp (ngược với 8051) PIC 16F877A 1.2 Vi điều khiển PIC 16F877A - Cổng xuất nhập: + Port A ghi TRISA: * Cổng A có bit thực chức xuất nhập chiều, việc xác định hướng vào thực thông qua ghi TRISA * Việc đặt bit TRISA lên đồng nghĩa với việc đặt chân tương ứng cổng A chân nhập liệu * Việc đặt bit TRISA đồng nghĩa với việc đặt chân tương ứng cổng A chân xuất liệu PIC 16F877A 1.2 Vi điều khiển PIC 16F877A + Port B ghi TRISB: Cổng B có bit thực chức xuất nhập chiều, việc xác định hướng vào thực thông qua ghi TRISB + Port C ghi TRISC: Cổng C có bit thực chức xuất nhập chiều, việc xác định hướng vào thực thông qua ghi TRISC PIC 16F877A 1.2 Vi điều khiển PIC 16F877A + Port D ghi TRISD: Cổng D có bit thực chức xuất nhập chiều, việc xác định hướng vào thực thông qua ghi TRISD + Port E ghi TRISE: Cổng E có bit thực chức xuất nhập chiều, việc xác định hướng vào thực thông qua ghi TRISE PIC 16F877A 10 1.3 Ngôn ngữ lập trình ASM - Lệnh: ANDLW k + Thực thi: giá trị ghi W AND với số k bit, kết lưu vào W + ≤ k ≤ 255 - Lệnh: ANDWF f,d + Thực thi: AND giá trị ghi W với giá trị ghi f Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 19 1.3 Ngôn ngữ lập trình ASM - Lệnh: BCF f,b + Thực thi: bit b ghi f bị xóa + ≤ f ≤ 127, ≤ b ≤ - Lệnh: BSF f,b + Thực thi: bit b ghi f đưa lên + ≤ f ≤ 127, ≤ b ≤ PIC 16F877A 20 1.3 Ngôn ngữ lập trình ASM - Lệnh: BTFSS f,b + Thực thi: bit b ghi f lệnh kế bị bỏ qua thay lệnh NOP + ≤ f ≤ 127, ≤ b ≤ - Lệnh: BTFSC f,b + Thực thi: bit b ghi f lệnh kế bị bỏ qua thay lệnh NOP + ≤ f ≤ 127, ≤ b ≤ PIC 16F877A 21 1.3 Ngôn ngữ lập trình ASM - Lệnh: CLRF f + Thực thi: xóa ghi f bit Z set lên + ≤ f ≤ 127 - Lệnh: CLRW + Thực thi: xóa ghi W bit Z set lên - Lệnh: COMF f,d + Thực thi: bù nội dung ghi f Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 22 1.3 Ngôn ngữ lập trình ASM - Lệnh: DECF f,d + Thực thi: giảm giá trị ghi f Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] - Lệnh: DECFSZ f,d + Thực thi: giảm giá trị ghi f Nếu kết lệnh NOP bỏ qua lệnh kế thay Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 23 1.3 Ngôn ngữ lập trình ASM - Lệnh: INCF f,d + Thực thi: tăng giá trị ghi f lên Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] - Lệnh: INCFSZ f,d + Thực thi: tăng giá trị ghi f lên Nếu kết bỏ qua lệnh kế thay lệnh NOP Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 24 1.3 Ngôn ngữ lập trình ASM - Lệnh: IORLW k + Thực thi: OR số k bit với W Kết lưu vào W + ≤ k ≤ 255 - Lệnh: IORWF f,d + Thực thi: OR ghi W với ghi f Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 25 1.3 Ngôn ngữ lập trình ASM - Lệnh: MOVLW k + Thực thi: nạp liệu k bit vào ghi W + ≤ k ≤ 255 - Lệnh: MOVWF f + Thực thi: nội dung ghi W copy sang ghi f + ≤ f ≤ 127 PIC 16F877A 26 1.3 Ngôn ngữ lập trình ASM - Lệnh: RLF f,d + Thực thi: nội dung ghi f xoay trái bit vào W, d = qua cờ C Nếu d = kết lưu kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 27 1.3 Ngôn ngữ lập trình ASM - Lệnh: RRF f,d + Thực thi: nội dung ghi f xoay phải vào W, d = bit qua cờ C Nếu d = kết lưu kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 28 1.3 Ngôn ngữ lập trình ASM - Lệnh: SUBLW k + Thực thi: lấy giá trị k bit trừ giá trị ghi W Kết lưu vào W + ≤ k ≤ 255 - Lệnh: SUBWF f,d + Thực thi: lấy giá trị ghi f trừ giá trị ghi W Nếu d = kết lưu vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 29 1.3 Ngôn ngữ lập trình ASM - Lệnh: SWAPF f,d + Thực thi: bit cao bit thấp ghi f vào W, d = đảo cho Nếu d = kết lưu kết lưu vào f + ≤ f ≤ 127, d = [0,1] - Lệnh: XORLW k + Thực thi: giá trị ghi W XOR với số k bit kết lưu vào ghi W + ≤ k ≤ 255 PIC 16F877A 30 1.3 Ngôn ngữ lập trình ASM - Lệnh: XORWF f,d + Thực thi: giá trị ghi W XOR với lưu giá trị ghi f Nếu d = kết vào W, d = kết lưu vào f + ≤ f ≤ 127, d = [0,1] PIC 16F877A 31 1.3 Ngôn ngữ lập trình ASM list p = 16f877a #include P16F877A.INC ORG 0x0000 PIC 16F877A BCF STATUS,RP1 BCF STATUS,RP0 CLRF PORTB BSF STATUS,RP0 MOVLW 0x00 32 1.3 Ngôn ngữ lập trình ASM Thanh ghi PIC 16F877A 33 [...]...1.2 Vi điều khiển PIC 16F877A PIC 16F877A 11 1.2 Vi điều khiển PIC 16F877A b Tổ chức bộ nhớ - Bộ nhớ chương trình: Khi PIC bị reset thì chương trình sẽ được thực hiện từ vùng nhớ 0000H PIC 16F877A 12 1.2 Vi điều khiển PIC 16F877A - Bộ nhớ dữ liệu: Bộ nhớ dữ liệu được chia thành nhiều Bank Hai bit RP0 và RP1 được... chỉ thấp là các thanh ghi chức năng đặc biệt, còn lại là các thanh ghi đa dụng – được xem là bộ nhớ RAM PIC 16F877A 13 1.2 Vi điều khiển PIC 16F877A PIC 16F877A 14 1.2 Vi điều khiển PIC 16F877A Thanh ghi W: là thanh ghi công tác (rất quan trọng của PIC) , lưu trữ dữ liệu và các kết quả tính toán PIC 16F877A 15 1.3 Ngôn ngữ lập trình ASM a Các quy ước: Một dòng lệnh ASM gồm các thành phần như sau: [nhãn]... trong thanh ghi f Nếu d = 0 thì kết vào W, d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 31 1.3 Ngôn ngữ lập trình ASM list p = 16f877a #include P16F877A.INC ORG 0x0000 PIC 16F877A BCF STATUS,RP1 BCF STATUS,RP0 CLRF PORTB BSF STATUS,RP0 MOVLW 0x00 32 1.3 Ngôn ngữ lập trình ASM Thanh ghi PIC 16F877A 33 ... vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 18 1.3 Ngôn ngữ lập trình ASM - Lệnh: ANDLW k + Thực thi: giá trị trong thanh ghi W được AND với hằng số k 8 bit, kết quả lưu vào W + 0 ≤ k ≤ 255 - Lệnh: ANDWF f,d + Thực thi: AND giá trị trong thanh ghi W với giá trị trong thanh ghi f Nếu d = 0 thì kết quả lưu vào W, nếu d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 19 1.3 Ngôn ngữ lập trình... lệnh NOP + 0 ≤ f ≤ 127, 0 ≤ b ≤ 7 PIC 16F877A 21 1.3 Ngôn ngữ lập trình ASM - Lệnh: CLRF f + Thực thi: xóa thanh ghi f và bit Z được set lên 1 + 0 ≤ f ≤ 127 - Lệnh: CLRW + Thực thi: xóa thanh ghi W và bit Z được set lên 1 - Lệnh: COMF f,d + Thực thi: bù nội dung của thanh ghi f Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 22 1.3 Ngôn ngữ lập trình... PIC 16F877A 23 1.3 Ngôn ngữ lập trình ASM - Lệnh: INCF f,d + Thực thi: tăng giá trị thanh ghi f lên 1 Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] - Lệnh: INCFSZ f,d + Thực thi: tăng giá trị thanh ghi f lên 1 Nếu kết quả bằng 0 thì bỏ qua lệnh kế và thay bằng lệnh NOP Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A. .. thanh ghi f Nếu d = 0 thì kết quả lưu vào W, d = 1 thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 25 1.3 Ngôn ngữ lập trình ASM - Lệnh: MOVLW k + Thực thi: nạp dữ liệu k 8 bit vào thanh ghi W + 0 ≤ k ≤ 255 - Lệnh: MOVWF f + Thực thi: nội dung thanh ghi W được copy sang thanh ghi f + 0 ≤ f ≤ 127 PIC 16F877A 26 1.3 Ngôn ngữ lập trình ASM - Lệnh: RLF f,d + Thực thi: nội dung thanh ghi f được xoay... vào W, d = 1 thì qua cờ C Nếu d = 0 thì kết quả lưu kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 27 1.3 Ngôn ngữ lập trình ASM - Lệnh: RRF f,d + Thực thi: nội dung thanh ghi f được xoay phải 1 vào W, d = 1 bit qua cờ C Nếu d = 0 thì kết quả lưu thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 28 1.3 Ngôn ngữ lập trình ASM - Lệnh: SUBLW k + Thực thi: lấy giá trị k 8 bit trừ giá trị... vào f + 0 ≤ f ≤ 127, d = [0,1] PIC 16F877A 29 1.3 Ngôn ngữ lập trình ASM - Lệnh: SWAPF f,d + Thực thi: 4 bit cao và 4 bit thấp của thanh ghi f vào W, d = 1 đảo cho nhau Nếu d = 0 thì kết quả lưu thì kết quả lưu vào f + 0 ≤ f ≤ 127, d = [0,1] - Lệnh: XORLW k + Thực thi: giá trị trong thanh ghi W được XOR với hằng số k 8 bit và kết quả lưu vào thanh ghi W + 0 ≤ k ≤ 255 PIC 16F877A 30 1.3 Ngôn ngữ lập trình... hoặc không có tham số PIC 16F877A 16 1.3 Ngôn ngữ lập trình ASM - Quy ước các ký hiệu trong tập lệnh Ký hiệu Chức năng f Địa chỉ của thanh ghi từ 0x00 đến 0x7F w Thanh ghi W b Là vị trí của bit trong thanh ghi k Hằng số hoặc nhãn x Không quan tâm là 0 hay 1 d Lựa chọn nơi nhận dữ liệu - d = 0: lưu kết quả vào thanh ghi W - d = 1: lưu kết quả vào thanh ghi f Mặc định d = 1 PIC 16F877A 17 1.3 Ngôn ngữ

Ngày đăng: 27/05/2016, 13:43

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan