Do đó, nếu một số hiển thị được kết nối với vi điều khiển nó là rec ommended sử dụng như vậy gọi là thấp hiện nay chỉ sử dụng đèn LED 2mA cho hoạt động; và Hiển thị các đoạn thường được [r]
(1)điều khiển - thiết bị Tổng quan
Các PIC16F887 sản phẩm Microchip Nó có tính tất thành phần vi điều khiển đại thường có, giá thấp, hàng loạt ứng dụng, chất lượng cao sẵn dàng, giải pháp lý tưởng ứng dụng như: kiểm soát q trình khác ngành cơng nghiệp, thiết bị điều khiển máy, đo lường giá trị khác vv Một số tính liệt kê
Kiến trúc RISC
o Chỉ có 35 hướng dẫn để học
o Tất đơn chu kỳ hướng dẫn ngoại trừ ngành Tần số hoạt động 0-20 MHz
Độ xác dao động nội bộ o Bộ phát tín hiệu chuẩn
o Cho phép lựa chọn nhiều tần số 8MHz đến 31mKHz Nguồn cung cấp điện áp 2.0-5.5V
o Tiêu thụ: 220uA (2.0V, 4MHz), 11uA (2,0 V, 32 KHz) 50nA (chế độ chờ) Tiết kiệm điện Sleep Mode
Brown-out Reset (BOR) với tùy chọn phần mềm điều khiển 35 đầu vào / đầu ra
o Cao trở nội nguồn
o Cho phép chân lập trình kéo lên điện trở o Ngắt-on-Thay đổi pin
8K ROM nhớ công nghệ FLASH
o Chip lập trình lại lên đến 100.000 lần In-Circuit Serial trình Lựa chọn
o Chip lập trình nhúng thiết bị mục tiêu 256 byte nhớ EEPROM
o Dữ liệu viết 1.000.000 lần 368 byte nhớ RAM
A / D chuyển đổi:
o 14-kênh
o Độ phân giải 10-bit 3 đinh thời
Watch-dog hẹn giờ
Tương tự so sánh với mô-đun o Hai tương tự so sánh
o Cố định điện áp tham chiếu (0.6V) o Lập trình chip điện áp tham chiếu Chỉ đạo kiểm soát đầu PWM
Nâng cao module USART
o Hỗ trợ RS-485, RS-232 LIN2.0 o Auto-Detect Baud
(2)Hình 1-1 PIC16F887 PDIP 40 vi điều khiển
(3)Hình Sơ đồ 1-3 PIC16F887 Block Pin mô tả
Như thấy hình 1-1 trên, chân đa chức Ví dụ, định danh RA3/AN3/Vref + / C1IN + cho pin thứ năm xác định chức sau:
RA3 Port Một phần ba số đầu vào / đầu AN3 analog đầu vào thứ ba
VREF + Tích cực điện áp tham chiếu C1IN + sánh C1positive đầu vào
Thủ thuật nhỏ thường sử dụng làm cho gói phần mềm vi điều khiển nhỏ gọn mà khơng ảnh hưởng đến chức Các chức pin khác khơng sử dụng đồng thời, thay đổi điểm trình hoạt động
(4)(5)(6)Bảng 1-1 tiếp Pin nhượng Đơn vị xử lý trung tâm (CPU)
Tôi không khoan bạn với hoạt động CPU giai đoạn này, nhiên điều quan trọng nhà nước CPU sản xuất với yếu tố quan trọng công nghệ RISC định mà vi xử lý sử dụng
RISC Giảm Instruction Set Computer, mang đến cho PIC16F887 hai lợi lớn:
CPU nhận có 35 hướng dẫn đơn giản (Để chương trình số vi điều khiển khác, cần thiết để biết 200 hướng dẫn trái tim)
(7)Hình 1-4 CPU Memory Bộ nhớ
vi điều khiển có ba loại nhớ ROM, RAM EEPROM Tất họ thảo luận từ cách riêng biệt có chức cụ thể, tính tổ chức
Bộ nhớ ROM
bộ nhớ ROM sử dụng để lưu vĩnh viễn chương trình thực thi Đây lý thường gọi "chương trình nhớ" Các PIC16F887 có 8KB ROM (trong tổng số 8.192 địa điểm) Kể từ ROM thực với công nghệ FLASH, nội dung thay đổi cách cung cấp điện áp lập trình đặc biệt (13V)
(8)Hình Khái niệm nhớ ROM 1-5 Bộ nhớ EEPROM
Tương tự nhớ chương trình, nội dung EEPROM vĩnh viễn lưu lại, chí cịn bị cúp điện tắt Tuy nhiên, khơng giống ROM, nội dung EEPROM thay đổi hoạt động vi điều khiển Đó lý nhớ (256 điểm) hoàn hảo cho tiết kiệm vĩnh viễn kết tạo sử dụng trình hoạt động Bộ nhớ RAM
Đây thứ ba phần phức tạp vi điều khiển nhớ Trong trường hợp này, bao gồm hai phần: ghi mục đích chung ghi chức đặc biệt (SFR)
Mặc dù hai nhóm sổ đăng ký bị xóa có điện tắt chúng sản xuất cách hành động theo cách tương tự, chức họ khơng có nhiều điểm chung
Hình 1-6 ĐỊnh địa Thanh ghi mục đích chung -Mục đích chung Thanh ghi
(9)những sống hàng ngày gọi "tổng hợp" Kể từ vi điều khiển sáng tạo tất cả, cần thiết để xác định địa số mục đích chung đăng ký gán cho chức Một chương trình đơn giản để tăng giá trị đăng ký 1, sau sản phẩm qua cảm biến, nên tạo
Do đó, vi điều khiển thực chương trình biết đâu tổng phải tăng lên Tương tự ví dụ đơn giản, biến chương trình phải preassigned số mục đích chung đăng ký SFR Đăng ký
Đặc biệt ghi chức vị trí nhớ RAM, không giống -thanh ghi đa mục đích, mục đích họ xác định trước q trình sản xuất khơng thể thay đổi Kể từ bit họ kết nối vật lý với mạch cụ thể chip (A / D chuyển đổi, nối tiếp truyền thông module, vv), thay đổi nội dung họ trực tiếp ảnh hưởng đến hoạt động vi điều khiển số mạch Ví dụ, cách thay đổi ghi TRISA, chức cổng A pin thay đổi theo cách hoạt động đầu vào hay đầu Một tính vị trí nhớ họ có tên họ (thanh ghi bit họ), mà đáng kể tạo điều kiện cho chương trình văn Từ cấp cao ngơn ngữ lập trình sử dụng danh sách tất đăng ký với địa xác họ, đủ để xác định tên đăng ký để đọc thay đổi nội dung
Bộ nhớ RAM ngân hàng
(10)(11)(12)(13)Bảng 1-5 SFR Bank 2
Bảng 1-6 SFR Bank 3 Cây rơm
Một phần RAM sử dụng cho ngăn xếp bao gồm tám-bit đăng ký 13 Trước vi điều khiển bắt đầu thực (chương trình CALL hướng dẫn) gián đoạn xảy ra, địa lệnh thực thi đẩy lên ngăn xếp, tức vào sổ đăng ký Bằng cách đó, hay gián đoạn thực chương trình con, vi điều khiển biết từ đâu để tiếp tục thực chương trình thường xuyên Địa xóa sau trở chương trình khơng có cần phải lưu lại lâu nữa, vị trí ngăn xếp tự động có sẵn để sử dụng tiếp
(14)khơng có chút tình trạng biết stack stack tràn tràn điều kiện Vì lý đó, ta nên quan tâm đặc biệt thời gian viết chương trình
NGĂN SẾP
Việc mà vi điều khiển không yêu cầu gián đoạn đến để thực hướng dẫn hành sau ngừng chương trình thực thường xun Ngay sau đó, chương trình địa nhớ tự động đẩy lên ngăn xếp địa mặc định (được xác định trước nhà sản xuất) ghi vào chương trình truy cập Đó vị trí từ nơi thực chương trình tiếp tục gọi vector ngắt Đối với vi điều khiển PIC16F887, địa 0004h Như thấy hình 1-7 đây, vị trí có chứa vector ngắt qua trình thực chương trình thường xun Một phần chương trình kích hoạt yêu cầu gián đoạn đến gọi thường bị gián đoạn hướng dẫn nằm vector ngắt Chương trình phụ thuộc vào kỹ người lập trình nguồn tự ngắt Một số vi điều khiển có thêm vector ngắt (mỗi yêu cầu ngắt có vector nó), trường hợp có Do đó, phần thói quen ngắt bao gồm công nhận nguồn ngắt Cuối cùng, nguồn ngắt công nhận thường xuyên bị gián đoạn thực hiện, vi điều khiển đạt
đến RETFIE hướng dẫn, địa từ stack tiếp tục thực chương trình từ nơi mà để lại
Hình 1-7 hệ thống ngắt Làm để sử dụng SFR
Bạn mua vi điều khiển có ý tưởng tốt để sử dụng Có danh sách dài SFR với tất bit Mỗi người số họ kiểm soát số trình Tất tất cả, giống bảng điều khiển lớn với nhiều dụng cụ thiết bị chuyển mạch Bây bạn quan tâm việc bạn quản lý để tìm hiểu làm để sử dụng tất cả? Bạn có lẽ không phải, đừng lo lắng, bạn không phải! vi điều khiển mạnh mẽ tương tự siêu thị: họ cung cấp nhiều điều với giá thấp vào bạn để lựa chọn Vì vậy, chọn trường mà bạn quan tâm nghiên cứu bạn cần biết Sau đó, bạn hiểu rõ hoạt động phần cứng, SFR nghiên cứu kiểm sốt (có thường vài số họ) Để nhắc lại, chương trình văn trước thay đổi số bit sổ đăng ký, khơng qn chọn Bank thích hợp Đây lý họ liệt kê bảng
Chương 2: SFR Core
Các tính chức năng
(15) Core (CPU) đăng ký - Kiểm soát giám sát hoạt động trình xử lý trung tâm Mặc dù có vài người số họ, hoạt động toàn vi điều khiển phụ thuộc vào nội dung họ
SFR ngoại vi kiểm soát hoạt động thiết bị ngoại vi (module giao tiếp nối tiếp, A / D chuyển đổi, vv.)Mỗi sổ đăng ký chủ yếu chuyên ngành mạch cho lý họ mô tả với mạch họ kiểm soát
Các lõi (CPU) đăng ký vi điều khiển PIC16F887 mô tả chương Kể từ bit họ kiểm soát số mạch khác chip, để phân loại chúng thành số nhóm đặc biệt Những bit mơ tả với quy trình mà họ kiểm sốt
THANG GHI TRÁNG THÁI
Hình 2-1 THANH GHI TRẠNG THÁI
Việc ghi TRẠNG THÁI chứa: tình trạng số học ghi W, tình trạng RESET chọn ngân hàng bit cho liệu nhớ Một nên cẩn thận viết giá trị để ghi bạn làm điều khơng đúng, kết khác với mong đợi Ví dụ, bạn cố gắng để xóa tất bit cách sử dụng CLRF STATUS hướng dẫn, kết vào sổ đăng ký 000xx1xx thay dự kiến 00000000 lỗi xảy số bit ghi thiết lập xóa theo phần cứng bit đọc mà thơi Đối với lý này, có yêu cầu thay đổi nội dung (ví dụ, để thay đổi ngân hàng hoạt động), bạn nên sử dụng dẫn mà không ảnh hưởng đến bit trạng thái (C, DC Z) Hãy tham khảo "Hướng dẫn thiết lập Tóm tắt"
IRP - Bit chọn ghi Bank Nó sử dụng để gián tiếp giải quyết. o 1 - Các Bank hoạt động (bộ nhớ vị trí 00h-FFh) o 0 - Bank hoạt động (bộ nhớ vị trí 100h-1FFh)
RP1, RP0 - Bits chọn ghi Bank Chúng sử dụng để trực tiếp giải quyết. R P 1 R P 0 N G Â N H À N G H O Ạ T Đ Ộ N G
0 Bank0
0 Bank1
1 Bank2
1 Bank3
Bảng 2-1
TO - Thời gian-out bit.
o 1 - Sau điện sau thực CLRWDT hướng dẫn thiết lập lại đồng hồ hẹn hướng dẫn chó SLEEP mà vi điều khiển vào chế độ tiêu thụ thấp
o 0 - Sau chó thời gian hẹn đồng hồ xảy ra.
PD - Công suất xuống bit.
o 1 - Sau điện sau thực CLRWDT hướng dẫn mà xem, chó reset đếm thời gian. o 0 - Sau thực SLEEP hướng dẫn mà vi điều khiển vào chế độ tiêu thụ thấp.
Z - Zero bit
o 1 - Các kết phép tốn số học logic số khơng.
o 0 - Các kết phép toán số học logic khác từ số không.
(16)o 1 - Một thực-hiện từ bit thấp để lần thứ kết xảy ra. o 0 - Khơng có thực-hiện từ bit thấp để lần thứ kết xảy ra.
C - Thực / Mượn chút thay đổi cộng trừ "tràn" hay "mượn" kết xảy ra, tức kết lớn 255 nhỏ
o 1 - Một thực-hiện từ bit quan trọng kết xảy ra. o 0 - Không có thực-hiện từ bit quan trọng kết xảy ra. OPTION_REG ghi
Hình 2-2
THANH ghi OPTION_REG chứa bit điều khiển khác để cấu hình: prescaler Timer0/WDT, TMR0 hẹn giờ, bên ngồi bị gián đoạn kéo-up PORTB
RBPU - Port B Kéo lên Enable bit.
o 1 - PortB pull-up bị vơ hiệu hóa. o 0 - PortB pull-up kích hoạt. Hình 2-3
INTEDG - ngắt bit Edge chọn.
o 1 - ngắt tăng cạnh pin RB0/INT.
o 0 - Gián đoạn rơi xuống cạnh RB0/INT pin. Hình 2-4
T0CS - TMR0 Clock Nguồn Chọn bit.
o 1 - Chuyển đổi pin TOCKI.
(17) T0SE - Nguồn TMR0 bit Edge Chọn lựa chọn cạnh xung (tăng giảm) tính theo TMR0 hẹn thông qua pin RA4/T0CKI
o 1 - Tăng on-to-thấp chuyển tiếp cao TOCKI pin. o 0 - Tăng lên đến cao chuyển tiếp thấp TOCKI pin. Hình 2-6
PSA - prescaler Phân bit gán prescaler (chỉ có tồn tại) để hẹn hẹn quan giám sát. o 1 - prescaler gán cho WDT này.
o 0 - prescaler gán cho TMR0 này. Hình 2-7
PS2, PS1, PS0 prescaler giá Chọn bit
tỷ lệ prescaler chọn cách kết hợp ba bit Mô tả, bảng đây, prescaler tỷ lệ phụ thuộc vào việc prescaler gán (TMR0) xem-dog timer (WDT)
P S 2 P S 1 P S 0 T M R 0 W D T
0 0 01:02 01:01
0 01:04 01:02
0 01:08 01:04
0 1 01:16 01:08
1 1:64 01:32
1 1:128 1:64
1 1 1:256 1:128
Bảng 2-2
Để đạt tỷ lệ 01:01 prescaler TMR0 hẹn đếm xung, prescaler nên giao cho WDT Theo kết điều này, TMR0 hẹn không sử dụng prescaler, trực tiếp đếm xung tạo dao động, mục tiêu! Hệ thống ngắt Đăng ký
(18)Như thấy, thứ dựa ý tưởng đơn giản hiệu Khi yêu cầu gián đoạn đến, bit cờ đặt
Hình 2-8 Hệ thống ngắt Đăng ký
Nếu thích hợp IE bit khơng thiết lập (0), kiện hoàn toàn bỏ qua Nếu không, gián đoạn xảy ra! Trong trường hợp nhiều nguồn ngắt kích hoạt, cần thiết để phát hoạt động trước thực gián đoạn bắt đầu thường xuyên Nguồn phát thực cách kiểm tra bit cờ
Điều quan trọng phải hiểu bit cờ không tự động xóa, phần mềm q trình thực thường xuyên bị gián đoạn Nếu chi tiết bị bỏ quên, gián đoạn xảy sau trở chương trình này, khơng có nhiều u cầu để thực nó! Đơn giản cần đặt, cờ IE bit thiết lập
Tất nguồn ngắt điển hình vi điều khiển PIC16F887 hiển thị trang Lưu ý vài điều: Giẻ bit - cho phép tất ngắt vơ hiệu hóa tất lộ ngắt đồng thời.
PEIE bit - cho phép tất ngắt lộ thiết bị ngoại vi vơ hiệu hóa tất ngắt ngoại vi (Điều không quan tâm TMR0 Timer ngắt nguồn cổng B)
(19)Hình 2-9 ngắt SFR INTCON Đăng ký
Việc đăng ký INTCON chứa khác cho phép bit cờ cho đăng ký tràn TMR0, thay đổi PORTB ngắt INT pin bên
Hình 10/02 INTCON Đăng ký
Giẻ - Global Interrupt Enable bit - kiểm soát tất nguồn ngắt lúc. o 1 - Cho phép tất ngắt lộ.
o 0 - Vơ hiệu hóa tất ngắt.
PEIE - Kích hoạt tính ngắt ngoại vi bit hành vi tương tự Giẽ, điều khiển ngắt kích hoạt thiết bị ngoại vi Nó có nghĩa khơng ảnh hưởng gián đoạn kích hoạt TMR0 hẹn cách thay đổi trạng thái cổng B pin RB0/INT
o 1 - Cho phép tất lộ ngắt ngoại vi. o 0 - Vơ hiệu hóa tất ngắt ngoại vi.
(20)o 1 - Cho phép TMR0 gián đoạn. o 0 - Vơ hiệu hóa TMR0 gián đoạn.
Inte - RB0/INT ngồi bit Kích hoạt tính ngắt điều khiển gián đoạn gây cách thay đổi trạng thái logic về pin RB0/IN (bên bị gián đoạn)
o 1 - Cho phép INT ngắt ngồi. o 0 - Vơ hiệu hóa INT ngắt ngoài.
RBIE - Thay đổi ngắt RB Port Bật bit Khi cấu đầu vào, cổng B chân gây gián đoạn cách thay đổi trạng thái logic họ (khơng có vấn đề cho dù thấp highto chuyển tiếp ngược lại, thực tế thay đổi vấn đề chỉ) bit định ngắt để xảy hay không
o 1 - Cho phép cổng B thay đổi gián đoạn. o 0 - Vơ hiệu hóa cổng B thay đổi gián đoạn.
T0IF - TMR0 ngắt Overflow Flag bit đăng ký TMR0 đăng ký tràn đếm thời gian, đếm số không. o 1 - đăng ký TMR0 tràn (bit phải trừ phần mềm).
o 0 - đăng ký TMR0 khơng tràn.
INTF - RB0/INT ngắt bên ngồi Cờ bit đăng ký thay đổi trạng thái logic chân RB0/INT. o 1 - Các bên ngắt INT xảy (phải xóa phần mềm).
o 0 - Các INT ngắt ngồi khơng xảy ra.
RBIF - RB Port Interrupt Flag bit thay đổi đăng ký thay đổi trạng thái logic số chân vào cổng B.
o 1 - Có mục đích chung B cổng I / O pins có nhà nước thay đổi Khi đọc portB, RBIF (cờ bit) phải trừ vào phần mềm
o 0 - Khơng có mục đích chung B cổng I / O pins thay đổi trạng thái. PIE1 Đăng ký
Việc đăng ký PIE1 chứa ngắt bit ngoại vi cho phép
Hình 11/02 PIE1 đăng ký
ADIE - A / D Converter Kích hoạt tính ngắt bit.
o 1 - Cho phép ngắt ADC.
o 0 - Vô hiệu hóa ADC gián đoạn.
RCIE - Kích hoạt tính ngắt EUSART Nhận bit.
o 1 - Cho phép EUSART nhận ngắt. o 0 - Vơ hiệu hóa EUSART nhận ngắt.
TXIE - Kích hoạt tính ngắt Transmit EUSART bit.
o 1 - Cho phép EUSART truyền gián đoạn. o 0 - Vơ hiệu hóa EUSART truyền gián đoạn.
SSPIE - Thạc sĩ đồng Serial Port (MSSP) Kích hoạt tính ngắt bit - cho phép yêu cầu ngắt để tạo sau lần chuyển liệu thông qua module giao tiếp nối tiếp đồng (SPI hay I2C chế độ)
o 1 - Cho phép MSSP gián đoạn. o 0 - Vơ hiệu hóa MSSP gián đoạn.
CCP1IE - Kích hoạt tính ngắt CCP1 bit cho phép yêu cầu ngắt tạo module CCP1 sử dụng để xử lý tín hiệu PWM
o 1 - Cho phép ngắt CCP1. o 0 - Vơ hiệu hóa ngắt CCP1.
TMR2IE - TMR2 để PR2 Phù hợp ngắt Bật bit
o 1 - Cho phép TMR2 để PR2 gián đoạn trận đấu. o 0 - Vơ hiệu hóa TMR2 để PR2 gián đoạn trận đấu.
TMR1IE - Kích hoạt tính ngắt Overflow TMR1 bit cho phép yêu cầu ngắt tạo sau TMR1 đăng ký hẹn tràn, tức đếm số không
(21)PIE2 Đăng ký
Việc đăng ký PIE2 chứa ngắt bit khác cho phép
Hình 12/02 PIE2 Đăng ký
OSFIE - Oscillator Không ngắt Bật bit.
o 1 - Cho phép dao động không bị gián đoạn.
o 0 - Vơ hiệu hóa dao động khơng bị gián đoạn.
C2IE - Kích hoạt tính ngắt sánh C2 bit.
o 1 - Cho phép so sánh C2 gián đoạn. o 0 - Vơ hiệu hóa sánh C2 gián đoạn.
C1IE - Kích hoạt tính ngắt sánh C1 bit.
o 1 - Cho phép so sánh C1 gián đoạn. o 0 - Vơ hiệu hóa sánh C1 gián đoạn.
EEIE - EEPROM Viết Hoạt động ngắt Bật bit.
o 1 - Cho phép ghi EEPROM hoạt động gián đoạn. o 0 - Vơ hiệu hóa EEPROM viết hoạt động gián đoạn.
BCLIE - Bus Collision Kích hoạt tính ngắt bit.
o 1 - Cho phép xe buýt va chạm gián đoạn. o 0 - Vơ hiệu hóa xe bt va chạm gián đoạn.
ULPWUIE - Ultra Low-Power Wake-up Kích hoạt tính ngắt bit.
o 1 - Cho phép Ultra Low-Power Wake-up gián đoạn. o 0 - Vô hiệu hóa Ultra Low-Power Wake-up gián đoạn.
CCP2IE - Kích hoạt tính ngắt CCP2 bit.
o 1 - Cho phép CCP2 gián đoạn. o 0 - Vô hiệu hóa CCP2 gián đoạn. PIR1 Đăng ký
Việc đăng ký PIR1 chứa bit cờ ngắt
Hình 13/02 PIR1 Đăng ký
ADIF - A / D Converter Interrupt Flag bit.
o 1 - A / D chuyển đổi hoàn tất (bit phải trừ phần mềm). o 0 - A / D chuyển đổi khơng hồn thành khơng bắt đầu.
RCIF - EUSART Nhận bit Cờ ngắt.
o 1 - Các EUSART đệm nhận đầy Bit xóa cách đọc ký RCREG. o 0 - Các EUSART đệm nhận không đầy đủ.
TXIF - EUSART Phát bit Cờ ngắt.
(22) SSPIF - Thạc sĩ đồng Serial Port (MSSP) Interrupt Flag bit.
o 1 - Các MSSP gián đoạn điều kiện trình liệu truyền / nhận xảy Các điều kiện khác tùy thuộc vào chế độ hoạt động MSSP (SPI hay I2C) bit trừ vào phần mềm trước trở từ dịch vụ thường xuyên bị gián đoạn
o 0 - Khơng có tình trạng gián đoạn MSSP xảy ra.
CCP1IF - CCP1 Interrupt Flag bit.
o 1 - CCP1 xảy tình trạng gián đoạn (CCP1 đơn vị để chụp hình, so sánh tạo tín hiệu
PWM) Tùy thuộc vào chế độ hoạt động, nắm bắt so sánh kết hợp xảy Trong hai trường hợp, bit trừ vào phần mềm bit không sử dụng chế độ PWM
o 0 - Khơng có tình trạng gián đoạn CCP1 xảy ra.
TMR2IF - Timer2 để PR2 Interrupt Flag bit
o 1 - TMR2 (8-bit đăng ký) để phù hợp PR2 xảy bit phải xóa phần mềm trước trở từ dịch vụ thường xuyên bị gián đoạn
o 0 - Không có TMR2 để phù hợp PR2 xảy ra.
TMR1IF - timer1 ngắt Overflow Flag bit
o 1 - Việc đăng ký TMR1 tràn bit phải trừ vào phần mềm. o 0 - Việc đăng ký TMR1 không tràn.
PIR2 Đăng ký
Việc đăng ký PIR2 chứa bit cờ ngắt
Hình 14/02 PIR2 đăng ký
OSFIF - Oscillator Không bit Cờ ngắt.
o 1 - Hệ thống dao động không thành công đầu vào đồng hồ thay đổi để INTOSC dao động nội bit phải trừ vào phần mềm
o 0 - Hệ thống dao động hoạt động bình thường.
C2IF - sánh C2 ngắt Flag bit.
o 1 - C2 sánh sản lượng thay đổi (bit C2OUT) bit phải trừ vào phần mềm. o 0 - C2 sánh sản lượng không thay đổi.
C1IF - sánh C1 ngắt Flag bit.
o 1 - C1 sánh sản lượng thay đổi (bit C1OUT) bit phải trừ vào phần mềm. o 0 - sánh C1 đầu không thay đổi.
EEIF - EE Viết bit hoạt động Cờ ngắt.
o 1 - EEPROM viết hoàn thành bit phải trừ vào phần mềm. o 0 - EEPROM viết khơng hồn thành khơng bắt đầu.
BCLIF - Bus Collision Interrupt Flag bit.
o 1 - Một vụ va chạm xe buýt xảy MSSP cấu hình cho chế độ Master I2C bit phải trừ vào phần mềm
o 0 - Khơng có vụ va chạm xe buýt xảy ra.
ULPWUIF - Ultra Low-điện Wake-up Interrupt Flag bit.
o 1 - Wake-up điều kiện xảy bit phải trừ vào phần mềm. o 0 - Khơng có điều kiện Wake-up xảy ra.
CCP2IF - CCP2 Interrupt Flag bit.
o 1 - CCP2 gián đoạn điều kiện xảy (đơn vị để chụp hình, so sánh tạo tín hiệu PWM) Tùy thuộc vào chế độ hoạt động, nắm bắt so sánh kết hợp xảy Trong hai trường hợp, bit phải trừ vào phần mềm bit không sử dụng chế độ PWM
(23)Việc đăng ký PCON chứa hai bit cờ sử dụng để phân biệt một: điện-on thiết lập lại, màu nâu-ra thiết lập lại, Watchdog Timer đặt lại thiết lập lại bên ngồi (thơng qua MCLR pin)
Hình 15/02 PCON đăng ký ULPWUE - Ultra Low-Power Kích hoạt tính Wake-up bit
o 1 - Ultra Low-Power Wake-up bật.
o 0 - Ultra Low-Power Wake-up bị vô hiệu hoá.
SBOREN - Phần mềm BOR Bật bit
o 1 - Brown-out Reset kích hoạt. o 0 - Brown-out Reset tàn tật.
POR - Power-on bit trạng thái Thiết lập lại o 1 - Khơng có điện, thiết lập lại xảy ra.
o 0 - Power-on đặt lại xảy bit phải thiết lập phần mềm sau Power-on Reset xảy ra. BOR - Brown-out Reset Tình trạng bit
o 1 - Khơng-ra thiết lập lại Brown xảy ra.
o 0 thiết lập lại Brown xảy bit phải thiết lập phần mềm sau trong-Brown Đặt lại xảy
PCL PCLATH Đăng ký
Kích thước nhớ chương trình PIC16F887 8K Vì vậy, có 8.192 địa điểm cho chương trình lưu trữ Vì lý này, truy cập chương trình phải 13-bit rộng (2 ^ 13 = 8192) Để nội dung vị trí số thay đổi phần mềm hoạt động, địa phải truy cập thơng qua số định canh định cư Vì tất SFR 8-bit rộng, đăng ký "giả tạo" tạo cách chia 13 8-bit thành hai đăng ký độc lập: PCLATH PCL Nếu việc thực chương trình khơng ảnh hưởng đến chương trình truy cập, giá trị đăng ký tự động không ngừng tăng lên 1, +1, +1, +1 Theo cách đó, chương trình thực hướng dẫn, văn hướng dẫn, theo sau địa liên tục tăng
Hình 16/02 PCL PCLATH Đăng ký
Nếu truy cập chương trình thay đổi phần mềm, sau có nhiều điều cần lưu ý để tránh vấn đề:
Tám bit thấp (các byte thấp) đến từ đăng ký PCL mà đọc ghi, năm bit đến từ đăng ký ghi PCLATH
Việc đăng ký PCLATH xóa thiết lập lại
(24)địa kết thúc xx00h Điều cho phép chương trình để nhảy lên tới 255 địa điểm Nếu nhảy thực cách hướng dẫn này, người đăng ký PCLATH phải tăng thêm cho đăng ký tràn PCL
Trên thực gọi chương trình nhảy (hướng dẫn CALL GOTO), vi điều khiển cung cấp 11-bit địa Vì lý này, tương tự nhớ RAM chia "ngân hàng", ROM chia thành bốn "trang" kích thước 2K hướng dẫn thực trang mà khơng có vấn đề Đơn giản, xử lý cung cấp với 11-bit địa từ chương trình, địa vị trí 2KB Hình 2-17 mơ tả tình hình bước nhảy tới địa PP1 chương trình
Tuy nhiên, chương trình địa nhảy khơng phải trang với vị trí từ đâu nhảy là, hai "mất tích" - bit cao nên cung cấp văn cho PCLATH đăng ký Nó minh họa hình 2-17 bên bước nhảy tới địa PP2 chương trình
Hình 17/02 PCLATH Đăng ký
Trong hai trường hợp, chương trình người đạt đến hướng dẫn RETURN, RETLW RETFIE (để trở chương trình chính), vi điều khiển đơn giản tiếp tục thực chương trình từ nơi rời địa trả đẩy lưu vào ngăn xếp mà, đề cập , gồm 13 bit ghi-
Gián tiếp giải quyết
(25)Như thấy, vấn đề với "bit tích giải quyết" giải cách "mượn" từ đăng ký khác Thời gian này, bit thứ bảy gọi IRP sổ đăng ký TÌNH TRẠNG
Hình 18/02 trực tiếp gián tiếp giải quyết Chương 3: I / O Ports
Các tính chức năng
Một tính quan trọng vi điều khiển số chân cắm đầu vào đầu / sử dụng để kết nối với thiết bị ngoại vi Trong trường hợp này, có tổng số mục đích chung ba mươi lăm I / O pins có sẵn, mà đủ cho ứng dụng
Trong hoạt động chân để "có thể kết hợp nội 8-bit, tổ chức, tất chúng đều, tương tự đăng ký, nhóm lại thành năm cảng gọi ký hiệu A, B, C, D E Tất có chung số tính năng:
Vì lý thực tế, nhiều I / O pins có hai ba chức Nếu pin sử dụng chức khác, khơng sử dụng mục đích chung đầu vào / đầu pin;
Mỗi cảng có "vệ tinh", tức Tris tương ứng đăng ký: TRISA, TRISB, TRISC vv mà định thực hiện, nội dung bit cổng
(26)Hình 3-1 I / O Ports Port A TRISA Đăng ký
Port A 8-bit, hai hướng cổng Bit Ansel TRISA kiểm soát chân Porta Tất cổng A làm chân kỹ thuật số đầu vào / đầu Năm người số họ đầu vào tương tự (ký hiệu An):
(27)Tương tự bit TRISA đăng ký xác định chân cấu đầu vào đầu ra, bit thích hợp Ansel đăng ký xác định xem liệu chân hoạt động đầu vào tương tự kỹ thuật số đầu vào / đầu
RA0 = AN0 (được xác định ANS0 bit Ansel đăng ký); RA1 = AN1 (xác định bit ANS1 Ansel đăng ký); RA2 = AN2 (được xác định ANS2 bit Ansel đăng ký); RA3 = AN3 (được xác định ANS3 bit Ansel đăng ký); RA5 = AN4 (được xác định ANS4 bit Ansel đăng ký)
Mỗi bit cổng có chức bổ sung liên quan đến số xây dựng đơn vị ngoại vi Những chức bổ sung mô tả chương sau Chương bao gồm chức bổ sung chân RA0 kể từ có liên quan đến cảng A
Đơn vị ULPWU
Các vi điều khiển thường sử dụng thiết bị có hoạt động định kỳ và, hoàn toàn độc lập cách sử dụng nguồn cung cấp lượng pin Trong trường hợp này, điện tiêu thụ tối thiểu ưu tiên ví dụ điển hình ứng dụng là: nhiệt kế, cảm biến để phát cháy tương tự Được biết, việc giảm tần số đồng hồ làm giảm điện tiêu thụ, giải pháp thuận tiện cho vấn đề để làm chậm đồng hồ xuống (sử dụng 32KHz thạch anh tinh thể, thay 20MHz)
Thiết lập vi điều khiển chế độ ngủ bước hướng Tuy nhiên, hai biện pháp áp dụng, vấn đề phát sinh khác Làm để đánh thức vi điều khiển đặt vào chế độ bình thường Nó rõ ràng cần thiết để có tín hiệu bên ngồi để thay đổi trạng thái logic số chân Như vậy, vấn đề cịn tồn Tín hiệu phải tạo điện tử bổ sung, gây tiêu thụ điện cao toàn thiết bị
Các giải pháp lý tưởng vi điều khiển thức dậy định kỳ nó, mà khơng phải Mạch cho phép hiển thị hình bên phải
Hình 03/03 đơn vị ULPWU Nguyên tắc hoạt động đơn giản:
(28)Về mặt lý thuyết, giải pháp hồn hảo Vấn đề tất chân gây gián đoạn theo cách kỹ thuật số có tương đối rị rỉ lớn điện áp họ không gần gũi với giới hạn giá trị VDD (1) VSS (0) Trong trường hợp này, tụ điện thải thời gian ngắn kể từ số tiền để vài trăm microamperes Đây lý mạch ULPWU thể đăng ký giảm chậm với mức tiêu thụ điện áp cực thấp sức mạnh thiết kế Đầu tạo ngắt, đầu vào kết nối với chân vi điều khiển Đây chân RA0 Đề cập đến hình 3-4 (R = 200 Ohm, C = 1nF), thời gian xả khoảng 30mS, tổng số tiêu thụ vi điều khiển 1000 lần thấp (vài trăm nanoamperes)
Hình 3-4 Sleep Mode Port B TRISB Đăng ký
Port B 8-bit, hai hướng cổng Bit TRISB đăng ký xác định chức chân
Hình 3-5 Port B TRISB đăng ký
Tương tự Port A, logic (1) vào sổ đăng ký TRISB cấu hình chân cổng thích hợp đầu vào ngược lại Sáu chân cổng hoạt động đầu vào analog (AN) Các bit ANSELH đăng ký xác định xem chân hoạt động đầu vào tương tự kỹ thuật số đầu vào / đầu ra:
RB0 = AN12 (được xác định ANS12 bit ANSELH đăng ký); RB1 = AN10 (được xác định ANS10 bit ANSELH đăng ký); RB2 = AN8 (được xác định ANS8 bit ANSELH đăng ký); RB3 = AN9 (được xác định ANS9 bit ANSELH đăng ký); RB4 = AN11 (xác định bit ANS11 ANSELH đăng ký); RB5 = AN13 (được xác định ANS13 bit ANSELH đăng ký)
(29) Tất chân cổng xây dựng lên kéo- điện trở, làm cho chúng lý tưởng cho kết nối push-nút, chuyển mạch optocouplers Để kết nối điện trở đến cổng vi điều khiển, bit thích hợp WPUB đăng ký nên đặt *
Hình 3-6 WPUB đăng ký
Có mức độ cao kháng (vài chục ohms kg), "ảo" điện trở không ảnh hưởng đến chân cấu kết đầu ra, mà cịn hữu ích bổ sung cho đầu vào Như vậy, họ kết nối với đầu vào mạch logic CMOS Nếu không, họ hành động thể họ kháng đầu vào cao họ
Hình 3-7 Pull-up điện trở
* Ngồi bit WPUB đăng ký, có chút ảnh hưởng đến điện trở kéo lên cài đặt Nó RBPU chút OPTION_REG này Nó chút mục đích chung ảnh hưởng đến cài đặt tất điện trở Port.
Nếu kích hoạt, Port B bit cấu đầu vào gây ngắt changeing nhà nước logic
(30)Hình 3-8 IOCB đăng ký
Bởi tính này, chân cổng B thường sử dụng để kiểm tra push-nút bàn phím, họ unerringly đăng ký nút bấm Vì vậy, khơng có cần phải "qt" yếu tố đầu vào tất thời gian
Hình Ví dụ 3-9 Bàn phím
Khi X, Y Z chân cấu đầu thiết lập logic (1), cần thiết để chờ đợi yêu cầu ngắt mà đến nhấn nút Bằng cách kết hợp số không đơn vị kết đầu kiểm tra có nút push-được nhấn
Pin RB0/INT
Các pin RB0/INT "sự thật" gián đoạn nguồn bên ngồi Nó cấu hình để phản ứng với tín hiệu cạnh nâng cao (zero-to-một q trình chuyển đổi) tín hiệu rơi xuống cạnh (một-đối-khơng chuyển tiếp) Các bit INTEDG OPTION_REG đăng ký lựa chọn tín hiệu
RB6 RB7 Pins
(31)trong điện áp áp dụng đầu tiên, bên cạnh điểm này, lập trình điện tử phụ trách Vấn đề chương trình nạp vào vi điều khiển hàn vào thiết bị mục tiêu Thông thường, chương trình nạp thay đổi cách Chức gọi ICSP (In-Circuit Serial Programming) Nó cần thiết để kế hoạch trước sử dụng
Nó khơng phải phức tạp tất cả! Nó cần thiết để cài đặt kết nối 4-pin vào thiết bị mục tiêu để điện áp lập trình cần thiết áp dụng cho vi điều khiển Để có điện áp không ảnh hưởng tới thiết bị điện tử khác, thiết kế số loại vi phạm vào mạch kết nối (sử dụng điện trở jumper)
Hình 3-10 Kết nối ICSP
Các điện áp áp dụng cho chân cắm vi điều khiển đặt Hình 3-11 Lập trình On-Board Connections
Port C Đăng ký TRISC
Port C 8-bit, hai hướng cổng Bit Cục Đăng kiểm TRISC xác định chức chân Tương tự cảng khác, logic (1) Sổ đăng ký TRISC cấu hình chân cổng thích hợp đầu vào
(32)Tất chức bổ sung bit cảng giải thích sau Port D TRISD Đăng ký
Port D 8-bit, hai hướng cổng Bit TRISD đăng ký xác định chức chân Một logic (1) vào sổ đăng ký TRISD cấu hình chân cổng thích hợp đầu vào
Hình 13/03 Port D TRISD Đăng ký Port E TRISE Đăng ký
Port E 4-bit, hai hướng cổng Việc đăng ký TRISE bit xác định chức chân Tương tự cảng khác, logic (1) vào sổ đăng ký TRISE cấu hình chân cổng thích hợp đầu vào ngoại lệ RE3 mà đầu vào Tris bit ln ln đọc "1"
Hình 14/03 Port E TRISE Đăng ký
Tương tự cổng A B, ba chân cấu đầu vào tương tự trường hợp Các ANSELH bit đăng ký xác định xem pin hoạt động đầu vào tương tự (AN) kỹ thuật số đầu vào / đầu ra:
RE0 = AN5 (được xác định ANS5 bit ANSELregister); RE1 = AN6 (được xác định ANS6 bit ANSELregister); RE2 = AN7 (xác định bit ANS7 ANSELregister)
(33)Các Ansel ANSELH đăng ký sử dụng để cấu hình chế độ đầu vào chân I / O gửi tín hiệu tương tự kỹ thuật số
Hình 15/03 Ansel Đăng ký ANSELH Ta được:
Để cấu hình pin đầu vào tương tự, bit thích hợp Ansel ANSELH đăng ký phải thiết lập (1) Để cấu hình kỹ thuật số pin đầu vào / đầu ra, bit thích hợp phải xóa (0)
Tình trạng bit Ansel khơng có ảnh hưởng đến chức đầu kỹ thuật số Kết nỗ lực để đọc cổng số pin cấu đầu vào tương tự
(34)Bạn có lẽ khơng viết chương trình mà sử dụng đầy đủ tất cảng cách hiệu để biện minh cho việc học tất để có biết cảng Tuy nhiên, họ module đơn giản vi điều khiển Đây cách chúng sử dụng:
Khi thiết kế thiết bị, chọn cổng thơng qua vi điều khiển giao tiếp với môi trường ngoại vi Nếu bạn dự định sử dụng kỹ thuật số đầu vào / đầu ra, chọn cổng bạn muốn Nếu bạn có ý định sử dụng số đầu vào tương tự, chọn cổng thích hợp hỗ trợ chân cấu hình (AN0-AN13);
Mỗi chân cổng cấu hai đầu vào hay đầu Bit TRISA, TRISB, TRISC, TRISD TRISE đăng ký xác định cổng thích hợp chân-Porta, PORTB, PORTC, PORTD Porte hành động;
Nếu bạn sử dụng số đầu vào tương tự, thiết lập bit thích hợp Ansel ANSELH đăng ký vào đầu chương trình;
Nếu bạn sử dụng thiết bị chuyển mạch push-nút nguồn tín hiệu vào, kết nối chúng vào chân Port B chúng có điện trở kéo lên Việc sử dụng điện trở kích hoạt bit RBPU OPTION_REG đăng ký, việc cài đặt điện trở cá nhân kích hoạt bit WPUB đăng ký;
Nó thường cần thiết để phản ứng sau chân đầu vào thay đổi trạng thái logic họ Làm hết, khơng phải cần thiết để viết chương trình để thay đổi trạng thái logic chân Nó đơn giản nhiều để kết nối đầu vào để chân PORTB cho phép ngắt thay đổi điện áp Bit IOCOB INTCON đăng ký chịu trách nhiệm điều
Chương 4: Timers
Các tính vi điều khiển PIC16F887 mơ tả ngắn gọn câu Có ba hoàn toàn độc lập / quầy đánh dấu TMR0, TMR1 TMR2 Nhưng khơng đơn giản
Timer TMR0
Các TMR0 có phạm vi rộng ứng dụng thực tế Rất chương trình khơng sử dụng cách Nó tiện lợi dễ sử dụng để viết chương trình, chương trình để tạo xung thời gian tùy ý, đo thời gian đếm xung bên ngồi (sự kiện) với gần khơng có giới hạn
Các module TMR0 đếm thời gian 8-bit / truy cập với tính sau đây:
8-bit timer / counter;
8-bit prescaler (chung với Watchdog timer); Lập trình nội hay bên ngồi đồng hồ nguồn; Gián đoạn tràn,
Lập trình bên cạnh đồng hồ chọn lựa
(35)Hình 4-1 Timer TMR0 OPTION_REG Đăng ký
Hình 4-2 Đăng ký OPTION_REG
RBPU - PORTB Pull-up cho phép bit
o - PORTB điện trở kéo lên người khuyết tật; o - PORTB pins kết nối với điện trở kéo lên
INTEDG - ngắt Edge Chọn bit
o - ngắt cạnh pin tăng INT (0-1);
o - Gián đoạn rơi xuống cạnh pin INT (1-0)
T0CS - TMR0 Clock Chọn bit
o - xung đưa đến TMR0 hẹn / truy nhập thông qua RA4 pin; o - đồng hồ vòng nội (Fosc / 4)
T0SE - Nguồn TMR0 bit Edge Chọn
o - Tăng chuyển tiếp cao đến thấp TMR0 pin;
o - Tăng trình chuyển đổi từ thấp đến cao pin TMR0 PSA - prescaler Phân bit
(36)o - prescaler gán cho WDT
PS2, PS1, PS0 - prescaler giá Chọn bit
o prescaler suất điều chỉnh cách kết hợp bit
Như thấy bảng 4-1, kết hợp tốc độ bit cho prescaler khác cho timer / counter hẹn đồng hồ-chó tương ứng
P S 2 P S 1 P S 0 T M R 0 W D T
0 0 01:02 01:01
0 01:04 01:02
0 01:08 01:04
0 1 01:16 01:08
1 0 01:32 01:16
1 1:64 01:32
1 1:128 1:64
1 1 1:256 1:128
Bảng 4-1 prescaler giá Chức bit PSA thể hai số đây:
(37)Hình 4-4 Các chức bit PSA 1
Như thấy, nhà logic bit PSA xác định xem prescaler để giao cho đếm thời gian / truy cập xem-chó hẹn
Ngồi đáng nói:
Khi prescaler gán cho Timer / counter, ghi vào sổ đăng ký TMR0 xóa prescaler; Khi prescaler gán để xem-chó hẹn giờ, dẫn CLRWDT rõ ràng prescaler WDT;
Viết cho TMR0 sổ đăng ký sử dụng hẹn giờ, không gây xung đếm để bắt đầu lập tức, với hai trì hỗn chu kỳ thị Theo đó, cần thiết để điều chỉnh giá trị văn cho TMR0 đăng ký;
Khi vi điều khiển thiết lập giấc ngủ chế độ, dao động bị tắt Tràn khơng thể xảy khơng có xung đếm Đây lý tràn TMR0 gián đoạn không đánh thức xử lý từ chế độ ngủ;
Khi sử dụng đồng hồ bên ngồi truy cập mà khơng prescaler, xung chiều dài tối thiểu tạm dừng hai xung phải Tosc + 20 ns Tosc tín hiệu dao động thời kỳ;
Khi sử dụng truy cập đồng hồ bên với prescaler, xung chiều dài tối thiểu tạm dừng hai xung 10nS;
Việc đăng ký prescaler 8-bit khơng có sẵn cho người sử dụng, có nghĩa khơng thể đọc trực tiếp văn bản;
Khi thay đổi giao prescaler từ TMR0 đến xem, chó, trình tự hướng dẫn sau phải thực thi để tránh lập lại:
Tương tự vậy, thay đổi việc phân prescaler từ WDT để TMR0, trình tự hướng dẫn sau phải
thực hiện:
Để sử dụng TMR0 cách, cần thiết: Để chọn chế độ:
chế độ hẹn lựa chọn bit T0CS OPTION_REG đăng ký, (T0CS: = hẹn giờ, = truy cập);
Khi sử dụng, prescaler nên giao cho đếm thời gian / truy cập cách xóa bit PSA OPTION_REG đăng ký Tỷ lệ prescaler thiết lập cách sử dụng bit PS2-PS0 đăng ký;
Khi sử dụng ngắt, bit Giẽ TMR0IE INTCON đăng ký phải thiết lập Để đo thời gian:
Thiết lập lại TMR0 đăng ký viết số giá trị tiếng với nó;
Thời gian qua (trong micro giây sử dụng thạch anh 4MHz) đo cách đọc TMR0 đăng ký; Các bit cờ TMR0IF INTCON đăng ký tự động thiết lập lần đăng ký tràn TMR0 Nếu kích hoạt, làm gián
(38) Các phân cực xung tính lựa chọn chân RA4 lựa chọn bit Tose đăng ký OPTION (T0SE: = dương tính, = xung âm);
Số lượng xung đọc sổ đăng ký TMR0 Các prescaler ngắt sử dụng theo cách tương tự chế độ hẹn
Timer TMR1
Timer TMR1 module đếm thời gian 16-bit / truy cập, có nghĩa bao gồm hai đăng ký (TMR1L TMR1H) Nó đếm lên 65,535 xung chu trình nhất, tức trước bắt đầu kể từ số không
Hình 4-5 Timer TMR1
Tương tự TMR0 hẹn giờ, sổ đăng ký đọc ghi vào lúc Trong trường hợp tràn xảy ra, ngắt tạo
Các module đếm thời gian TMR1 hoạt động hai chế độ bản-là một truy cập Tuy nhiên, không giống TMR0 hẹn giờ, module có chức bổ sung
Các phận đăng ký T1CON kiểm soát hoạt động đếm thời gian TMR1
Hình 4-6 Timer TMR1 Tổng quan Timer TMR1 prescaler
(39)RC0/T1OSO RC1/T1OSI chân sử dụng để đăng ký xung đến từ thiết bị điện tử ngoại vi, họ có chức bổ sung Như thấy hình 4-7, chúng đồng thời cấu hai đầu vào (pin RC1) đầu (pin RC0) dao động thạch anh thêm LP (công suất thấp)
Mạch bổ sung thiết kế chủ yếu cho hoạt động tần số thấp (có thể lên tới 200 KHz), xác hơn, để sử dụng tinh thể thạch anh 32.768 KHz tinh thể sử dụng đồng hồ thạch anh dễ dàng để có xung giây dài cách phân chia tần số
Kể từ dao động không phụ thuộc vào clocking nội bộ, hoạt động giấc ngủ chế độ Nó kích hoạt cách thiết lập bit kiểm soát T1OSCEN T1CON đăng ký Người sử dụng phải cung cấp chậm trễ thời gian phần mềm (một vài phần nghìn giây) để bảo đảm dao động khởi động
Bảng cho thấy giá trị đề nghị tụ điện để phù hợp với dao động thạch anh Những giá trị khơng phải xác Tuy nhiên, nguyên tắc chung là: cao tụ điện cơng suất cao ổn định, đó, đồng thời, kéo dài thời gian cần thiết cho ổn định dao động
O S C I L L A T O R T Ầ N S Ố C 1 C 2
LP 32 kHz 33 pF 33 pF
100 kHz 15 pF 15 pF
200 kHz 15 pF 15 pF
Hình 4-7 Timer TMR1 Oscillator Timer TMR1 Gate
Hẹn cổng nguồn phần mềm cấu hình pin T1G đầu C2 so sánh Cổng cho phép thời gian hẹn để trực tiếp kiện bên cách sử dụng luận lý nhà nước pin T1G kiện tương tự cách sử dụng so sánh sản lượng C2 Hãy tham khảo số 4-7 Để thời gian thời gian tín hiệu đủ phép cửa xung đếm có qua
TMR1 chế độ hẹn giờ
Để chọn chế độ này, cần thiết để xóa bit TMR1CS Sau đó, đăng ký 16-bit tăng lên tất xung đến từ dao động nội Nếu tinh thể thạch anh 4MHz sử dụng, tăng lên micro
(40)Hình 4-8 chế độ hẹn TMR1
bộ dao động đồng hồ vi điều khiển không chạy chế độ ngủ nên tràn đếm thời gian đăng ký không gây gián đoạn
Timer TMR1 Oscillator
Tiêu thụ điện vi điều khiển giảm xuống mức thấp giấc ngủ chế độ Vấn đề để ngăn chặn dao động.Dù sao, dễ dàng để đặt hẹn chế độ cách viết hướng dẫn SLEEP cho chương trình Một vấn đề xảy cần thiết để đánh thức vi điều khiển có ngắt làm điều Kể từ vi điều khiển "ngủ", ngắt phải kích hoạt điện tử bên ngồi Tất nhận phức tạp cần thiết "thức dậy" xảy khoảng thời gian thường xuyên
(41)Để giải vấn đề này, hoàn toàn độc lập Low Power thạch anh dao động, hoạt động chế độ ngủ, xây dựng vào vi điều khiển PIC16F887 Đơn giản, trước mạch điện riêng biệt, xây dựng vào vi điều khiển giao cho đếm thời gian TMR1 dao động kích hoạt cách thiết lập bit T1OSCEN T1CON đăng ký Sau đó, bit TMR1CS đăng ký sau sử dụng để xác định TMR1 sử dụng chuỗi xung từ dao động
Các tín hiệu từ dao động thạch anh đồng với đồng hồ vi điều khiển cách xóa bit T1SYNC Trong trường hợp đó, đếm thời gian hoạt động giấc ngủ chế độ Bạn tự hỏi sao? Bởi mạch để đồng hóa sử dụng đồng hồ vi điều khiển và!;
Việc đăng ký tràn TMR1 gián đoạn kích hoạt ngắt xảy giấc ngủ thức tốt TMR1 chế độ truy cập
Timer TMR1 bắt đầu hoạt động truy cập cách thiết lập bit TMR1CS Nó có nghĩa đếm thời gian TMR1 tăng lên góc lên đồng hồ đầu vào T1CKI bên ngồi Nếu kiểm sốt bit T1SYNC đăng ký T1CON xóa bỏ, đầu vào đồng hồ bên ngồi đồng đường đến đăng ký TMR1 Nói cách khác, hẹn TMR1 đồng đồng hồ hệ thống vi điều khiển gọi truy cập đồng
Khi vi điều khiển, điều hành theo cách này, đặt giấc ngủ chế độ, TMR1H đăng ký hẹn TMR1L không tăng lên xung đồng hồ xuất chân đầu vào Đơn giản, hệ thống vi điều khiển đồng hồ không chạy chế độ này, khơng có đầu vào đồng hồ để sử dụng cho đồng hóa Tuy nhiên, prescaler tiếp tục chạy có xung đồng hồ chân kể từ chia tần số đơn giản
Hình Chế độ truy cập 11/04
(42)Hình 12/04 T1CON Đăng ký
T1GINV - timer1 Gate Đảo ngược bit hành vi biến tần nhà nước logic cửa pin T1G C2 so sánh sản lượng (C2OUT) cửa khẩu.Nó cho phép hẹn để mea thời gian chắn cửa cao hay thấp
- Timer đếm T1G pin bit C2OUT cửa cao (1); - Timer đếm T1G pin bit C2OUT cửa thấp (0)
TMR1GE - timer1 Gate bit Kích hoạt tính xác định xem T1G pin so sánh sản lượng C2 (C2OUT) cửa hoạt động hay không bit chức trường hợp đếm thời gian TMR1 (1 = bit
TMR1ON) Nếu không, bit bỏ qua
Timer TMR1 cửa hẹn không hoạt động; Gate không ảnh hưởng đến TMR1
T1CKPS1, T1CKPS0 - timer1 đầu vào đồng hồ prescale Chọn bit xác định tỷ giá prescaler giao cho đếm thời gian TMR1
T C K P S 1 T C K P S 0 P R E S C A L E R G I Á
0 01:01
0 01:02
1 01:04
1 01:08
Bảng 4-2 prescaler giá T1OSCEN - LP Oscillator bit Kích hoạt tính kiểm sốt
- LP dao động kích hoạt cho đồng hồ TMR1 hẹn (dao động với mức tiêu thụ điện thấp tần số
32,768 kHz);
- LP dao động bị tắt
T1SYNC - timer1 vào Đồng hóa đồng hồ kiểm sốt bit cho phép đồng hóa đầu vào dao động LP đầu vào pin T1CKI với đồng hồ nội vi điều khiển Khi đếm xung từ nguồn đồng hồ địa phương (bit TMR1CS = 0), bit bỏ qua
- Khơng đồng hóa đầu vào đồng hồ bên ngoài; - Đồng hóa đồng hồ bên ngồi vào
TMR1CS - Timer TMR1 Clock Nguồn Chọn bit
- Đếm xung chân T1CKI (trên cạnh tăng 0-1); - Đếm xung đồng hồ nội vi điều khiển
TMR1ON - timer1 Ngày bit
- Cho phép Timer TMR1; - Dừng Timer TMR1
Để sử dụng chức hẹn TMR1 cách, cần thiết để thực điều sau đây:
Vì khơng thể tắt prescaler, tỷ lệ nên điều chỉnh cách sử dụng bit T1CKPS1 T1CKPS0 T1CON đăng ký (xem bảng 4-2);
Hình thức cần lựa chọn bit TMR1CS đăng ký (TMR1CS: = nguồn đồng hồ thạch anh dao động, = nguồn đồng hồ cung cấp bên ngoài);
(43) prescaler xóa cách xóa viết sổ đăng ký truy cập,
Bằng cách điền vào sổ đăng ký hẹn hai, cờ TMR1IF thiết lập bắt đầu đếm từ số không Timer TMR2
Timer TMR2 module đếm thời gian 8-bit mà hoạt động cách cụ thể
Hình Thơi gian 4-13 TMR2
Các xung từ dao động thạch anh thơng qua prescaler có tỷ lệ thay đổi cách kết hợp bit T2CKPS1 T2CKPS0 Đầu prescaler sau sử dụng để tăng TMR2 đăng ký 00h Các giá trị TMR2 PR2 không ngừng so sánh việc đăng ký TMR2 không ngừng tăng lên phù hợp với giá trị PR2 Khi trận đấu diễn ra, đăng ký TMR2 tự động xóa đến 00h Các TMR2 Postscaler tăng lên sản lượng sử dụng để tạo ngắt bật
Việc đăng ký TMR2 PR2 hai hồn tồn đọc ghi Tính ngừng lại cách xóa bit TMR2ON, góp phần tiết kiệm điện
Như lựa chọn đặc biệt, thời điểm thiết lập lại TMR2 sử dụng để xác định tốc độ giao tiếp nối tiếp đồng baud
Các TMR2 hẹn điều khiển vài bit T2CON đăng ký T2CON Đăng ký
Hình 14/04 T2CON Đăng ký
(44)T O U T P S 3 T O U T P S 2 T O U T P S 1 T O U T P S 0 T Ỷ L Ệ P O S T S C A L E R
0 0 01:01
0 0 01:02
0 01:03
0 1 01:04
0 0 01:05
0 1 01:06
0 1 01:07
0 1 01:08
1 0 01:09
1 0 01:10
1 01:11
1 1 01:12
1 0 01:13
1 1 01:14
1 1 01:15
1 1 01:16
Bảng 4-3 Postscaler giá TMR2ON - Timer2 Ngày bit biến TMR2 hẹn về.
- Timer T2 ngày; - Thơi gian T2 tắt
T2CKPS1, T2CKPS0 - prescale Timer2 Đồng hồ tốc độ bit xác định prescaler:
T C K P S 1 T C K P S 0 P R E S C A L E R G I Á
0 01:01
0 01:04
1 x 01:16
Bảng 4-4 prescaler giá
Khi sử dụng hẹn TMR2, ta nên biết số chi tiết cụ thể mà phải làm với đăng ký mình:
Khi quyền lực trên, đăng ký PR2 FFh chứa giá trị;
Cả hai prescaler postscaler thông qua văn cho TMR2 đăng ký; Cả hai prescaler postscaler thông qua văn cho T2CON đăng ký; Ngày thiết lập lại bất kỳ, hai prescaler postscaler bị xóa
Chương 5: Modules ĐCSTQ
Các chữ viết tắt ĐCSTQ viết tắt Capture / Compare / PWM
Các module ĐCSTQ thiết bị ngoại vi cho phép người sử dụng thời gian kiểm soát kiện khác
Capture Mode, cho phép thời gian suốt thời gian kiện mạch cung cấp nhìn sâu sắc vào tình trạng đăng ký mà liên tục thay đổi giá trị Trong trường hợp này, hẹn TMR1 đăng ký
(45)Các vi điều khiển PIC16F887 có hai mơ-đun - CCP1 CCP2
Cả hai giống hệt chế độ bình thường, ngoại trừ PWM nâng cao tính có sẵn CCP1 Đây lý chương mô tả module CCP1 cụ thể Về CCP2, có tính phân biệt từ CCP1 bảo hiểm
Phức tạp? Tất điều lời giải thích đơn giản hóa hoạt động họ Mọi thứ phức tạp thực tế bởi phân hệ hoạt động chế độ khác Hãy thử để phân tích hoạt động họ sở bảng mô tả chức bit.Nếu bạn sử dụng thành phần ĐCSTQ, chọn chế độ mà bạn cần, phân tích số thích hợp sau bắt đầu bit thay đổi Sổ đăng ký người khác
CCP1 Module
Một phần trung tâm mạch đăng ký 16-bit CCPR1, bao gồm sổ đăng ký CCPR1L CCPR1H Nó sử dụng để chụp hay so sánh với số nhị phân lưu trữ đếm thời gian đăng ký TMR1 (TMR1H TMR1L)
Hình 5-1 CCP1 Module
Trong so sánh chế độ, kích hoạt phần mềm, thiết lập lại đếm thời gian TMR1 xảy vào trận đấu Bên cạnh đó, module tạo tín hiệu CCP1 PWM tần số khác chu kỳ nhiệm vụ
Bit CCP1CON đăng ký điều khiển mô-đun CCP1 CCP1 chế độ chụp
Trong chế độ này, đếm thời gian đăng ký TMR1 (bao gồm TMR1H TMR1L) chép vào sổ đăng ký CCP1 (bao gồm CCPR1H CCPR1L) trường hợp sau đây:
Mỗi cạnh rơi (1 »0) RC2/CCP1 pin; Mỗi góc lên (0 »1) RC2/CCP1 pin; Mỗi tăng cạnh (0 »1) RC2/CCP1 pin; Mỗi tăng 16 cạnh (0 »1) chân RC2/CCP1
Sự kết hợp bốn bit (CCP1M3 - CCP1M0) Kiểm soát đăng ký xác định kiện kích hoạt 16-bit liệu Ngồi ra, điều kiện sau phải đáp ứng:
pin RC2/CCP1 phải cấu đầu vào;
(46)Hình 5-2 CCP1 chế độ chụp
Các bit cờ CCP1IF thiết lập chụp ảnh chụp thực Nếu điều xảy bit CCP1IE PIE đăng ký thiết lập, sau ngắt xảy
Khi chế độ chụp thay đổi, ngắt không mong muốn nắm bắt tạo Để tránh điều đó, chút cho phép CCP1IE bit ngắt cờ CCP1IF nên xóa trước thay đổi xảy kiểm soát đăng ký
gián đoạn khơng mong muốn tạo cách chuyển từ prescaler chụp khác Để tránh điều này, module CCP1 nên tạm thời tắt trước thay đổi prescaler
Các chuỗi chương trình sau đề nghị: CCP1 chế độ so sánh
(47)Hình 5-3 CCP1 chế độ so sánh
Để thiết lập CCP1 module để hoạt động chế độ này, hai điều kiện phải đáp ứng:
Pin RC2/CCP1 phải cấu sản lượng, Timer TMR1 phải đồng với đồng hồ nội
CCP1 chế độ PWM
Tín hiệu tần số khác chu kỳ hành cơng vụ có ứng dụng rộng rãi tự động hóa Một ví dụ điển hình điều khiển mạch điện đơn giản mà hoạt động thể hình 5-4 Nếu logic số không (0) đại diện cho off-switch logic (1) đại diện cho switchon, sức mạnh mà tiêu thụ tải tỷ lệ thuận với thời gian xung Chỉ số thường gọi Duty Cycle
Hình 5-4 CCP1 chế độ PWM
(48)Hình 5-5 CCP1 PWM với chế độ lọc
(49)Hình 5-6 module PWM
Con số cho thấy sơ đồ khối thiết lập module CCP1 chế độ PWM Để tạo xung mẫu tùy ý chân đầu nó, cần thiết để xác định có hai giá trị-xung tần số thời gian
Fig.5-7 PWM Mode Thời kỳ PWM
Xung đầu thời kỳ (T) quy định đăng ký PR2 TMR2 hẹn Thời kỳ PWM tính cơng thức sau đây:
PWM Period (T) = (PR2 +1) * * 4Tosc TMR2 prescale giá trị
Nếu thời kỳ PWM (T) biết đến sau đó, dễ dàng để xác định tần số tín hiệu F hai giá trị có liên quan phương trình F = / T
(50)Chu kỳ PWM nhiệm vụ quy định cách sử dụng tổng cộng 10 bit: tám MSB tìm thấy đăng ký CCPR1L hai LSbs thêm hàng vào sổ đăng ký CCP1CON (DC1B1 DC1B0) Kết số 10-bit có cơng thức: Pulse Width = (CCPR1L, DC1B1, DC1B0) * * Tosc TMR2 prescale giá trị
Bảng sau cho thấy làm để tạo tín hiệu PWM tần số khác vi điều khiển sử dụng 20 MHz thạch anh tinh thể (Tosc = 50nS)
T Ầ N S Ố [ K H Z ] 1 2 4 8 1 3 7 2 1 3 2 3
TMR2 prescaler 16 1 1
PR2 Đăng ký FFh FFh FFh 3Fh 1Fh 17giờ
Bảng 5-1 PWM Duty Cycle Cuối cùng, hai ghi chú:
chân đầu liên tục thiết lập trường hợp độ rộng xung sơ suất xác định lớn so với
thời kỳ PWM;
Trong ứng dụng này, TMR2 Postscaler sử dụng để tạo khoảng thời gian PWM
Nghị PWM
Tín hiệu PWM khác chuỗi xung với nhiệm vụ chu kỳ khác Đối với tần số quy định (số xung / giây), có số giới hạn chu trình kết hợp nhiệm vụ Con số gọi độ phân giải đo bit Ví dụ, độ phân giải 10-bit cho kết 1.024 chu kỳ nhiệm vụ rời rạc, độ phân giải 8-10-bit cho kết 256 vv rời rạc chu kỳ nhiệm vụ Liên quan đến vi điều khiển này, độ phân giải quy định đăng ký PR2 Giá trị tối đa thu cách viết số FFh PWM tần số độ phân giải (Fosc = 20MHz):
T Ầ N P W M 1 2 K H Z 4 8 K H Z 1 K H Z 7 K H Z 1 K H Z 2 K H Z
Timer prescale 16 1 1
Giá trị PR2 FFh FFh FFh 3Fh 1Fh 17giờ
Độ phân giải tối đa 10 10 10
Bảng 5-2 Tần số PWM Nghị quyết PWM tần số độ phân giải (Fosc = 8MHz):
T Ầ N P W M 1 2 K H Z 4 K H Z 1 K H Z 7 K H Z 1 K H Z 2 0 K H Z
Timer prescale 16 1 1
Giá trị PR2 65h 65h 65h 19giờ 0Ch 09h
Độ phân giải tối đa 8 5
Bảng 5-3 Tần số PWM Nghị quyết CCP1CON Đăng ký
(51)P1M1, P1M0 - PWM bit cấu hình - Trong tất chế độ, ngoại trừ PWM, pin P1A Capture / So sánh mô-đun đầu vào P1B, P1C P1D chân hoạt động đầu vào / đầu cổng chân D Trong chế độ PWM, thứ ảnh hưởng đến module CCP1 thể bảng 5-4 đây:
P M 1 P M 0 M O D E
0
PWM với đầu nhất
Pin P1A kết đầu tín hiệu điều chế Pins P1B, P1C P1D cổng D đầu vào / đầu
0
Toàn Cầu - Chuyển tiếp cấu hình Pin P1D kết đầu tín hiệu điều chế
Pin P1A hoạt động Pins P1B P1C không hoạt động
1
Một nửa cấu hình Bridge
Pins P1A đầu tín hiệu điều chế P1B PinsP1C P1D cổng D đầu vào / đầu
1
Toàn Cầu - Reverse cấu hình Pin P1B kết đầu tín hiệu điều chế
Pin P1C hoạt động Pins P1A P1D không hoạt động Bảng 5-4 CCP1CON Đăng ký
DC1B1, DC1B0 - PWM Duty Cycle bit đáng kể - sử dụng chế độ PWM mà họ đại diện cho hai bit có ý nghĩa số 10 bit Con số xác định nhiệm vụ chu kỳ tín hiệu PWM Phần cịn lại bit (8 tổng số) lưu sổ đăng ký CCPR1L
CCP1M3 - CCP1M0 - CCP1 Mode Chọn bit xác định chế độ module CCP1.
C C P M 3 C C P M 2 C C P M 1 C C P M 0 M O D E
0 0 Module bị vơ hiệu hóa (reset)
0 0 Không sử dụng
0 So sánh chế độ
CCP1IF bit thiết lập phù hợp
0 1 Không sử dụng
0 0 Chế độ chụp
Mỗi cạnh rơi xuống chân CCP1
0 1 Chế độ chụp
Mỗi góc lên chân CCP1
0 1 Chế độ chụp
Mỗi tăng cạnh chân CCP1
0 1 Chế độ chụp
Mỗi tăng 16 cạnh chân CCP1
1 0 So sánh chế độ
(52)1 0 So sánh chế độ
Kết xóa CCP1IF bit thiết lập phù hợp
1 So sánh chế độ
Ngắt yêu cầu đến bit CCP1IF đặt phù hợp
1 1 So sánh chế độ
Bit CCP1IF thiết lập đăng ký bị xóa
1 0
Chế độ PWM
Pins P1A P1C hoạt động cao Pins P1B P1D hoạt động cao
1 1
Chế độ PWM
Pins P1A P1C hoạt động cao Pins P1B P1D hoạt động thấp
1 1
Chế độ PWM
Pins P1A P1C hoạt động thấp Pins P1B P1D hoạt động cao
1 1
Chế độ PWM
Pins P1A P1C hoạt động thấp Pins P1B P1D hoạt động thấp Bảng 5-5 Phương thức hoạt động
CCP2 Module
Loại trừ tên gọi khác đăng ký bit, mô-đun tốt việc thiết lập module CCP1 chế độ bình thường (trước thảo luận) Chỉ có thật khác biệt chế độ họ CCP2 hoạt động chế độ so sánh
(53)Hình 5-9 CCP2 Module
Tương tự module thấm nước, mạch kiểm soát bit Kiểm soát đăng ký Thời gian này, CCP2CON đăng ký
CCP2CON Đăng ký
Hình 10/05 CCP2CON Đăng ký
DC2B1, DC2B0 - PWM Duty Cycle bit đáng kể - sử dụng chế độ PWM đại diện cho hai bit có ý nghĩa số 10 bit Con số xác định nhiệm vụ chu kỳ tín hiệu PWM Phần cịn lại bit (8 tổng số) lưu sổ đăng ký CCPR2L
CCP2M3 - CCP2M0 - CCP2 Mode Chọn bit chọn chế độ CCP2.
C C P M 3 C C P M 2 C C P M 1 C C P M 0 M O D E
0 0 Module bị vơ hiệu hóa (reset)
0 0 Không sử dụng
0 Không sử dụng
0 1 Không sử dụng
0 0 Chế độ chụp
Mỗi cạnh rơi xuống chân CCP2
0 1 Chế độ chụp
Mỗi cạnh nâng cao chân CCP2
0 1 Chế độ chụp
Mỗi tăng cạnh chân CCP2
0 1 Chế độ chụp
Mỗi tăng 16 cạnh chân CCP2
1 0 So sánh chế độ
Sản lượng bit CCP2IF thiết lập vào trận đấu
1 0 So sánh chế độ
Kết xóa CCP2IF bit thiết lập phù hợp
1
So sánh chế độ
Ngắt tạo ra, CCP2IF bit thiết lập CCP2 pin không bị ảnh hưởng trận đấu
1 1 So sánh chế độ
(54)chuyển đổi bắt đầu A / D chuyển đổi vào ngày trận đấu
1 x x Chế độ PWM
Bảng 5-6 CCP2CON Đăng ký Trong ngắn hạn: Thiết lập CCP1 module cho PWM hoạt động
Để cài đặt module ĐCSTQ cho PWM hoạt động, bước sau cần thực hiện: Vơ hiệu hố pin CCP1 Nó cấu đầu vào;
Đặt thời gian PWM cách tải PR2 đăng ký;
Cấu hình module ĐCSTQ cho chế độ PWM cách kết hợp bit CCP1CON đăng ký;
Đặt nhiệm vụ chu kỳ tín hiệu PWM cách tải đăng ký sử dụng bit CCPR1L DC1B1 DC1B0 CCP1CON đăng ký;
Cấu hình TMR2 bắt đầu:
o Xóa TMR2IF ngắt cờ bit PIR1 đăng ký;
o Thiết lập giá trị TMR2 prescale cách tải bit T2CKPS1 T2CKPS0 T2CON đăng ký; o Bắt đầu TMR2 hẹn cách thiết lập bit TMR2ON T2CON đăng ký;
Kích hoạt tính chân PWM sau chu kỳ PWM hoàn thành:
o Đợi cho TMR2 tràn đếm thời gian (TMR2IF bit PIR1register thiết lập); o Cấu hình chân thích hợp đầu cách xóa bit Tris đăng ký
CCP1 chế độ nâng cao
Chế độ nâng cao có sẵn CCP1 Về bản, mô-đun không khác biệt với mô tả trước nâng cao dùng để truyền tín hiệu PWM để chân đầu Tại lại quan trọng? Bởi có nhiều vi điều khiển thường sử dụng hệ thống điều khiển cho động điện Các thiết bị không mô tả đây, bạn có hội để làm việc phát triển thiết bị tương tự, bạn nhận yếu tố đó, gần đây, sử dụng người bên ngồi Thơng thường, tất yếu tố tích hợp vào vi điều khiển hoạt động chế độ khác
Single đầu PWM Mode
Chế độ kích hoạt trường hợp bit P1M1 P1M0 CCP1CON đăng ký bị xóa Trong trường hợp này, có tín hiệu PWM đồng thời có sẵn tối đa bốn chân đầu khác Bên cạnh đó, tín hiệu PWM xuất dạng sóng ngược phân phối tín hiệu xác định bit PSTRCON đăng ký, phân cực xác định bit CCP1M1 CCP1M0 CCP1CON đăng ký
(55)Hình 11/05 đơn đầu PWM Mode Half-Bridge Mode
Trong chế độ này, tín hiệu PWM đầu chân P1A, đồng thời bổ sung tín hiệu PWM đầu chân P1B Những xung kích hoạt trình điều khiển MOSFET Half-Bridge mode cho phép / vô hiệu hóa dịng điện qua điện thoại
Hình 12/05 Half-Bridge Mode
(56)Hình 13/05 Half Bridge Mode
Như thể hình 5-14, chế độ dùng để kích hoạt trình điều khiển MOSFET tồn cầu:
Hình 14/05 Kích hoạt trình điều khiển MOSFET Full-Bridge Mode
(57)Hình 5-15 Full-Bridge Mode Tồn Cầu - Chuyển tiếp Configuration
Trong Chuyển tiếp chế độ sau xảy ra:
Logic (1) xuất pin P1A (pin cao hoạt động); Pulse trình tự xuất P1D pin;
Logic số không (0) xuất chân P1B P1C (chân thấp hoạt động)
Hình cho thấy tình trạng chân P1A-P1D chu kỳ PWM đầy đủ
Hình 5-16 Chuyển tiếp Mode Toàn Cầu - Reverse Configuration
Điều tương tự xảy Reverse chế độ, ngoại trừ chức chân:
Logic (1) xuất pin P1C (pin hoạt động cao); Pulse trình tự xuất P1B pin;
(58)Hình 17/05 Reverse Mode PWM1CON Đăng ký - Khởi động lại Kích hoạt tính PWM STRC bit
- Khi tắt máy tự động, mô-đun PWM tự động thiết lập lại, bit ECCPASE ECCPAS đăng
ký xóa
- Để khởi động lại mô-đun PWM tắt máy tự động, bit ECCPASE phải trừ vào phần mềm
PDC6 - PDC0 - PWM Delay Count bit chữ số nhị phân số-7 xác định số chu kỳ lệnh (4 * Tosc) thêm vào thời gian trễ q trình kích hoạt chân PWM
Hình 18/05 PWM1CON Đăng ký PSTRCON Đăng ký
STRSYNC - Chỉ đạo Sync bit xác định thời điểm đạo xung PWM:
- Chỉ đạo xảy PSTRCON thay đổi, dạng sóng PWM hồn thành;
- Chỉ đạo xảy đăng ký PSTRCON thay đổi Tín hiệu PWM chân đầu thay đổi mà khơng có liên quan đến việc chu kỳ trước hồn thành hay khơng hoạt động hữu ích cần thiết để loại bỏ tín hiệu PWM từ chân
STRD - Chỉ đạo Bật bit D xác định chức pin P1D.
- P1D pin có dạng sóng PWM có cực điều khiển CCP1M0 CCP1M1 bit; - Pin cấu đầu vào chung D Port / đầu
Kích hoạt tính đạo STRC bit C xác định chức pin P1C.
- P1C pin có dạng sóng PWM có cực điều khiển CCP1M0 CCP1M1 bit; - Pin cấu đầu vào chung D cổng / đầu
STRB - Chỉ đạo Bật bit B xác định chức pin P1B.
- P1B pin có dạng sóng PWM có cực điều khiển CCP1M0 CCP1M1 bit; - Pin cấu đầu vào chung D cổng / đầu
Stra - Chỉ đạo Bật bit A xác định chức pin P1A.
(59) - Pin cấu Ainput cảng tổng hợp / đầu
ECCPAS Đăng ký
Hình 19/05 ECCPAS Đăng ký
ECCPASE - ECCP Auto-Shutdown Sự kiện Tình trạng bit cho biết dù đóng cửa ĐCSTQ module xảy (tắt máy nhà nước):
- ĐCSTQ module Shutdown nhà nước; - ĐCSTQ module hoạt động bình thường
ECCPAS2 - ECCPAS0 - ECCP Auto-Shutdown Nguồn Chọn bit chọn nguồn tắt máy tự động:
E C C P A S 2 E C C P A S 1 E C C P A S 0 S H U T H O W N N H À N Ư Ớ C N G U Ồ N
0 0 Tắt máy nhà nước tàn tật
0 C1 sánh sản lượng thay đổi
0 C2 sánh sản lượng thay đổi
0 1 C1 hay C2 sánh sản lượng thay đổi
1 0 Logic số không (0) vào INT pin
1 Logic số không (0) chân INT so sánh sản lượng C1 thay đổi 1 Logic số không (0) chân INT sản lượng thay đổi so sánh C2 1 Logic số không (0) chân INT so sánh C1 hay C2 sản lượngthay đổi
Bảng 5-7 ECCPAS Đăng ký
PSSAC1, PSSAC0 - Pins P1A, P1C Shutdown Nhà nước kiểm soát bit logic xác định nhà nước đầu chân P1A P1C ĐCSTQ module trạng thái tắt máy
P S S A C 1 P S S A C 0 C H Â N L Ý N H À N Ư Ớ C
0 0
0 1
1 X Trở kháng cao (Tri-nhà nước)
Bảng 5-8 Hoa Logic A & C
PSSBD1, PSSBD0 - Pins P1B, P1D Shutdown Nhà nước kiểm soát bit logic xác định nhà nước đầu chân P1B P1D ĐCSTQ module trạng thái tắt máy
P S S B D 1 P S S B D 0 C H Â N L Ý N H À N Ư Ớ C
0 0
0 1
1 X Trở kháng cao (Tri-nhà nước)
(60)Chương 6: Serial Truyền thông Modules EUSART
Việc nâng cao Universal đồng không đồng thu phát (EUSART) module nối tiếp I / O giao tiếp ngoại vi Nó cịn gọi giao diện truyền thơng nối tiếp (SCI) Nó chứa tất máy phát điện đồng hồ, đăng ký thay đổi đệm liệu cần thiết để thực đầu vào hay đầu liệu nối tiếp chuyển giao độc lập chương trình thực thiết bị Như tên gọi quốc gia, việc sử dụng đồng hồ để đồng hóa, module thiết lập kết nối khơng đồng bộ, mà làm cho khơng thể thay số ứng dụng
Ví dụ, trường hợp khó khơng thể cung cấp kênh đặc biệt cho đồng hồ chuyển liệu (ví dụ, điều khiển vô tuyến từ xa hồng ngoại), module EUSART trình bày giải pháp tiện lợi
Hình 6-1 Điều khiển từ xa máy bay
Hệ thống EUSART tích hợp vào vi điều khiển PIC16F887 có tính sau đây: Full-duplex không đồng truyền nhận;
Lập trình - 9-bit chiều dài ký tự; Địa phát 9-bit, chế độ; Đầu vào phát lỗi tràn đệm;
Half-duplex truyền thông chế độ đồng (chủ hay nô lệ) Chế độ không đồng EUSART
EUSART Việc truyền nhận liệu cách sử dụng tiêu chuẩn không trở về-to-zero (NRZ) định dạng Như thấy hình 6-2 đây, chế độ khơng sử dụng tín hiệu đồng hồ, định dạng liệu chuyển giao đơn giản:
Hình 6-2 Chế độ khơng đồng EUSART Tóm lại, liệu chuyển giao theo cách sau:
Trong trạng thái nhàn rỗi, dòng liệu có mức logic cao (1);
Mỗi truyền liệu bắt đầu START bit mà luôn số không (0); Mỗi liệu - 9-bit (bit LSB lần chuyển giao);
Mỗi truyền liệu kết thúc với STOP bit mà ln ln có mức logic mà luôn một (1)
(61)Hình 6-3 EUSART phát khơng đồng bộ
Để cho phép truyền liệu qua EUSART module, cần thiết để cấu hình để hoạt động máy phát Nói cách khác, cần thiết để xác định trạng thái bit sau đây:
TXEN = - EUSART máy phát kích hoạt cách thiết lập bit TXSTA đăng ký;
SYNC = - EUSART cấu hình để hoạt động chế độ khơng đồng cách xóa bit TXSTA đăng ký; và SPEN = - Bằng cách đặt bit đăng ký RCSTA, EUSART kích hoạt TX / pin CK tự động cấu hình đầu Nếu bit đồng thời sử dụng cho số chức tương tự, phải vơ hiệu hóa cách xóa bit tương ứng Ansel đăng ký
Phần trung tâm truyền EUSART đăng ký thay đổi TSR mà truy cập trực tiếp người sử dụng Để bắt đầu truyền tải, module phải kích hoạt cách thiết lập bit TXEN TXSTA đăng ký Dữ liệu gửi phải ghi vào sổ đăng ký TXREG, làm theo trình tự sau kiện:
Byte chuyển sang dịch chuyển đăng ký TSR;
TXREG đăng ký trống rỗng, mà cách thiết lập bit cờ TXIF PIR1 đăng ký Nếu bit TXIE PIE1 đăng ký thiết lập, gián đoạn tạo Bên cạnh đó, cờ thiết lập ngắt kích hoạt hay khơng Ngồi ra, khơng thể xóa phần mềm, cách ghi liệu cho TXREG đăng ký;
Điều khiển điện tử "đẩy" liệu chân TX nhịp điệu với đồng hồ nội bộ: START bit (0) liệu .STOP bit (1);
Khi bit cuối rời khỏi đăng ký TSR, bit TRMT ter Regis TXSTA tự động thiết lập,
Nếu đăng ký TXREG nhận liệu nhân vật chờ đợi, toàn thủ tục lặp lại sau bit STOP nhân vật trước truyền
Đang gửi liệu 9-bit kích hoạt cách thiết lập bit TX9 TXSTA đăng ký Các bit TX9D TXSTA đăng ký liệu thứ chín quan trọng bit Khi chuyển 9-bit liệu, bit liệu TX9D phải viết trước viết bit quan trọng vào Sổ đăng ký TXREG Tất chín bit liệu chuyển giao cho ca TSR đăng ký sau TXREG viết hồn tất
(62)Hình 6-4 EUSART không đồng thu
Tương tự kích hoạt EUSART phát, phép người nhận cần thiết để xác định bước sau: CREN = - EUSART nhận kích hoạt cách thiết lập bit RCSTA đăng ký;
SYNC = - EUSART cấu hình để hoạt động chế độ khơng đồng cách xóa bit lưu trữ TXSTA đăng ký;
SPEN = - Bằng cách đặt bit đăng ký RCSTA, EUSART kích hoạt RX / pin DT tự động cấu đầu vào Nếu bit đồng thời sử dụng cho số chức tương tự, phải vơ hiệu hóa cách xóa bit tương ứng Ansel đăng ký
Khi bước cần thiết thực START bit phát hiện, liệu chuyển giao cho đăng ký chuyển RSR thông qua pin RX Khi bit STOP nhận, sau xảy ra:
Dữ liệu tự động chuyển sang đăng ký RCREG (nếu có sản phẩm nào);
Các bit cờ RCIF thiết lập ngắt, kích hoạt bit RCIE đăng ký PIE1, xảy Tương tự máy phát, bit cờ xóa phần mềm chỉ, tức cách đọc ký RCREG Ghi nhớ FIFO nhớ nhân vật hai (lần đầu vào, đầu ra) cho phép tiếp nhận hai nhân vật lúc;
Nếu đăng ký RCREG chiếm đóng (chứa hai byte) đăng ký thay đổi phát bit STOP, OERR tràn bit thiết lập Trong trường hợp này, đến liệu bị mất, bit OEER phải xóa phần
mềm Nó thực cách bù trừ cài đặt lại bit CREN
Lưu ý: bạn nhận liệu xa bit OERR thiết lập;
Nếu bit STOP số không (0), bit FERR RCSTAregister phát lỗi thiết lập; Để nhận liệu 9-bit cần thiết để thiết lập bit RX9 RCSTA đăng ký
Nhận diện lỗi
Có hai loại lỗi mà vi điều khiển tự động phát Người gọi khung báo lỗi xuất người nhận không phát bit STOP thời gian dự kiến lỗi định thông qua bit FERR RCSTA đăng ký Nếu bit thiết lập, có nghĩa liệu nhận khơng Điều quan trọng biết vài điều:
Một lỗi khung không tạo ngắt nó;
(63) Các bit FERR xóa cách đọc liệu nhận được, có nghĩa kiểm tra phải thực trước đọc liệu;
Các bit FERR xóa phần mềm Nếu cần thiết, xóa cách xóa bit SPEN RCSTA đăng ký Nó đồng thời gây thiết lập lại hệ thống EUSART toàn
Một loại gọi lỗi tràn Lỗi Các nhận FIFO chứa hai ký tự Một lỗi tràn tạo nhân vật thứ ba nhận được.Đơn giản, khơng có khơng gian cho byte lỗi tránh khỏi! Khi điều xảy bit OERR RCSTA đăng ký thiết lập Hậu sau đây:
Dữ liệu lưu giữ sổ đăng ký FIFO (hai byte) bình thường đọc; Khơng có liệu bổ sung nhận bit OERR xóa;
bit khơng trực tiếp truy cập Để xóa nó, cần thiết để xóa bit CREN RCSTA đăng ký để đặt lại toàn hệ thống EUSART cách xóa bit SPEN RCSTA đăng ký
Nhận liệu 9-bit
Ngoài việc nhận tiêu chuẩn 8-bit liệu, hệ thống hỗ trợ tiếp nhận liệu EUSART 9-bit Ở bên chuyển giao, bit thứ chín "gắn" vào byte ban đầu trước bit STOP Về mặt nhận được, bit RX9 RCSTA đăng ký thiết lập, bit liệu thứ chín tự động ghi vào RX9D bit đăng ký Khi byte nhận được, ta nên quan tâm làm để đọc bit nó-bit RX9D liệu phải đọc trước đọc bit quan trọng RCREG đăng ký Nếu không, bit liệu thứ chín tự động xóa
Hình 6-5 Nhận 9-bit liệu Địa phát hiện
(64)Khi nhận liệu nô lệ kiểm tra địa phù hợp riêng Phần mềm, có địa phù hợp xảy ra, phải vơ hiệu hóa địa phát tốn bù trừ ADDEN bit Các thiết bị chủ giữ gửi liệu 8-bit Tất liệu qua đường dây truyền tải nhận module "được công nhận" EUSART Khi nhận byte cuối, thiết bị nô lệ nên thiết lập bit ADDEN phép phát địa
Hình 6-7 gửi liệu TXSTA Đăng ký
Fig.6-8 TXSTA Đăng ký
(65) - Slave chế độ Đồng hồ tạo từ nguồn bên TX9 - 9-bit Phát Bật bit
1-9-bit liệu truyền tải qua hệ thống EUSART; 0-8-bit liệu truyền tải qua hệ thống EUSART
TXEN - Phát Bật bit
- truyền kích hoạt, - truyền động vơ hiệu hóa
SYNC - Chọn chế độ EUSART bit
- EUSART hoạt động chế độ đồng bộ; - EUSART hoạt động chế độ không đồng
SENDB - Gửi Break bit Ký tự sử dụng chế độ không đồng trường hợp cần thiết để thực tiêu chuẩn xe buýt LIN
1 - Gửi Break nhân vật kích hoạt, - Break truyền nhân vật hoàn tất
BRGH - Tốc độ Baud cao Chọn bit xác định tốc độ truyền chế độ khơng đồng Nó khơng ảnh hưởng đến EUSART chế độ đồng
- EUSART hoạt động tốc độ cao; - EUSART hoạt động tốc độ thấp
TRMT - Phát Shift Đăng ký bit trạng thái
- TSR đăng ký có sản phẩm nào, - TSR đăng ký đầy
TX9D - lần thứ IX Phát bit liệu sử dụng địa bit chẵn lẻ. RCSTA Đăng ký
Fig.6-9 RCSTA Đăng ký SPEN - Serial Port Bật bit
- Serial cổng bật RX / DT TX / CK chân tự động cấu đầu vào đầu tương ứng; - Serial cổng tàn tật
RX9 - 9-bit Kích hoạt tính nhận bit
- Nhận liệu 9-bit qua EUSART hệ thống; - Nhận liệu 8-bit thông qua hệ thống EUSART
SREN - đơn bit ReceiveEnable sử dụng chế độ đồng vi điều khiển hoạt động làm chủ.
- đơn nhận kích hoạt, - đơn nhận vơ hiệu hóa
CREN - Liên tiếp nhận Bật bit hành vi khác tùy thuộc vào chế độ EUSART. Chế độ khơng đồng bộ:
- nhận kích hoạt, - nhận tàn tật
Chế độ đồng bộ:
(66)ADDEN - Địa Phát bit Kích hoạt tính sử dụng địa phát chế độ. - Cho phép địa phát liệu 9-bit nhận được,
- Vơ hiệu hóa địa phát Các bit thứ chín sử dụng làm bit chẵn lẻ FERR - khung lỗi bit
- Về tiếp nhận, khung Lỗi phát hiện; - Khơng có lỗi khung
OERR - Lỗi tràn ngập bit.
- Về tiếp nhận, tràn Lỗi phát hiện; - Khơng có lỗi tràn
RX9D - IX chút nhận liệu sử dụng địa bit chẵn lẻ. Tốc độ Baud EUSART Generator (BRG)
Nếu bạn cẩn thận xem xét nhận EUSART không đồng sơ đồ phát, bạn thấy, hai trường hợp, có đồng hồ tín hiệu từ BRG địa phương sử dụng để đồng hóa Nguồn đồng hồ cịn sử dụng chế độ đồng
giờ bao gồm hai ghi 8-bit bao gồm 16-bit đăng ký
Hình Tốc độ Baud 6-10 EUSART Generator (BRG)
Một số văn đăng ký hai định tốc độ truyền Bên cạnh đó, hai bit BRGH TXSTA đăng ký bit BRGH16 BAUDCTL đăng ký ảnh hưởng đến tần số đồng hồ
Công thức dùng để xác định Tốc độ Baud đưa bảng B I T
B R G / E U S A R T M O D E T Ố C Đ Ộ B A U D T H Ứ C
SYNC BRG1G BRGH
0 0 8-bit / không đồng Fosc / [64 (n + 1)]
0 8-bit / không đồng Fosc / [16 (n + 1)]
0 16-bit / không đồng Fosc / [16 (n + 1)]
0 1 16-bit / không đồng Fosc / [4 (n + 1)]
1 X 8-bit / không đồng Fosc / [4 (n + 1)]
1 X 16-bit / không đồng Fosc / [4 (n + 1)]
Bảng 6-1 Tốc độ Baud
Các bảng sau chứa giá trị phải ghi vào bit-16 đăng ký SPBRG giao cho SYNC, BRGH BRGH16 bit để có số mức độ truyền đạt tiêu chuẩn
(67)(68)(69)Bảng 6-2 Xác định giá Baud BAUDCTL Đăng ký
Hình 11/06 BAUDCTL Đăng ký
ABDOVF - Auto-Detect bit Overflow Baud sử dụng chế độ khơng đồng q trình phát tốc độ truyền
- Auto-bốt tràn đếm thời gian, - Auto-bốt không tràn
RCIDL - Nhận Idle bit Flag sử dụng chế độ không đồng bộ.
- nhận nhàn rỗi,
- START bit nhận nhận tiến hành
(70)Chế độ không đồng bộ:
- Truyền liệu ngược với RC6/TX/CK pin; - Phát không đảo ngược liệu vào pin
Chế độ đồng bộ:
- Đồng tăng cạnh đồng hồ,
- Đồng hóa rơi xuống cạnh đồng hồ
WUE Wake-up Bật bit
- nhận chờ đợi cho cạnh thuộc vào pin RC7/RX/DT để bắt đầu thức dậy vi điều khiển từ chế độ ngủ; - nhận hoạt động bình thường
ABDEN - Auto-Detect Baud bit Kích hoạt tính sử dụng chế độ không đồng chỉ.
- Auto-bốt phát chế độ kích hoạt Bit tự động xóa tốc độ truyền phát hiện; - chế độ Auto-bốt phát vơ hiệu hóa
Trong ngắn hạn:
Đang gửi liệu thông qua giao tiếp EUSART không đồng bộ:
1 Tốc độ baud mong muốn thiết lập cách sử dụng bit BRGH (TXSTA đăng ký) BRG16 (BAUDCTL đăng ký) đăng ký SPBRGH SPBRG;
2 Các bit SYNC (TXSTA đăng ký) phải xóa bit SPEN nên thiết lập (RCSTA đăng ký) để kích hoạt cổng nối tiếp;
3 Ngày truyền liệu 9-bit, bit TX9 TXSTA đăng ký phải thiết lập;
4 truyền liệu kích hoạt cách thiết lập TXEN bit TXSTA đăng ký Bit TXIF PIR1 đăng ký tự động thiết lập;
5 Nếu cần thiết bit TXEN gây ra, làm gián đoạn Giẽ PEIE bit INTCON đăng ký phải thiết lập; Ngày truyền liệu 9-bit, giá trị bit thứ chín nên ghi vào bit TX9D TXSTA đăng ký;
7 Truyền bắt đầu cách viết 8-bit liệu vào sổ đăng ký TXREG Tiếp nhận liệu thông qua giao tiếp EUSART không đồng bộ:
1 Tốc độ Baud nên thiết lập cách sử dụng bit BRGH (TXSTA đăng ký) BRG16 (BAUDCTL đăng ký) đăng ký SPBRGH SPBRG;
2 Các bit SYNC (TXSTA đăng ký) phải xóa bit SPEN nên thiết lập (RCSTA đăng ký) để kích hoạt cổng nối tiếp;
3 Nếu cần liệu nhận nguyên nhân gây gián đoạn, hai bit RCIE PIE1 đăng ký bit Giẽ PEIE INTCON đăng ký phải thiết lập;
4 Ngày 9-bit liệu nhận được, bit RX9 RCSTA đăng ký phải thiết lập; Dữ liệu nhận kích hoạt cách thiết lập bit CREN RCSTA đăng ký;
6 Việc đăng ký RCSTA phải đọc để có thơng tin lỗi xảy q trình truyền Ngày 9-bit liệu nhận được, bit thứ chín lưu trữ đăng ký;
7 Đã nhận 8-bit liệu lưu vào sổ đăng ký RCREG phải đọc Thiết lập chế độ phát Địa chỉ:
1 Tốc độ Baud nên thiết lập cách sử dụng bit BRGH (TXSTA đăng ký) BRG16 (BAUDCTL đăng ký) đăng ký SPBRGH SPBRG;
2 Các bit SYNC (TXSTA đăng ký) phải xóa bit SPEN nên thiết lập (RCSTA đăng ký) để kích hoạt cổng nối tiếp;
3 Nếu cần liệu nhận gây ra, làm gián đoạn bit RCIE PIE1 bit bit Giẽ PEIE INTCON đăng ký phải thiết lập;
4 Các bit RX9 RCSTA đăng ký phải thiết lập;
5 Các ADDEN RCSTA đăng ký phải thiết lập, cho phép liệu hiểu địa chỉ; Dữ liệu nhận được kích hoạt cách thiết lập bit CREN RCSTA đăng ký;
7 Ngay sau liệu 9-bit nhận được, bit RCIF PIR1 đăng ký tự động thiết lập Nếu kích hoạt, làm gián đoạn xảy ra;
8 Việc đăng ký RCSTA phải đọc để có thơng tin lỗi xảy q trình truyền Các RX9D bit thứ chín ln ln quy định;
9 Đã nhận 8-bit lưu giữ sổ đăng ký RCREG phải đọc Nó cần kiểm tra có kết hợp bit phù hợp với địa xác định trước Nếu trận đấu diễn ra, cần thiết để xóa bit ADDEN RCSTA đăng ký, cho phép thêm 8-bit liệu nhận
Thầy đồng Serial Port Module
(71)cách sử dụng đầu vào / đầu dịng (tối đa hai ba) Do đó, thường dùng để kết nối vi điều khiển cho hình LCD, A / D chuyển đổi, EEPROMs nối tiếp, thay đổi đăng ký vv Các tính loại giao tiếp đồng phù hợp để sử dụng hệ thống với tổng thể một nô lệ Một thiết bị chủ chứa mạch điện cần thiết cho hệ tốc độ truyền cung cấp đồng hồ cho tất thiết bị hệ thống Thiết bị nơ lệ cách loại bỏ mạch đồng hồ hệ nội Các module MSSP hoạt động theo hai chế độ:
Chế độ SPI (Serial Peripheral Interface) I ² C chế độ (Inter-vi mạch)
Như thấy hình 6-12 bên dưới, đại diện MSSP module nửa phần cứng cần thiết để thiết lập giao tiếp nối tiếp, nửa khác lưu trữ thiết bị liệu trao đổi với Mặc dù mô-đun hai đầu dòng giống nhau, phương thức họ khác tùy thuộc vào việc chúng hoạt động Master nô lệ:
Nếu vi điều khiển lập trình điều khiển thiết bị hay mạch (thiết bị ngoại vi), hoạt động thiết bị chủ Một module định nghĩa tạo đồng hồ cần thiết, nghĩa liệu nhận truyền tải yêu cầu phần mềm Nó phụ thuộc vào chủ có kết nối thiết lập hay không Nếu không, vi điều khiển lập trình phần số thiết bị ngoại vi thuộc số thiết bị phức tạp (ví dụ máy tính), sau hoạt động thiết bị nơ lệ Như vậy, luôn phải chờ đợi yêu cầu để truyền liệu từ thiết bị chủ
Fig.6-12 MSSP Module SPI Mode
Các chế độ SPI cho phép bit liệu truyền nhận đồng thời sử dụng đầu vào / đầu dòng xuất: Vua Pháp Thuật - Serial Data Out - truyền dòng;
SDI - Serial Data Trong - nhận hàng; và SCK - Serial Clock - đồng hóa dịng.
(72)SS - Slave Chọn - thêm pin sử dụng để lựa chọn thiết bị cụ thể Đây hoạt động trường hợp vi điều khiển chế độ nô lệ, tức bên - thiết bị tổng thể yêu cầu trao đổi liệu
Khi hoạt động chế độ SPI, MSSP module sử dụng tổng số đăng ký:
SSPSTAT tình trạng đăng ký; Kiểm soát SSPCON đăng ký; SSPBUF đệm đăng ký;
SSPSR thay đổi đăng ký (không trực tiếp có sẵn)
Ba đăng ký ghi / đọc thay đổi lúc nào, đăng ký, khơng có sẵn, sử dụng để chuyển đổi liệu sang định dạng "nối tiếp"
Hình 13/06 SPI Mode
Như thấy hình 6-14, phần trung tâm module SPI bao gồm hai sổ đăng ký kết nối với chốt để tiếp nhận, truyền tải đồng hóa
Shift đăng ký (SSPRS) trực tiếp kết nối với chân vi điều khiển sử dụng để truyền liệu định dạng nối tiếp Các SSPRS đăng ký có đầu vào đầu thay đổi liệu vào khỏi thiết bị Nói cách khác, bit xuất đầu vào (nhận hàng) đồng thời thay đổi chút hướng đầu (chuyển line)
Các SSPBUF đăng ký (Buffer) phần nhớ sử dụng để tạm giữ liệu văn cho SSPRS liệu nhận sẵn sàng Khi nhận tất bit liệu, mà byte chuyển đến đăng ký
SSPBUF Điều đôi đệm liệu nhận (SSPBUF) cho phép byte để bắt đầu tiếp nhận trước đọc liệu nhận Bất ghi vào sổ đăng ký SSPBUF trình truyền / nhận liệu bị bỏ qua Kể từ có truy cập nhất, đăng ký xem quan trọng lập trình điểm 'của xem
(73)Hình 14/06 SPI Mode Trong ngắn hạn:
Trước khởi tạo SPI, cần thiết để xác định số tùy chọn:
Master mode (SCK pin sản phẩm đồng hồ); Chế độ nô lệ (SCK pin đầu vào đồng hồ);
Dữ liệu đầu vào giai đoạn cuối thời gian đầu liệu (SMP bit); Đồng hồ cạnh (CKE bit);
Tốc độ Baud (chỉ chế độ Master); Chọn chế độ nô lệ (chỉ chế độ nô lệ)
Bước 1.
Số liệu để truyền tải nên ghi vào đệm ghi SSPBUF Ngay sau đó, module SPI hoạt động chế độ tổng thể, vi điều khiển tự động thực bước sau 2, Nếu module SPI hoạt động nô lệ, vi điều khiển không thực bước sau pin SCK phát tín hiệu đồng hồ
Hình Bước 15/06
Bước 2.
Dữ liệu chuyển sang đăng ký đăng ký SSPSR SSPBUF khơng bị xóa Hình Bước 16/06
Bước 3.
Đồng với tín hiệu đồng hồ, liệu chuyển sang chân đầu (MSB bit đầu tiên) đăng ký đồng thời làm đầy với bit thông qua pin đầu vào Trong chế độ Master, vi điều khiển tạo đồng hồ, chế độ nơ lệ sử dụng đồng hồ bên ngồi (pin SCK)
(74)Bước 4.
Việc đăng ký SSPSR đầy lần bit liệu nhận Nó thể cách thiết lập bit BF SSPIF Các liệu nhận (mà byte) tự động chuyển từ SSPSR đăng ký sổ đăng ký SSPBUF Kể từ truyền liệu qua giao tiếp nối tiếp thực tự động, phần cịn lại chương trình bình thường thực liệu chuyển giao tiến hành Trong trường hợp đó, chức bit SSPIF tạo ngắt truyền byte hồn tất
Hình 6-18 Bước 4
Bước 5.
Cuối cùng, liệu lưu giữ sổ đăng ký SSPBUF sẵn sàng cho sử dụng di chuyển đến đăng ký sẵn Hình 6-19 Bước 5
I ² C chế độ
I ² C chế độ (Inter IC Bus) đặc biệt thích hợp vi điều khiển mạch tích hợp, vi điều khiển cần trao đổi liệu với, thiết bị Nó thường vi điều khiển tích hợp chuyên ngành, mạch giá rẻ thuộc hệ gọi "thành phần ngoại vi thông minh" (kỷ niệm, cảm biến nhiệt độ, đồng hồ thời gian thực, vv)
Tương tự giao tiếp nối tiếp chế độ SPI, chuyển liệu I ² C chế độ đồng hai chiều Thời gian có hai chân sử dụng để truyền liệu Đây SDA (Serial Data) SCL (Serial Clock) chân Người dùng phải cấu hình chân đầu vào hay đầu thông qua bit TRISC
Có lẽ khơng phải trực tiếp nhìn thấy Bằng cách quan sát quy tắc cụ thể (giao thức), chế độ cho phép lên tới 122 thành phần khác kết nối lúc cách đơn giản cách sử dụng hai tơi có giá trị / O pins Tóm lại, thứ hoạt động sau: Đồng hồ cần thiết để đồng hóa hoạt động hai thiết bị luôn tạo thiết bị tổng thể (vi điều khiển) tần số trực tiếp ảnh hưởng đến tốc độ truyền Có giao thức cho phép tần số đồng hồ tối đa 3,4 MHz (được gọi tốc độ cao I ² C xe buýt), tần số đồng hồ giao thức sử dụng thường xuyên hạn chế tới 100 KHz Khơng có giới hạn trường hợp tần số tối thiểu
(75)SSPSR Tất thiết bị nô lệ chia sẻ đường truyền tất lúc nhận byte đầu tiên, số họ có địa cho phù hợp
Hình 6-20 Master Slave Cấu hình
Một byte gửi (chỉ 8-bit liệu truyền đi), chủ vào nhận thức chờ xác nhận từ thiết bị nhận địa phù hợp xảy Nếu thiết bị nô lệ gửi nhận liệu bit (1), chuyển liệu tiếp tục thiết bị tổng thể (vi điều khiển) gửi bit Stop
Đây lời giải thích đơn giản cách giao tiếp phần hai Nếu cần thiết, vi điều khiển kiểm sốt tình hình phức tạp 1.024 thành phần khác nhau, chia sẻ thiết bị tổng thể khác nhau, kết nối thiết bị sử dụng thực tế khơng có cần phải thảo luận với chiều dài lớn
(76)Hình 22/06 MSSP sơ đồ khối Mode C ²
Các module MSSP sử dụng sáu đăng ký cho hoạt động ² C Một số chúng in hình trên:
SSPCON; SSPCON2; SSPSTAT; SSPBUF; SSPSR; SSPADD
(77)Hình 23/06 SSPSTAT Đăng ký SMP mẫu bit
SPI chế độ điều khiển - bit xác định liệu đầu vào giai đoạn
- Nhà nước Logic đọc vào cuối thời gian liệu đầu ra; - nhà nước Logic đọc liệu thời gian đầu
Chế độ nô lệ SPI bit trừ SPI sử dụng chế độ nô lệ I ² C chế độ (chủ hay nô lệ)
- Tốc độ đáp ứng điều khiển tốc độ vơ hiệu hóa cho chế độ tiêu chuẩn (100kHz); - Tốc độ đáp ứng điều khiển kích hoạt cho chế độ tốc độ cao (400kHz)
CKE - Đồng hồ Edge Chọn bit chọn chế độ đồng hóa. CKP = 0:
- Dữ liệu truyền góc lên xung đồng hồ (0 - 1); - Dữ liệu truyền bờ xuống xung đồng hồ (1 - 0)
CKP = 1:
- Dữ liệu truyền bờ xuống xung đồng hồ (1 - 0); - Dữ liệu truyền góc lên xung đồng hồ (0 - 1)
D / A - Dữ liệu / bit Địa sử dụng chế độ I ² C chỉ.
- Chỉ byte cuối nhận truyền liệu; - Chỉ byte cuối nhận truyền địa
P - bit Stop sử dụng chế độ I ² C chỉ.
- bit STOP phát trước;
- bit STOP không phát cuối
S - bit bắt đầu sử dụng chế độ I ² C chỉ.
- START bit phát trước;
- bit START không phát cuối
R / W - Đọc Viết bit sử dụng chế độ I ² C bit giữ R / W bit thông tin sau trận địa cuối bit có giá trị từ địa phù hợp với bit bắt đầu tiếp theo, bit Stop hay không ACK bit
Trong chế độ nô lệ I ² C
- Dữ liệu đọc, - Số liệu ghi
Trong chế độ master Tôi ² C
- Phát tiến trình, - Phát không tiến hành
UA - Thông tin Địa bit sử dụng bit-10 I ² C chế độ chỉ.
- Chỉ cần thiết để cập nhật địa SSPADD đăng ký; - Địa vào sổ đăng ký SSPADD xác không cần phải cập nhật
BF đệm bit trạng tồn
(78)Trong q trình truyền liệu (trong I ² C chế độ chỉ)
- Dữ liệu truyền tiến trình (khơng bao gồm bit ACK STOP); - truyền liệu hồn chỉnh (khơng bao gồm ACK bit STOP)
SSPCON Đăng ký
Hình 24/06 SSPCON Đăng ký Viết WCOL Collision Detect bit
- Collision phát Một ghi vào sổ đăng ký SSPBUF cố gắng I ² C điều kiện không hợp lệ cho truyền để bắt đầu,
- Khơng có va chạm Nhận SSPOV Chỉ số bit Overflow
- Một byte nhận đăng ký SSPSR giữ liệu trước Vì khơng có khơng gian cho liệu nhận được, hai byte phải xóa Trong trường hợp này, liệu SSPSR bị mất, - liệu nối tiếp cách xác nhận
SSPEN - Kích hoạt tính đồng Serial Port bit xác định vi điều khiển chân chức khởi MSSP module: Trong chế độ SPI
- Cho phép MSSP module cấu hình chân SCK, SDO, SDI SS nguồn chân cổng nối tiếp, - Vơ hiệu hóa module MSSP cấu hình chân I / O port chân
Trong chế độ I ² C
- Cho phép MSSP module cấu hình chân SDA SCL nguồn chân cổng nối tiếp, - Vơ hiệu hóa module MSSP cấu hình chân I / O port chân
CKP - Đồng hồ bit Chọn phân cực không sử dụng I ² C chế độ master. Trong chế độ SPI
- Idle nhà nước đồng hồ cấp độ cao; - Idle nhà nước đồng hồ cấp độ thấp
Trong chế độ nô lệ I ² C
- Cho phép đồng hồ,
- Giữ đồng hồ thấp Được sử dụng để cung cấp thêm thời gian để ổn định liệu
SSPM3-SSPM0 - đồng Serial Port Mode Chọn bit chế độ SSP xác định cách kết hợp bit này: S S P M 3 S S P M 2 S S P M 1 S S P M 0 M O D E
0 0 SPI chế độ điều khiển, đồng hồ = Fosc /
0 0 SPI chế độ điều khiển, đồng hồ = Fosc/16
0 SPI chế độ điều khiển, đồng hồ = Fosc/64
0 1 SPI chế độ điều khiển, đồng hồ = (đầu TMR) / 0 Chế độ nơ lệ SPI, SS pin điều khiển kích hoạt
0 1 Chế độ nô lệ SPI, SS kiểm sốt pin tàn tật, SS sử dụngnhư I / O pin
0 1 I ² C chế độ slaver, 7-bit địa sử dụng
(79)1 0 Tôi ² chế độ master C, đồng hồ = Fosc / [4 (SSPAD +1)]
1 0 Mặt nạ sử dụng chế độ nô lệ, ² C
1 Không sử dụng
1 1 I ² C chế độ kiểm soát tổng thể
1 0 Không sử dụng
1 1 Không sử dụng
1 1 I ² C chế độ nô lệ, 7-bit địa sử dụng, START STOP bitcho phép ngắt 1 1 I ² C chế độ nô lệ, 10-bit địa sử dụng, START STOP bitcho phép ngắt
Bảng 6-3 Chế độ đồng Serial Port Bits Chọn SSPCON2 Đăng ký
Hình 25/06 SSPCON2 Đăng ký GCEN - Tổng Liên Bật bit
Trong chế độ nô lệ I ² C
- Cho phép làm gián đoạn địa gọi chung chung (0000h) nhận SSPSR sự; - Tổng gọi địa vơ hiệu hóa
ACKSTAT - Thừa nhận bit trạng thái Trong I ² C Master Phát chế độ
- Thừa nhận không nhận từ nô lệ, - Thừa nhận nhận từ nô lệ
ACKDT - Ghi nhận liệu bit Trong I ² C Master nhận chế độ
- Không phải Thừa nhận; - Thừa nhận
ACKEN - Thừa nhận tình trạng Bật bit Trong I ² C Master Nhận thức
- Tiến hành xác nhận điều kiện SDA SCL chân truyền tải liệu ACKDT bit Nó tự động xóa phần cứng;
- Thừa nhận tình trạng khơng phải bắt đầu RCEN - Nhận Bật bit
Trong I ² C chế độ Master
- Cho phép liệu nhận I ² C chế độ; - Nhận vơ hiệu hóa
PEN - STOP điều kiện Enable bit Trong I ² C chế độ Master
(80) - STOP điều kiện không khởi xướng RSEN - Điều kiện lặp lặp lại START Bật bit Trong chế độ I ² C có chủ
- Kẻ START điều kiện chân SDA SCL Sau đó, bit tự động xóa phần cứng; - lặp lặp lại tình trạng START khơng phải bắt đầu
SEN - START Điều kiện Bật / Stretch Bật bit Trong I ² C chế độ Master
- Bắt đầu START điều kiện chân SDA SCL Sau đó, bit tự động xóa phần cứng; - START điều kiện không khởi xướng
I ² C chế độ Master
Các trường hợp phổ biến vi điều khiển hoạt động tổng thể thành phần ngoại vi nô lệ Đây lý sách bao gồm chế độ Nó coi địa gồm có bit có thiết bị vi điều khiển (một tổng thể thiết bị)
Để kích hoạt MSSP module chế độ này, cần thiết để làm sau:
Thiết lập tốc độ baud (SSPADD đăng ký), tắt điều khiển tốc độ quay (bằng cách thiết lập bit SMP SSPSTAT đăng ký) chế độ master chọn (SSPCON đăng ký) Sau chuẩn bị hồn thành module kích hoạt (SSPCON đăng ký: SSPEN bit), ta nên chờ đợi tín hiệu điện tử nội cho tất thứ sẵn sàng để truyền liệu, tức bit SSPIF PIR1 đăng ký thiết lập
bit cần xóa phần mềm sau đó, vi điều khiển sẵn sàng để bắt đầu "giao tiếp" với thiết bị ngoại vi
(81)Mỗi tình trạng đồng hồ chân SDA bắt đầu với logic số không (0) xuất cài đặt bit SEN SSPCON2 đăng ký Ngay kích hoạt, vi điều khiển phải chờ đợi thời gian định trước bắt đầu truyền thông Đây "điều kiện bắt đầu" để gọi, chế nội kiểm tra thực Nếu có đủ điều kiện, bit SSPIF PIR1 thiết lập truyền liệu bắt đầu đăng ký SSPBUF tải
Kể từ tối đa 112 mạch tích hợp đồng thời chia sẻ đường truyền, byte liệu phải có địa mà trận đấu có thiết bị nơ lệ Mỗi thành phần có địa riêng liệt kê bảng liệu thích hợp Các bit thứ tám byte liệu xác định hướng liệu truyền tải, vi điều khiển để gửi nhận liệu Trong trường hợp này, tất liệu nhận bit thứ tám logic khơng (0)
Hình 6-28 Truyền số liệu I ² Chế độ Master C
Khi địa phù hợp xảy ra, vi điều khiển phải chờ cho nhận liệu bit Các thiết bị nô lệ xác nhận địa phù hợp cách xóa bit ASKSTAT SSPCON2 đăng ký Nếu trận đấu diễn cách, tất byte liệu truyền đại diện cách
Truyền liệu kết thúc cách thiết lập bit SEN SSPCON2 đăng ký Các STOP gọi tình trạng xảy ra, cho phép chân SDA để nhận tình trạng xung: Start - Địa - Ghi nhận - Dữ liệu - Ghi nhận liệu - Ghi nhận - Dừng lại! Fig.6-29 truyền liệu I ² Chế độ Master C
(82)Chuẩn bị cho liệu nhận tương tự để truyền liệu, với ngoại lệ bit cuối byte gửi (có địa chỉ) logic (1) Nó xác định tổng thể mà hy vọng nhận liệu từ thiết bị nô lệ giải Đối với vi điều khiển, kiện sau xảy ra:
Sau chế nội hoàn thành START bit thiết lập, thiết bị nô lệ bắt đầu gửi byte thời điểm Các byte lưu trữ SSPSR đăng ký nối tiếp Mỗi liệu, sau nhận bit cuối thứ tám, nạp vào sổ đăng ký SSPBUF từ nơi đọc Bằng cách đọc đăng ký, việc xác nhận bit tự động gửi đi, có nghĩa thiết bị chủ sẵn sàng để nhận liệu
Cuối cùng, tương tự truyền liệu, liệu nhận kết thúc cách thiết lập bit STOP:
Hình 60-30 Tiếp nhận liệu I ² Chế độ Master C Start - Địa - Ghi nhận - Dữ liệu - Ghi nhận Dữ liệu - Ghi nhận - Dừng lại!
Trong điều kiện xung, thừa nhận bit gửi tới thiết bị nô lệ Tốc độ Baud Generator
Để đồng hóa liệu truyền dẫn, tất kiện diễn chân SDA phải đồng với đồng hồ tạo thiết bị chủ.đồng hồ tạo dao động có tần số đơn giản phụ thuộc vào tần số dao động vi điều khiển, giá trị ghi vào sổ đăng ký SSPADD chế độ SPI hành
(83)Hình 6-31 Tốc độ Baud Generator Ghi hữu ích
Khi vi điều khiển giao tiếp với thành phần ngoại vi, xảy chuyển liệu khơng lý Trong trường hợp đó, bạn nên kiểm tra tình trạng số bit làm rõ vấn đề Trong thực tế, nhà nước bit kiểm tra cách thực chương trình ngắn sau byte truyền tải tiếp nhận (chỉ trường hợp)
WCOL (SPCON, 7) - Nếu bạn cố gắng viết liệu cho đăng ký SSPBUF liệu truyền / nhận tiến bộ, bit WCOL thiết lập nội dung đăng ký SSPBUF không thay đổi Viết không xảy Sau này, bit WCOL phải trừ vào phần mềm
BF (SSPSTAT, 0) - Trong chế độ truyền, bit thiết lập CPU ghi vào sổ đăng ký SSPBUF đặt byte dạng nối tiếp chuyển từ việc đăng ký SSPSR Trong nhận thức, bit thiết lập liệu địa nạp vào đăng ký SSPBUF Nó xóa đăng ký SSPBUF đọc
SSPOV (SSPCON, 6) - Trong nhận thức, bit thiết lập byte nhận sổ đăng ký SSPSR qua giao tiếp nối tiếp, nhận liệu trước khơng đọc từ SSPBUF chưa đăng ký
SDA SCL Pins - Khi SPP module kích hoạt, chân biến thành mở Drain Nó có nghĩa chân phải kết nối với điện trở đó, đầu kia, kết nối để cung cấp lượng tích cực
(84)Để thiết lập giao tiếp nối tiếp chế độ I ² C, sau nên thực hiện: Module Thiết lập địa gửi:
Giá trị để xác định tốc độ truyền ghi vào SSPADD đăng ký;
Kiểm soát SlewRate nên tắt cách thiết lập bit SMP SSPSTAT đăng ký;
Để chọn chế độ Master, giá trị nhị phân 1000 nên ghi vào bit SSPM3-SSPM0 SSPCON1 đăng ký; Các bit SEN SSPCON2 đăng ký phải thiết lập (START điều kiện);
Các bit SSPIF tự động đặt cuối START điều kiện mô-đun sẵn sàng để hoạt động Nó trừ; địa nơ lệ nên ghi vào SSPBUF đăng ký;
Khi byte gửi, bit SSPIF (ngắt) tự động thiết lập xác nhận bit nhận từ thiết bị nô lệ
Truyền liệu:
Dữ liệu gửi ghi vào SSPBUF đăng ký;
Khi byte gửi, bit SSPIF (ngắt) tự động thiết lập xác nhận bit nhận từ thiết bị phụ; Để thông báo cho thiết bị phụ mà truyền hoàn tất, điều kiện STOP nên bắt đầu cách thiết lập bit PEN
của SSPCON đăng ký Nhận liệu:
Để cho phép nhận bit RSEN SSPCON2 đăng ký phải thiết lập;
Các bit liệu nhận tín hiệu SSPIF Khi liệu đọc sổ đăng ký SSPBUF, bit ACKEN SSPCON2 đăng ký phải thiết lập phép gửi nhận bit;
Để thông báo cho thiết bị nơ lệ mà truyền tải hồn tất, điều kiện STOP nên bắt đầu cách thiết lập bit PEN SSPCON đăng ký
Email: info@123doc.org Trang chủCông cụ phát triển Trình biên dịch
Phụ kiện đồng Đặc biệt
Dễ MuaẤn phẩm Hỗ trợCác dự ánTải Sách: vi điều khiển PIC
TOCGiới thiệuCh 1Ch 2Ch 3Ch 4.Ch 5Ch 6Ch 7Ch 8Ch 9App AApp BApp C Chương 7: Module Analog
Ngoài số lượng lớn I / O dòng, PIC16F887 bao gồm 14 đầu vào tương tự Chúng cho phép vi điều khiển để nhận ra, khơng có pin thúc đẩy để logic số không (0 +5 V), xác đo điện áp chuyển đổi thành giá trị số, tức định dạng kỹ thuật số Toàn quy trình diễn / Một mơ-đun chuyển đổi D có tính sau đây:
chuyển đổi tạo kết nhị phân 10-bit cách sử dụng phương pháp xấp xỉ liên tục lưu trữ kết chuyển đổi vào sổ đăng ký ADC (ADRESL ADRESH);
Có 14 đầu vào riêng biệt tương tự;
Các A / D chuyển đổi cho phép chuyển đổi tín hiệu đầu vào tương tự với đại diện nhị phân 10-bit tín hiệu đó; Bằng cách chọn tài liệu tham khảo điện áp VREF VREF +, độ phân giải tối thiểu chất lượng chuyển đổi điều chỉnh theo nhu cầu khác
ADC Mode Đăng ký
Mặc dù việc sử dụng chuyển đổi D / phức tạp, đơn giản, đơn giản sử dụng module giao tiếp nối tiếp, anyway
Hình 7-1 Chế độ ADC Đăng ký
Module kiểm soát bit bốn đăng ký: ADRESH - Có chứa byte cao kết chuyển đổi;
ADRESL - Có chứa byte thấp kết chuyển đổi; ADCON0 - Kiểm soát đăng ký 0;
(85)Khi chuyển đổi giá trị tương tự thành kỹ thuật số một, kết A 10-bit chuyển đổi D / lưu trữ hai sổ đăng ký Để đối phó với giá trị dễ dàng hơn, xuất hai định dạng trái bên phải hợp lý hợp lý Các bit ADFM ADCON1 đăng ký xác định định dạng kết chuyển đổi (xem hình 7-2) Trong trường hợp A / D chuyển đổi khơng sử dụng, đăng ký sử dụng đăng ký mục đích chung
Hình 7-2 ADRESH Đăng ký ADRESL A / D Yêu cầu thu
Đối với Trung tâm để đáp ứng xác theo quy định nó, cần thiết để cung cấp chậm trễ thời gian định lựa chọn cụ thể đo lường đầu vào tương tự thời gian gọi "mua thời gian" chủ yếu phụ thuộc vào trở kháng nguồn Có phương trình sử dụng để tính tốn xác thời gian này, mà số trường hợp xấu với khoảng 20uS Tóm lại, sau chọn (hoặc thay đổi) đầu vào tương tự trước bắt đầu chuyển đổi cần thiết để cung cấp 20uS trì hỗn thời gian phép chuyển đổi tối đa độ xác ACD
Đồng hồ thời kỳ ADC
Thời gian cần thiết để hoàn tất chuyển đổi bit định nghĩa TAD Các TAD u cầu phải có 1,6 chúng tơi Một toàn 10-bit A / D chuyển đổi lâu chút so với dự kiến số tiền đến 11 giai đoạn TAD Tuy nhiên, kể từ hai đồng hồ chuyển đổi tần số mã nguồn xác định phần mềm, kết hợp sẵn bit ADCS1 ADCS0 cần lựa chọn trước đo điện áp số bắt đầu vào tương tự Những bit lưu giữ sổ đăng ký ADCON0
NGUỒN ĐỒNG HỒ ADC ADCS1 ADCS0 THIẾT BỊ TẦN SỐ (FOSC) 20 Mhz Mhz Mhz Mhz
Fosc / 20 100 ns 250 ns 500 ns
Fosc / 80 400 ns chúng
Fosc/321 1,6 chúng 32 FRC 1 2-6 2-6 2-6 2-6 Bảng 7-1 ADC Đồng hồ thời kỳ
Bất kỳ thay đổi tần số đồng hồ hệ thống ảnh hưởng đến tần số đồng hồ ADC, mà bất lợi ảnh hưởng đến kết ADC Thiết bị đặc tính tần số hiển thị bảng Các giá trị tế bào tơ đậm ngồi giới hạn khuyến cáo
Làm để sử dụng A / D Converter?
Để kích hoạt A / D chuyển đổi để chạy mà khơng có vấn đề để tránh kết bất ngờ, cần thiết để xem xét sau đây:
A / D chuyển đổi không khác biệt điện áp kỹ thuật số analog Để tránh sai sót đo lường, hư hỏng chip, chân nên cấu đầu vào tương tự trước bắt đầu chuyển đổi Các bit sử dụng cho mục đích lưu sổ đăng ký Tris ANSELH;
Khi cổng với đầu vào analog đánh dấu CH0 CH13-được đọc, bit tương ứng đưa tới logic số không (0); Khoảng nói, điện áp đo lường chuyển đổi dựa so sánh điện áp đầu vào với quy mô nội có 1.024 điểm (210 = 1024) Các nhãn hiệu quy mô thấp viết tắt VREF điện áp, điểm cao viết tắt VREF + điện áp Hình 7-3 cho thấy điện áp ám lựa chọn tối thiểu giá trị tối đa tốt
Hình 7-3 Làm để sử dụng A / D Converter ADCON0 Đăng ký
Hình 7-4 Đăng ký ADCON0
ADCS1, ADCS0 - A / D chuyển đổi đồng hồ Chọn bit chọn tần số đồng hồ sử dụng để đồng hóa nội A chuyển đổi D / Nó ảnh hưởng đến thời gian chuyển đổi
ADCS1 ADCS2 ĐỒNG HỒ
0 Fosc /
(86)1 Fosc/32
1 RC *
Bảng 7-2 A / D chuyển đổi Bits Chọn
* Đồng hồ tạo dao động nội xây dựng chuyển đổi
CHS3-CHS0 - Analog Channel Chọn bit chọn chân kênh analog để chuyển đổi, tức điện áp đo lường: CHS3 CHS2 CHS1 CHS0 CHANNEL GHIM
0 0 0 RA0/AN0
0 0 1 RA1/AN1
0 RA2/AN2
0 1 RA3/AN3
0 0 RA5/AN4
0 1 RE0/AN5
0 1 RE1/AN6
0 1 RE2/AN7
1 0 RB2/AN8
1 0 RB3/AN9
1 10 RB1/AN10
1 1 11 RB4/AN11
1 0 12 RB0/AN12
1 1 13 RB5/AN13
1 1 CVref
1 1 VREF = 0.6V
Bảng 7-3 Tình trạng tương tự Channel Bits
GO / DONE - A / D chuyển đổi trạng thái bit xác định tình trạng chuyển đổi: - A / D chuyển đổi tiến;
0 - A / D chuyển đổi hoàn tất bit tự động xóa phần cứng A / D chuyển đổi hoàn tất Adon - A / D Ngày bit cho phép chuyển đổi A D /
1 - A / D chuyển đổi kích hoạt, - A / D chuyển đổi vơ hiệu
ADCON1 Đăng ký
Hình 7-5 Đăng ký ADCON1
ADFM - A / D Kết bit Format Chọn
1 - Chuyển đổi kết phải hợp lý Sáu bit quan trọng ADRESLH không sử dụng; - Kết chuyển đổi trái lý Sáu bit quan trọng ADRESL không sử dụng
VCFG1 - Điện áp tham khảo bit chọn điện áp nguồn tham khảo tiêu cực cần thiết cho hoạt động chuyển đổi A D / - Phủ định tham chiếu điện áp pin-VREF;
0 - Điện áp cung cấp điện VSS sử dụng nguồn tham khảo điện áp âm
VCFG0 - Điện áp tham khảo bit chọn điện áp nguồn tham khảo tích cực cần thiết cho hoạt động chuyển đổi A D / - Tích cực tham chiếu điện áp áp dụng VREF + pin;
0 - Điện áp cung cấp điện VDD sử dụng nguồn tích cực tham chiếu điện áp Trong ngắn hạn:
Để đo điện áp pin đầu vào A chuyển đổi D / sau nên thực hiện: Bước - Cấu hình cổng:
Viết logic (1) để bit tương ứng Tris đăng ký để cấu hình đầu vào;
(87)Cấu hình điện áp tham chiếu ADCON1 đăng ký; Chọn ADC chuyển đổi đồng hồ ADCON0 đăng ký;
Chọn kênh đầu vào CH0-CH13 ADCON0 đăng ký;
Chọn định dạng liệu cách sử dụng bit ADFM ADCON1 đăng ký; Kích hoạt tính A / D chuyển đổi cách thiết lập bit Adon ADCON0 đăng ký Bước - Cấu hình ADC gián đoạn (tùy chọn):
Xóa bit ADIF;
Đặt ADIE, PEIE Giẻ bit
Bước - Chờ cho thời gian mua lại yêu cầu (khoảng 20uS) để vượt qua
Bước - Bắt đầu chuyển đổi cách thiết lập GO / DONE chút ADCON0 sổ đăng ký Bước - Chờ cho ADC chuyển đổi để hồn thành
Nó cần thiết để kiểm tra vịng lặp chương trình xem GO / pin Làm xóa chờ A / D gián đoạn (trước phải kích hoạt)
Bước - Đọc ADC kết quả:
Đọc ADRESH ADRESL đăng ký Analog sánh
Ngoài Một chuyển đổi D /, có thêm module, mà gần nhúng mạch tích hợp, thuộc gọi điện tử tương tự Do thực tế khó tìm thấy thiết bị tự động phức tạp mà số cách không sử dụng mạch điện, hai so sánh chất lượng cao với thiết bị điện tử khác tích hợp vào vi điều khiển kết nối với chân
Làm mà so sánh hoạt động? Về bản, so sánh tương tự khuếch đại mà so sánh độ lớn điện áp hai đầu vào Nhìn vào tính vật lý nó, có hai đầu vào đầu Tùy thuộc vào đầu vào có điện áp cao (giá trị tương tự), logic không (0) logic (1) (kỹ thuật số giá trị) xuất đầu nó:
Hình 7-6 Analog sánh
Khi điện áp tương tự Vin-là cao so với điện áp tương tự Vin +, đầu so sánh mức thấp kỹ thuật số; Khi điện áp tương tự Vin + cao so với điện áp tương tự Vin-, đầu so sánh mức độ cao kỹ thuật số
Các vi điều khiển PIC16F887 có hai so sánh mà đầu vào kết nối với I / O pins RA0-RA3, đầu kết nối với chân RA4 RA5 Ngồi ám nguồn nội chip điện áp nó, thảo luận sau
Hai mạch kiểm soát bit lưu giữ sổ đăng ký sau đây: CM1CON0 kiểm soát so sánh C1;
CM2CON0 kiểm soát C2 so sánh, CM2CON1 kiểm soát C2 so sánh Nguồn điện áp tham khảo nội
Một hai điện áp tương tự cung cấp đầu vào so sánh ổn định khơng thay đổi thường Bởi tính gọi "điện áp tham chiếu" (VREF) Để tạo nó, bên ngồi đặc biệt bên nguồn điện sử dụng Sau chọn nguồn điện áp, VREF có nguồn gốc từ phương tiện mạng bậc thang gồm 16 điện trở có hình thức chia điện áp Các nguồn điện lựa chọn thông qua hai đầu chia thông qua bit VRSS VRCON đăng ký
Ngoài ra, phần điện áp cung cấp mạng bậc thang điện trở lựa chọn thông qua bit VR0-VR3 sử dụng làm tài liệu tham khảo điện áp Xem hình
(88)Các tham chiếu so sánh điện áp có dãy với 16 cấp điện áp phạm vi Phạm vi lựa chọn điều khiển bit VRR VRCON đăng ký Các lựa chọn điện áp tham chiếu đầu cho pin RA2/AN2
Mặc dù ý tưởng để có điện áp khác tham chiếu cho hoạt động mô-đun tương tự, đơn giản A / D chuyển đổi thu cách q chuyển đổi hữu ích số tình
Nó hoạt động kiểm soát VRCON đăng ký So sánh hoạt động ngắt
Các bit cờ CMIF PIR đăng ký đặt tất thay đổi nhà nước đầu có logic so sánh Những thay đổi gây ngắt bit thiết lập sau đây:
CMIE bit PIE đăng ký;
PEIE chút INTCON sổ đăng ký; Giẻ bit INTCON đăng ký
Nếu ngắt kích hoạt, thay đổi so sánh sản lượng vi điều khiển thức dậy từ chế độ ngủ cài đặt chế độ
CM1CON0 Đăng ký
Hình 7-8 CM1CON0 Regsiter
Bit đăng ký kiểm sốt so sánh C1 Nó chủ yếu ảnh hưởng đến cấu hình đầu vào Để hiểu tốt hơn, nhìn vào số 7-9 cho thấy phần điện tử trực tiếp bị ảnh hưởng bit đăng ký
Hình 7-9 sánh C1 Enable Bit
C1ON - sánh C1 bit Kích hoạt tính cho phép so sánh C1 - C1 sánh kích hoạt,
0 - sánh C1 bị vơ hiệu hóa
C1OUT - sánh C1 bit đầu so sánh bit C1 Nếu C1POL = (đầu so sánh ngược lại)
1 - điện áp tương tự C1Vin + thấp so với điện áp tương tự C1Vin; - điện áp tương tự C1Vin + cao so với điện áp tương tự C1Vin- Nếu C1POL = (so sánh đầu không đảo ngược)
1 - điện áp tương tự C1Vin + cao so với điện áp tương tự C1Vin; - điện áp tương tự C1Vin + thấp so với điện áp tương tự C1Vin- C1OE sánh C1 Enable bit
1 - sánh sản lượng C1OUT kết nối với pin C1OUT *; - sánh sản lượng nội
* Để cho phép bit C1OUT có mặt chân, hai điều kiện phải đáp ứng: C1ON = (so sánh phải trên) Tris tương ứng với bit = (pin phải cấu đầu ra)
C1POL - sánh C1 đầu Chọn bit phân cực cho phép C1 đưa so sánh nhà nước để đảo ngược - sánh C1 đầu ngược lại;
0 - sánh C1 đầu không đảo ngược C1R - Chọn sánh C1 tham khảo bit
1 - không đảo ngược đầu vào C1Vin + kết nối với C1Vref điện áp tham chiếu; - không đảo ngược đầu vào C1Vin + kết nối với pin + C1IN
(89)C1CH1 C1CH0 C1VIN-ĐẦU VÀO SO SÁNH
0 Nhập C1Vin-được kết nối với pin-C12IN0 Nhập C1Vin-được kết nối với pin-C12IN1 Nhập C1Vin-được kết nối với pin-C12IN2 1 Nhập C1Vin-được kết nối với pin-C12IN3 Bảng 7-4 sánh C1
CM2CON0 Đăng ký
Hình 10/07 CM2CON0 Regsiter
Bit đăng ký kiểm soát C2 so sánh Tương tự trường hợp trước, số 7-11 cho thấy đơn giản hóa sơ đồ mạch bị ảnh hưởng bit đăng ký
Hình 11/07 sánh C2 Sơ đồ
C2ON - Kích hoạt tính so sánh bit C2 C2 cho phép so sánh - C2 sánh kích hoạt,
0 - C2 sánh bị vơ hiệu hóa
C2OUT - bit đầu C2 sánh so sánh sản lượng C2 Nếu C2POL = (so sánh đầu đảo ngược)
1 - điện áp tương tự C1Vin + thấp so với điện áp tương tự C1Vin; - điện áp tương tự C1Vin + cao so với điện áp tương tự C1Vin- Nếu C2POL = (so sánh đầu không đảo ngược)
1 - điện áp tương tự C1Vin + cao so với điện áp tương tự C1Vin; - điện áp tương tự C1Vin + thấp so với điện áp tương tự C1Vin- C2OE - Kích hoạt tính sánh C2Output bit
1 - sánh sản lượng C2OUT kết nối với pin C2OUT *; - sánh sản lượng nội
* Để cho phép bit C2OUT có mặt chân, hai điều kiện phải đáp ứng: C2ON = (so sánh phải trên) Tris tương ứng với bit = (pin phải cấu đầu ra)
C2POL - sánh C2 Chọn bit Polarity C2 cho phép so sánh nhà nước đưa đảo ngược - C2 sánh đầu ngược lại;
0 - C2 sánh đầu không đảo ngược C2R - Chọn sánh C2 tham khảo bit
1 - không đảo ngược đầu vào C2Vin + kết nối với C2Vref điện áp tham chiếu; - không đảo ngược đầu vào C2Vin + kết nối với pin + C2IN
C2CH1, C2CH0 sánh C2 Channel Chọn bit C2CH1 C2CH0 C2VIN-ĐẦU VÀO SO SÁNH
0 Nhập C2Vin-được kết nối với pin-C12IN0 Nhập C2Vin-được kết nối với pin-C12IN1 Nhập C2Vin-được kết nối với pin-C12IN2 1 Nhập C2Vin-được kết nối với pin-C12IN3 Bảng 7-5 sánh C2 Channel Chọn Bit
CM2CON1 Đăng ký
(90)MC1OUT Mirror Bản bit C1OUT MC2OUT Mirror Bản bit C2OUT C1RSEL sánh C1 tham khảo Chọn bit
1 - Lựa chọn CVref điện áp sử dụng nguồn điện C1Vref tham chiếu; - 0.6V tham chiếu cố định điện áp sử dụng nguồn điện C1Vref tham khảo C2RSEL - Chọn sánh C2 tham khảo bit
1 - Lựa chọn CVref điện áp sử dụng nguồn điện C2Vref tham chiếu; - 0.6V tham chiếu cố định điện áp sử dụng nguồn điện C2Vref tham khảo T1GSS - Nguồn Chọn timer1 Gate bit
1 - Timer T1gate nguồn T1G;
0 - Timer T1gate nguồn so sánh SYNCC2OUT C2SYNC - sánh C2 đồng hóa bit
1 - sánh sản lượng C2 đồng để giảm cạnh đồng hồ TMR1 Timer - sánh đầu tín hiệu khơng đồng
VRCON Đăng ký
Hình 13/07 VRCON Đăng ký
VREN C1 sánh điện áp tham khảo Bật bit
1 - Điện áp nguồn tham khảo CVref bật lên, - Điện áp nguồn tham khảo CVref tắt
VROE C2 sánh điện áp tham khảo Bật bit
1 - Điện áp CVref tham chiếu kết nối với pin; - Điện áp CVref tham chiếu bị ngắt kết nối từ chân VRR - CVref Phạm vi lựa chọn bit
1 - Điện áp nguồn tham khảo thiết lập phạm vi thấp; - Điện áp nguồn tham khảo thiết lập phạm vi cao VRSS - Phạm vi lựa chọn sánh VREF bit
1 - nguồn điện áp tham chiếu khoảng VREF + để VREF;
0 - nguồn điện áp tham chiếu phạm vi VDD - VSS (Nguồn cung cấp điện áp) VR3 - VR0 CVref giá trị lựa chọn
Nếu VRR = (ít nhiều)
Điện áp tham chiếu tính cơng thức: CVref = ([VR3: VR0] / 24) VDD Nếu VRR = (cao tầm)
Điện áp tham chiếu tính cơng thức: CVref = VDD / + ([VR3: VR0] / 32) VDD Trong ngắn hạn:
Để sử dụng cách xây dựng so sánh, cần thiết để làm sau: Bước - Cấu hình module:
Để chọn chế độ thích hợp, bit CM1CON0 đăng ký CM2CON0 nên cấu hình Gián đoạn nên vơ hiệu hoá thay đổi chế độ
(91)Cấu hình cần thiết VREF sử dụng bit VR3 - VR0; Đặt VROE bit, cần thiết;
Kích hoạt tính mã nguồn VREF điện áp cách thiết lập bit VREN Công thức dùng để tính tốn điện áp tham khảo:
VRR = (ít nhiều)
CVref = ([VR3: VR0] / 24) VLADDER VRR = (cao tầm)
CVref = (VLADDER / 4) + ([VR3: VR0] VLADDER/32) Vladder = VDD ([VREF +] - [VREF-]) VREF + Bước - Bắt đầu hoạt động:
Kích hoạt tính gián đoạn cách thiết lập bit CMIE (PIE đăng ký), PEIE Giẽ (cả hai vào sổ đăng ký INTCON); Tìm hiểu bit C1OUT C2OUT CMCON đăng ký;
Đọc cờ bit CMIF PIR đăng ký Sau thiết lập, bit trừ vào phần mềm Chương 8: Các mạch MCU
Dao động
Như thấy hình đây, tín hiệu đồng hồ tạo hai xây dựng dao động
Hình 8-1 Hai xây dựng máy tạo dao động
Một dao động bên cài đặt vi điều khiển kết nối với chân OSC2 OSC1 Nó gọi "bên ngồi" dựa mạch điện bên ngồi để tín hiệu đồng hồ ổn định tần số, chẳng hạn dao động đứng, lít tinh thể, cộng hưởng gốm tụ điện mạch điện trở Các chế độ dao động chọn bit byte gửi lập trình, gọi cấu hình Word
(92)HFINTOSC nội dao động tần số cao mà hoạt động 8MHz Các vi điều khiển sử dụng nguồn đồng hồ tạo tần số sau chia prescaler;
LFINTOSC thấp tần số dao động nội mà hoạt động 31 kHz nguồn đồng hồ sử dụng cho chó-xem thời gian điện-up sử dụng nguồn đồng hồ cho hoạt động toàn vi điều khiển Đồng hồ hệ thống chọn từ nguồn bên bên đồng hồ qua bit (SCS) Hệ thống đồng hồ chọn OSCCON đăng ký
OSCCON Đăng ký
Việc đăng ký OSCCON điều khiển đồng hồ hệ thống tùy chọn lựa chọn tần số Nó bao gồm bước sau: tần số bit lựa chọn (IRCF2, IRCF1, IRCF0), tần số bit trạng thái (HTS, LTS), hệ thống điều khiển đồng hồ bit (OSTA, SCS)
Hình 8-2 Đăng ký OSCCON
IRCF2-0 - Chọn tần số dao động bit Nội kết hợp ba bit xác định tỷ lệ chia Các tần số đồng hồ dao động nội xác định theo cách
I R C F 2 I R C F 1 I R C F 0 T Ầ N S Ố O S C
1 1 MHz HFINTOSC
1 MHz HFINTOSC
1 MHz HFINTOSC
1 0 MHz HFINTOSC
0 1 500 kHz HFINTOSC
0 250 kHz HFINTOSC
0 125 kHz HFINTOSC
0 0 31 kHz LFINTOSC
Bảng 8-1 Tần số dao động nội Bits Chọn
OSTS - Oscillator Start-up Thời gian-hiện trạng bit có nguồn đồng hồ sử dụng bit đọc mà thơi
- đồng hồ bên dao động sử dụng;
- Một dao động đồng hồ sinh học sử dụng (HFINTOSC LFINTOSC)
HTS - HFINTOSC Tình trạng bit (8 MHz - 125 kHz) cho thấy có tần số cao dao động nội hoạt động cách ổn định
- HFINTOSC ổn định; - HFINTOSC không ổn định
LTS - LFINTOSC ổn định bit (31 kHz) cho thấy có tần số thấp dao động nội hoạt động cách ổn định.
(93) - LFINTOSC không ổn định
SCS - Hệ thống đồng hồ Chọn bit xác định dao động sử dụng nguồn đồng hồ. - dao động nội sử dụng cho đồng hồ hệ thống;
- dao động bên sử dụng cho đồng hồ hệ thống;
Các chế độ dao động thiết lập bit cấu hình Word mà ghi vào nhớ trình lập trình vi điều khiển
Chế độ đồng hồ bên ngoài
Để kích hoạt dao động bên ngồi để hoạt động tốc độ khác sử dụng thành phần khác để ổn định tần số, cấu hình để hoạt động vài chế độ lựa chọn chế độ thực sau chương trình viết biên soạn Trước hết, cần thiết để kích hoạt chương trình máy tính sử dụng để lập trình Trong trường hợp này, PICflash Nhấp vào Combox dao động chọn tùy chọn từ danh sách thả xuống Sau đó, bit thích hợp thiết lập theo cách trở thành phần vài byte có hình thức cấu hình Word
Trong thời gian lập trình, byte Config Word ghi vào nhớ ROM vi điều khiển lưu giữ sổ đăng ký đặc biệt mà khơng có sẵn cho người dùng Trên sở bit, vi điều khiển "biết" phải làm gì, khơng rõ ràng quy định chương trình (bằng văn bản)
(94)Các đồng hồ bên (EC) chế độ sử dụng nguồn đồng hồ hệ thống cấu hình từ dao động bên ngồi Các tần số nguồn đồng hồ không giới hạn (0 - 20MHz)
Hình 8-4 ngồi Oscillator Hình thức có ưu điểm sau:
Nguồn đồng hồ bên kết nối với đầu vào OSC1 OSC2 có sẵn cho mục đích chung I / O; Nó đồng hóa hoạt động vi điều khiển với phần lại hội đồng quản trị điện tử;
Trong chế độ này, vi điều khiển bắt đầu hoạt động sau điện bật lên Khơng có chậm trễ cần thiết để ổn định tần số;
Tạm dừng đầu vào đồng hồ bên ngồi có tác dụng ngăn chặn điện thoại để lại tất liệu nguyên vẹn.Sau khởi động lại đồng hồ bên ngoài, thiết bị hồ sơ hoạt động khơng có xảy
Hình 8-5 ngồi dao động chế độ EC Bên dao động LP, XT chế độ HS
(95)Các LP, XT HS chế độ hỗ trợ việc sử dụng dao động nội cho cấu hình nguồn đồng hồ Tần số nguồn xác định tinh thể thạch anh cộng hưởng gốm kết nối với chân OSC1 OSC2 Tùy thuộc vào tính thành phần sử dụng, chọn phương thức sau đây:
Chế độ LP (Low Power) sử dụng với tần số thạch anh tinh thể thấp Chế độ thiết kế để lái xe 32,768 kHz tinh thể thường nhúng đồng hồ thạch anh Nó dễ dàng nhận chúng kích thước nhỏ hình dạng hình trụ cụ thể Việc tiêu thụ ba chế độ:
chế độ XT sử dụng với tần số thạch anh tinh thể trung cấp lên tới MHz Việc tiêu thụ phương tiện ba chế độ,
Chế độ HS (High Speed) sử dụng với tần số thạch anh tinh thể cao MHz Việc tiêu thụ cao ba chế độ
Hinh8-7 đồ dao động bên thành phần bên bổ sung Gạch cộng hưởng XT chế độ HS
Hinh8-8 Gạch tiếng kêu vang
Gạch cộng hưởng tính chúng tương tự tinh thể thạch anh Đây lý họ kết nối cách.Không giống tinh thể thạch anh, họ rẻ dao động có chứa chất có đặc điểm chút tồi tệ Chúng sử dụng cho tần số đồng hồ khác nhau, từ 100 kHz 20 MHz
Bên dao động chế độ RC RCIO
Có nhiều lợi định việc sử dụng yếu tố để ổn định tần số, đơi họ có thực khơng cần
(96)một lãng phí đắt tiền Các giải pháp đơn giản rẻ tình sử dụng điện trở tụ điện cho hoạt động dao động Có hai chế độ:
chế độ RC Trong chế độ RC, mạch RC kết nối với pin OSC1 thể hình Các pin OSC2 đầu tần số dao động RC chia cho Tín hiệu sử dụng để đồng bộ, hiệu chuẩn yêu cầu ứng dụng khác
Hình 8-9 Chế độ RC
RCIO chế độ Tương tự trường hợp trước, mạch RC kết nối với pin OSC1 Thời gian này, OSC2 pin có sẵn sử dụng mục đích chung thêm I / O pin
Hình Chế độ 8-10 RCIO
Trong hai trường hợp, bạn nên sử dụng thành phần hình Các tần số dao động tính theo cơng thức f = / T đó: f = tần số [Hz]
T = R * C = thời gian cố định [s] R = điện trở kháng [Ω]
C = tụ điện công suất [F] Chế độ đồng hồ nội bộ
Các mạch dao động nội bao gồm hai dao động riêng biệt mà chọn nguồn đồng hồ hệ thống:
Các HFINTOSC dao động nhà máy kiểm định hoạt động MHz tần số người dùng điều chỉnh thông qua phần mềm cách sử dụng bit OSCTUNE đăng ký;
Các LFINTOSC dao động nhà máy hiệu chuẩn hoạt động 31kHz
(97)Nội dao động chế độ INTOSC
Trong chế độ này, pin OSC1 có sẵn mục đích chung I / O pin OSC2 kết đầu lựa chọn tần số dao động nội chia cho
Hình 11/08 INTOSC Mode
Nội dao động chế độ INTOSCIO
Trong chế độ này, hai chân có sẵn cho mục đích chung I / O Hình 12/08 INTOSCIO Mode
Cài đặt nội Oscillator
Các dao động nội bao gồm hai mạch riêng biệt
1 Các cao tần số dao động nội HFINTOSC kết nối với postscaler (tần số chia) Đây nhà máy hiệu chuẩn hoạt động 8MHz Sử dụng postscaler, dao động sản xuất nguồn đồng hồ bảy tần số lựa chọn thơng qua phần mềm sử dụng IRCF2, IRCF1 chân IRCF0 OSCCON đăng ký
(98)Hình 13/08 dao động nội cài đặt
2 Các dao động tần số thấp LFINTOSC uncalibrated hoạt động 31 kHz Nó kích hoạt cách chọn tần số (bit OSCCON đăng ký) thiết lập bit SCS đăng ký
Hai tốc độ đồng hồ Start-up Mode
Hai chế độ đồng hồ tốc độ khởi động sử dụng để cung cấp tiết kiệm lượng bổ sung vi điều khiển hoạt động chế độ ngủ Đây tất về?
Khi cấu hình để hoạt động LP, XT HS chế độ, dao động bên ngồi tắt q trình chuyển đổi vào giấc ngủ để giảm tiêu thụ điện tổng thể thiết bị
(99)Hinh8-14 Kích hoạt tính chuyển mạch Int-Ext Fail-Safe Clock Monitor
(100)Hình 15/08 Fail-Safe Clock Monitor
Màn hình đồng hồ khơng an tồn phát dao động không cách so sánh nguồn đồng hồ bên bên Trong trường hợp phải 2ms cho đồng hồ dao động bên tới, nguồn đồng hồ tự động chuyển sang Các dao động nội tiếp tục hoạt động kiểm sốt bit OSCCON đăng ký Khi bit OSFIE PIE2 đăng ký thiết lập, gián đoạn tạo Đồng hồ hệ thống tiếp tục lấy từ đồng hồ nội thành công thiết bị khởi động lại dao động bên chuyển trở lại hoạt động bên
Tương tự với trường hợp trước đó, module kích hoạt cách thay đổi cấu hình từ trước bắt đầu chương trình chip Thời gian này, thực cách chọn CLK Fail-Safe Màn hình tùy chọn
Hình 16/08 Kích hoạt Màn hình đồng hồ Fail-Safe OSCTUNE Đăng ký
Sửa đổi đăng ký OSCTUNE ảnh hưởng đến tần số HFINTOSC, tần số LFINTOSC Hơn nữa, khơng có dấu hiệu cho thấy hoạt động mà thay đổi xảy
Hình 17/08 OSCTUNE Đăng ký
TUN4 - TUN0 Tần số Tuning bit Bằng cách kết hợp năm bit, tần số dao động thay đổi 8MHz Bằng cách này, tần số thu cách phân chia chuyển đổi postscaler
T U N 4 T U N 3 T U N 2 T U N 1 T U N 0 T Ầ N S Ố
0 1 1 Tối đa
0 1
(101)0 0
0 0 0 Hiệu chuẩn
1 1 1
1 0
1 0
1 0 0 Tối thiểu
Bảng 8-2 Tần số Tuning Bits EEPROM
EEPROM phần nhớ chương trình (ROM), khơng nhớ liệu (RAM), nhớ đoạn đặc biệt Ngay địa điểm nhớ dễ dàng nhanh chóng truy cập sổ khác, họ có tầm quan trọng lớn liệu EEPROM vĩnh viễn lưu (sau có điện tắt) liệu EEPROM thay đổi lúc Vì tính đặc biệt, byte EEPROM có giá trị
Các vi điều khiển PIC16F887 có 256 địa điểm liệu EEPROM kiểm sốt bit ghi sau đây:
EECON1 (Kiểm soát đăng ký); EECON2 (Kiểm soát đăng ký);
EEDAT (lưu liệu sẵn sàng để viết đọc), EEADR (lưu địa EEPROM vị trí để truy cập)
Ngồi ra, EECON2 khơng đăng ký, khơng thể chất tồn Nó sử dụng trình tự viết chương trình
Các EEDATH EEADRH đăng ký thuộc nhóm đăng ký sử dụng EEPROM viết đọc Cả hai người số họ sử dụng cho chương trình (FLASH) nhớ viết đọc
Từ xem khu vực có nguy (bạn chắn không muốn vi điều khiển bạn vơ tình xóa chương trình bạn), chúng tơi khơng thảo luận nữa, khun bạn cẩn thận
EECON1 Đăng ký
Hinh8-18 EECON1 Đăng ký EEPGD - Chương trình / bit liệu EEPROM Chọn
- Chương trình truy cập nhớ, - truy cập nhớ EEPROM
WRERR - EEPROM Lỗi Flag bit
(102) - truy cập nhớ EEPROM Wren - EEPROM Viết Enable bit.
- Viết cho liệu EEPROM cho phép; - Viết thư cho liệu EEPROM tàn tật WR - Viết bit kiểm soát
- Kẻ viết thư cho liệu EEPROM; - Viết cho EEPROM liệu hoàn tất
RD - Đọc bit kiểm soát
- Kẻ đọc từ liệu EEPROM; - Đọc từ liệu EEPROM tàn tật
Đọc từ nhớ EEPROM
Để đọc nhớ EEPROM liệu, thực theo thủ tục đây: Bước 1: Viết địa (00h - FFh) cho EEADR đăng ký;
Bước 2: Chọn nhớ EEPROM chặn cách xóa bit EEPGD EECON1 đăng ký; Bước 3: Để biết vị trí, thiết lập bit RD đăng ký; và
Bước 4: Dữ liệu lưu trữ EEDAT đăng ký sẵn sàng để sử dụng. Ví dụ sau minh họa liệu EEPROM đọc:
BSF STATUS, RP1; BCF STATUS, RP0; truy cập ngân hàng MOVF ĐỊA CHỈ, W; Di chuyển địa cho đăng ký W MOVWF EEADR; Viết địa BSF STATUS, RP0; truy cập ngân hàng BCF EECON1, EEPGD; Chọn EEPROM BSF EECON1, RD; Đọc liệu BCF STATUS, RP0; truy cập ngân hàng MOVF EEDATA, W, liệu lưu trữ đăng ký W
Viết thư cho nhớ liệu EEPROM
Để ghi liệu vào nhớ EEPROM, trước tiên cần thiết để ghi địa cho đăng ký EEADR liệu đến EEDAT đăng ký sau Sau đó, bạn phải tuân theo trình tự đặc biệt để bắt đầu viết cho byte Ngắt phải vơ hiệu hóa trình
Dữ liệu EEPROM viết minh họa ví dụ đây:
BSF STATUS, RP1 STATUS BSF, RP0 BTFSC EECON, WR1; Chờ cho trước viết để hoàn thành GOTO $ -1; BCF STATUS, RP0; Ngân hàng MOVF ĐỊA CHỈ, W; Di chuyển địa để W MOVWF EEADR; Viết địa MOVF DATA, W ; Di chuyển liệu đến W MOVWF EEDATA; Ghi liệu BSF STATUS, RP0; Ngân hàng BCF EECON1, EEPGD; Chọn EEPROM BSF EECON1, Wren; Viết thư cho EEPROM kích hoạt BCF INCON, Giẻ; Tất ngắt bị vơ hiệu hố MOVLW 55h; u cầu trình tự bắt đầu MOVWF MOVLW EECON2 aah MOVWF EECON2; yêu cầu kết thúc chuỗi BSF EECON1, WR BSF INTCON, Giẻ; ngắt kích hoạt EECON1 BCF, Wren; Viết thư cho EEPROM tàn tật
Thiết lập lại! Black-out, Brown-out Tiếng ồn?
(103)Khi điện áp cung cấp điện đạt 1,2 - 1.7V, mạch điện gọi Power-upgiờ reset lại vi điều khiển vòng khoảng 72mS Ngay sau thời gian hết, tín hiệu đặt lại tạo đếm thời gian gọi bắt đầu dao động lên đếm thời gian giai đoạn 1024 dao động thạch anh.Khi chậm trễ (đánh dấu T thiết lập lại hình) chân MCLR đặt cao, vi điều khiển bắt đầu thực lệnh chương trình
Hình 19/08 dao động Start-Up Thời gian trễ
Bên cạnh điều khiển "thiết lập lại" xảy thời điểm quyền lực diễn ra, có thêm hai thiết lập lại gọi Black-out Brown ra- xảy trình hoạt động thời điểm điện tắt.
Black-out reset
Black-ra thiết lập lại diễn nguồn điện thông thường tắt Trong trường hợp đó, vi điều khiển khơng có thời gian để làm điều khơng thể đốn trước cách đơn giản điện áp giảm xuống nhanh bên giá trị tối thiểu nó.Trong từ khác, ánh sáng tắt, rèm rơi xuống hiển thị hơn!
(104)Khi điện áp cung cấp điện giảm xuống từ từ (ví dụ điển hình pin xả vi điều khiển kinh nghiệm đến thả nhanh điện áp tiến trình chậm), thiết bị điện tử nội ngừng hoạt động gọi Brown-ra thiết lập lại xảy Trong trường hợp đó, trước ngừng hoạt động vi điều khiển có mối nguy hiểm nghiêm trọng mà mạch hoạt động điện áp cao bắt đầu thực khơng thể đốn trước Nó gây thay đổi nghiêm trọng chương trình lưu nhớ flash on-chip
Hình 21/08 Brown-Out Reset Mất dần Of Power Tiếng ồn
Đây loại đặc biệt Brown-out reset xảy môi trường công nghiệp nguồn điện cung cấp điện áp "nhấp nháy" cho thời điểm giá trị giảm xuống mức tối thiểu Ngay ngắn, chẳng hạn tiếng ồn đường dây điện catastrophically thể ảnh hưởng đến hoạt động thiết bị
Hình Tiếng ồn 8-22 MCLR pin
(105)Để tránh lỗi xảy Brown-ra thiết lập lại, PIC 16F887 xây dựng "cơ chế bảo vệ Nó mạch đơn giản hiệu mà phản ứng lần cung cấp lượng điện áp giảm xuống 4V cho mức độ cho 100 micro giây Trong trường hợp đó, mạch tạo tín hiệu thiết lập lại kể từ thời điểm vi điều khiển tồn hoạt động thể vừa bật lên
Hình 8-23 Master Clear Pin Email: info@123doc.org Trang chủCơng cụ phát triển Trình biên dịch
Phụ kiện đồng Đặc biệt
Dễ MuaẤn phẩm Hỗ trợCác dự ánTải Sách: vi điều khiển PIC
TOCGiới thiệuCh 1Ch 2Ch 3Ch 4.Ch 5Ch 6Ch 7Ch 8Ch 9App AApp BApp C Chương 9: Tập lệnh
Nó được đề cập đến việc vi điều khiển khác với mạch tích hợp khác Hầu hết số họ sẵn sàng để cài đặt vào thiết bị mục tiêu giống họ có, trường hợp với vi điều khiển Để vi điều khiển hoạt động, cần hướng dẫn xác phải làm Nói cách khác, chương trình vi điều khiển cần thực phải viết nạp vào vi điều khiển Chương bao gồm lệnh vi điều khiển "hiểu" Các hướng dẫn đặt cho 16FXX bao gồm 35 hướng dẫn tổng số Như số nhỏ hướng dẫn cụ thể cho vi điều khiển RISC họ tối ưu hóa từ khía cạnh tốc độ hoạt động, đơn giản kiến trúc mã chặt Những bất lợi kiến trúc RISC lập trình dự kiến đối phó với hướng dẫn
HƯỚNG DẪN MÔ TẢ HOẠT ĐỘNG FLAG CLK * Hướng dẫn chuyển giao liệu
MOVLW k Di chuyển liên tục để W k -> w MOVWF f Di chuyển W để f W -> f
MOVF f, d Di chuyển f để d f -> d Z 1, CLRW Clear W -> W Z
CLRF f Rõ ràng f -> f Z
SWAPF f, d Trao đổi Nibbles e f (07:04), (3:00) -> f (03:00), (07:04) 1, Số học-logic Hướng dẫn
(106)ANDWF f, d Hợp lý với W với f W e -> d Z 1, ANDWF f, d Hợp lý với W với f W e -> d Z 1, IORLW k Hợp lý với W với số W k -> W Z IORWF f, d Hợp lý với W với f W e -> d Z 1,
XORWF f, d Hợp lý độc quyền với W với số W XOR k -> W Z 1, XORLW k Hợp lý độc quyền với W với f W XOR f -> d Z
INCF f, d F tăng lên f -> f Z 1,
DECF f, d Lượng giảm f f-1 -> f Z 1, RLF f, dXoay trái e qua CARRY bit C 1,
RRF f, d Xoay phải e qua CARRY bit C 1, COMF f, d Bổ sung f f -> d Z 1,
Bit định hướng dẫn
BCF f, b Clear bit b f -> f (b) 1, BSF f, b Clear bit b f -> f (b) 1, Chương trình kiểm sốt Hướng dẫn
BTFSC f, b Kiểm tra bit b f Bỏ qua hướng dẫn sau rõ ràng Bỏ qua f (b) = (2) BTFSS f, b Kiểm tra bit b f Bỏ qua hướng dẫn sau đặt Bỏ qua f (b) = 1 (2) DECFSZ f, d F lượng giảm Bỏ qua hướng dẫn sau rõ ràng f-1 -> d bỏ qua Z = 1 (2)
1, 2,
INCFSZ f, d F tăng Bỏ qua hướng dẫn sau đặt f -> d bỏ qua Z = (2) 1, 2, GOTO k Chọn địa k -> PC
CALL k Gọi chương trình PC -> TOS, k -> PC
RETURN Trở từ chương trình TOS -> PC
RETLW k Quay trở lại với liên tục W k -> W, TOS -> PC RETFIEQuay trở lại từ gián đoạn TOS -> PC, -> Giẽ
Các hướng dẫn
NOP Không hoạt động TOS -> PC, -> Giẽ
CLRWDT Rõ ràng quan giám sát hẹn -> WDT, -> ĐẾN, -> PD TO, PD SLEEP Đi vào chế độ ngủ -> WDT, -> ĐẾN, -> PD TO, PD
Bảng 9-1 16Fxx Instruction Set
* Khi I / O thay đổi đăng ký chức nó, giá trị sử dụng giá trị chân
* Nếu lệnh thực sổ đăng ký TMR d = 1, prescaler bị xóa
* Nếu máy tính bị sửa đổi kiểm tra kết logic (1), hướng dẫn yêu cầu hai chu kỳ Hướng dẫn chuyển giao liệu
Truyền liệu vi điều khiển diễn lao động đăng ký W (gọi ắc) đăng ký đại diện cho vị trí RAM nội chức đặc biệt đăng ký mục đích chung
Thứ ba hướng dẫn di chuyển chữ đến W đăng ký (MOVLW viết tắt di chuyển Literal để W), di chuyển liệu từ W đăng ký để RAM từ RAM để W đăng ký (hoặc đến vị trí RAM với thay đổi Z cờ chỉ) Hướng dẫn CLRF xóa e đăng ký, CLRW W xóa đăng ký SWAPF hướng dẫn giao dịch hoán đổi Nibbles e đăng ký (một nibble chứa bốn bit)
Số học-logic Hướng dẫn
Tương tự hầu hết vi điều khiển, PIC hỗ trợ hai số học hướng dẫn, cộng trừ Cờ C, DC, Z tự động thiết lập tùy thuộc vào kết việc thêm trừ Ngoại lệ cờ C Từ trừ thực với giá trị âm, C cờ ngược lại sau trừ Nó có nghĩa C flag thiết lập thực hoạt động xóa số lượng lớn trừ nhỏ Logic (1) PIC thực phép AND, OR, EX-OR, đảo ngược (COMF) xoay (RLF RRF)
Hướng dẫn mà xoay đăng ký thực xoay bit thơng qua C cờ chút trái (đối với bit 7) phải (đối với bit 0) Các bit chuyển từ đăng ký chuyển sang C cờ tự động chuyển đến chút phía đối diện đăng ký Bit định hướng dẫn
(107)Chương trình kiểm sốt Hướng dẫn
Các PIC16F887 thực lệnh GOTO, CALL, RETURN cách tất vi điều khiển khác làm Một khác biệt ngăn xếp độc lập từ RAM nội có cấp Các 'RETLW k' hướng dẫn trùng với dẫn RETURN, với ngoại lệ số xác định toán hạng hướng dẫn ghi vào W đăng ký trước trở từ chương trình hướng dẫn cho phép tra cứu bảng để thể dễ dàng tạo cách tạo bảng chương trình bao gồm RETLWk 'hướng dẫn', nơi mà chữ "k" thuộc bảng Bước viết vị trí chữ k (0, 1, 2, n) để W đăng ký gọi chương trình (bảng) cách sử dụng lệnh CALL Bảng bao gồm chữ sau đây: k0, k1, k2 kn
Chính movlw 2; viết số để gọi ắc Lookup; nhảy vào bảng tra cứu Lookup addwf PCL, f; thêm ắc chương trình; địa thuê (PCL) retlw k0; trở từ chương trình (ắc chứa k0) retlw k1; ; retlw k2 ; ; Retlw kn; trở từ chương trình (ắc chứa vi)
Dịng chương trình (hướng dẫn ADDWF PCL, f ) cần thêm "nghĩa chữ" k từ W đăng ký địa bắt đầu bảng lưu sổ đăng ký PCL Kết liệu thực tế địa nhớ chương trình Khi trở từ chương trình con, đăng ký W có giải nghĩa chữ k Trong trường hợp này, "k2" theo nghĩa đen
RETFIE (trở từ ngắt) đại diện cho trở từ thường xuyên bị gián đoạn Trái ngược với hướng dẫn RETURN, tự động thiết lập bit Giẽ (Global Interrupt Enable) Khi ngắt xảy bit tự động xóa Chỉ có truy cập chương trình đẩy vào ngăn xếp, điều có nghĩa khơng có tự động tiết kiệm 'tình trạng đăng ký tình trạng hai Vấn đề giải cách tiết kiệm tình trạng tất đăng ký quan trọng vào đầu thường xuyên bị gián đoạn Những giá trị lấy để đăng ký trước rời khỏi thói quen ngắt
nhảy có điều kiện thực hai hướng dẫn: BTFSC BTFSS Tùy thuộc vào trạng thái bit thử nghiệm đăng ký 'f', dẫn bị bỏ qua hay không
Hướng dẫn thi Thời gian
Tất hướng dẫn hướng dẫn chu trình đơn Ngoại lệ hướng dẫn chi nhánh có điều kiện (nếu điều kiện đáp ứng) hướng dẫn thực chương trình truy cập Trong hai trường hợp, hai chu kỳ cần thiết để thực lệnh mà chu trình thứ hai thực NOP (không hoạt động) A-chu kỳ lệnh đơn bao gồm bốn chu kỳ đồng hồ Nếu dao động 4MHz sử dụng, thời gian đáng kể để thực hướng dẫn 1μS Trong trường hợp nhảy, thời gian thực lệnh 2μS
Hướng dẫn Legend
f - Các vị trí nhớ (đăng ký); W - Làm việc đăng ký (ắc quy);
b - bit địa vòng 8-bit đăng ký; d - Điểm đến bit;
[Nhãn] - Bộ ký tự đầu địa cụ thể chương trình; TOS - Top chồng;
[] - Tùy chọn;
<> - Bit lĩnh vực đăng ký (địa số bit); C - Thực / Mượn bit STATUS đăng ký; DC - Digit Carry bit STATUS đăng ký; Z - Zero bit STATUS đăng ký
ADDLW - Thêm chữ W Cú pháp: [nhãn] ADDLW k
Mô tả: Nội dung sổ đăng ký W thêm vào chữ 8-bit k Kết lưu trữ W đăng ký Hoạt động: (W) + k -> W
Toán hạng: ≤ k ≤ 255
(108)Số chu kỳ: Ví dụ:
[Nhãn] ADDLW 0x15
Trước hướng dẫn thực hiện: W = 0x10 Sau hướng dẫn: W = 0x25 C = (kết khơng lớn 0xFF, có nghĩa Carry khơng xảy ra)
ADDWF - Thêm W f Cú pháp: [nhãn] ADDWF f, d
Mô tả: Thêm nội dung W e đăng ký
Nếu d = w d = kết lưu trữ W đăng ký Nếu d = f hay d = kết lưu giữ sổ đăng ký f Hoạt động: (W) + (e) -> d
Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: C, DC, Z Số chu kỳ:
Ví dụ 1:
[Nhãn] ADDWF REG, w
Trước hướng dẫn thực hiện: W = 0x17 REG = 0xC2 Sau hướng dẫn: W = 0xD9 REG = 0xC2 C = (thực không xảy ra, tức kết tối đa 8-bit dài)
Ví dụ 2:
[Nhãn] ADDWF INDF, f
Trước hướng dẫn thực hiện: W = 0x17 FSR = 0xC2 Đăng ký địa 0xC2 chứa 0x20 giá trị Sau hướng dẫn: W = 0x17 FSR = 0xC2, 0xC2 Đăng ký địa chứa giá trị 0x37
ANDLW - đen với W Cú pháp: [nhãn] ANDLW k
Mô tả: Nội dung sổ đăng ký W AND'ed với 8-bit chữ k Nó có nghĩa kết có (1) hai bit tương ứng toán hạng người thân (1) Kết lưu trữ W đăng ký
Hoạt động: (W) k -> W Toán hạng: ≤ k ≤ 255 Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] ANDLW 0x5F
Trước hướng dẫn thực hiện: W = 0xA3; 1010 0011 (0xA3) 0101 1111 (0x5F) - Sau hướng dẫn: W = 0x03; 0000 0011 (0x03) Z = (kết 0)
Ví dụ 2:
[Nhãn] ANDLW 0x55
Trước hướng dẫn thực hiện: W = 0xAA; 1010 1010 (0xAA); 0101 0101 (0x55) - Sau hướng dẫn: W = 0x00; 0000 0000 (0x00) Z = (kết 0)
ANDWF - W với f
(109)Mô tả: W đăng ký với đăng ký f
Nếu d = w d = 0, kết lưu trữ W đăng ký Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f Hoạt động: (W) (e) -> d
Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] ANDWF REG, f
Trước hướng dẫn thực hiện: W = 0x17, REG = 0xC2; 0001 0111 (0x17); 1100 0010 (0xC2) - Sau hướng dẫn: W = 0x17, REG = 0x02; 0000 0010 (0x02)
Ví dụ 2:
[Nhãn] ANDWF FSR, w
Trước hướng dẫn thực hiện: W = 0x17, FSR = 0xC2; 0001 0111 (0x17); 1100 0010 (0xC2) - Sau hướng dẫn: W = 0x02, FSR = 0xC2; 0000 0010 (0x02)
BCF - Bit Clear f
Cú pháp: [nhãn] BCF f, b
Mô tả: Bit b đăng ký e xóa Hoạt động: (0) -> f (b)
Tốn hạng: ≤ f ≤ 127, ≤ b ≤ Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ 1:
[Nhãn] BCF REG,
Trước hướng dẫn thực hiện: REG = 0xC7; 1100 0111 (0xC7) Sau hướng dẫn: REG = 0x47; 0100 0111 (0x47) Ví dụ 2:
[Nhãn] BCF INDF,
Trước hướng dẫn thực hiện: W = 0x17 FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị Sau hướng dẫn 0x2F: W = 0x17 FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị 0x27
BSF - Bit đặt f
Cú pháp: [nhãn] BSF f, b
Mô tả: Bit b đăng ký f thiết lập Hoạt động: -> f (b)
Toán hạng: ≤ f ≤ 127, ≤ b ≤ Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ 1:
(110)Trước hướng dẫn thực hiện: REG = 0x07; 0000 0111 (0x07) Sau hướng dẫn: REG = 0x87; 1000 0111 (0x87) Ví dụ 2:
[Nhãn] BSF INDF,
Trước hướng dẫn thực hiện: W = 0x17 FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị 0x20 Sau hướng dẫn: W = 0x17 FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị 0x28
BTFSC - Bit kiểm tra e, Bỏ qua Clear Cú pháp: [nhãn] BTFSC f, b
Mô tả: Nếu bit b đăng ký e 0, dẫn bỏ NOP thực thay vào đó, làm cho hai chu kỳ hướng dẫn
Hoạt động: Loại bỏ lệnh f (b) = Toán hạng: ≤ f ≤ 127, ≤ b ≤
Tình trạng bị ảnh hưởng: -Số chu kỳ: tùy theo bit b Ví dụ:
LAB_01 BTFSC REG, 1; Test bit REG LAB_02 ; Dòng Bỏ qua bit LAB_03 = ; Bước bit =
Trước thực lệnh: Chương trình truy cập địa LAB_01 - Sau hướng dẫn: bit REG xóa, truy cập điểm chương trình để giải LAB_03 LAB_02 - Nếu bit REG đặt chương trình truy cập, điểm đến địa
BTFSS - Bit kiểm tra e, Bỏ qua Set Cú pháp: [nhãn] BTFSS f, b
Mô tả: Nếu bit b đăng ký e 1, dẫn bỏ NOP thực thay vào đó, làm cho hai chu kỳ hướng dẫn
Hoạt động: Loại bỏ lệnh f (b) = Toán hạng: ≤ f ≤ 127, ≤ b ≤
Tình trạng bị ảnh hưởng: -Số chu kỳ: tùy theo bit b Ví dụ:
LAB_01 BTFSS REG, 3; Test bit / REG LAB_02 ; Dòng Bỏ qua bit LAB_03 = ; Bước bit = Trước thực lệnh: Chương trình truy cập địa LAB_01 Sau hướng dẫn: - bit REG xóa, truy cập điểm chương trình để giải LAB_03 LAB_02 - Nếu bit REG xóa chương trình truy cập, điểm đến địa CALL - Gọi chương trình
Cú pháp: [nhãn] CALL k
Mơ tả: Gọi chương trình Đầu tiên địa lệnh để thực đẩy lên ngăn xếp Đây PC địa Sau đó, địa chương trình ghi vào chương trình truy cập
Hoạt động: (PC) + -> (Top Of Stack - TOS) k -> PC (10: 0), (PCLATH (4: 3)) -> PC (12: 11) Toán hạng: ≤ k ≤ 2047
(111)-Tình trạng bị ảnh hưởng: Ví dụ:
LAB_01 CALL LAB_02; Gọi chương trình LAB_02 LAB_02
Trước hướng dẫn thực hiện: PC = địa LAB_01 TOS (trên ngăn xếp) = x Sau hướng dẫn: PC địa TOS = LAB_02 (trên ngăn xếp) = LAB_01
CLRF - Clear f
Cú pháp: [nhãn] CLRF f
Mơ tả: Nội dung đăng ký e xóa cờ Z đăng ký TÌNH TRẠNG thiết lập Hoạt động: -> f
Toán hạng: ≤ f ≤ 127 Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] CLRF TRISB
Trước hướng dẫn thực hiện: TRISB = 0xFF Sau hướng dẫn: TRISB = 0x00 Z = Ví dụ 2:
Trước hướng dẫn thực hiện: FSR = 0xC2 Đăng ký địa 0xC2 chứa 0x33 giá trị Sau hướng dẫn: FSR = 0xC2 Đăng ký địa 0xC2 chứa giá trị 0x00 Z =
CLRW - Clear W Cú pháp: [nhãn] CLRW
Mô tả: Đăng ký W xóa cờ Z đăng ký TÌNH TRẠNG thiết lập Hoạt động: -> W
Toán hạng:
-Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] CLRW
Trước hướng dẫn: W = 0x55 Sau hướng dẫn: W = 0x00 Z = CLRWDT - Clear Watchdog Timer
Cú pháp: [nhãn] CLRWDT
Mô tả: Đặt lại quan giám sát thời gian WDT prescaler Tình trạng bit TO PD thiết lập Hoạt động: -> WDT -> WDT prescaler -> ĐẾN -> PD
Toán hạng:
-Tình trạng bị ảnh hưởng: TO, PD Số chu kỳ:
(112)[Nhãn] CLRWDT
Trước hướng dẫn thực hiện: WDT truy cập = x WDT prescaler = 1:128 Sau hướng dẫn: WDT truy cập = 0x00 WDT prescaler = TO = PD = prescaler WDT = 1: 128
COMF - Bổ sung f
Cú pháp: [nhãn] COMF f, d
Mô tả: Nội dung đăng ký e bổ sung (logic số không (0) thay người thân (1) ngược lại) Nếu d = w d = kết lưu trữ W Nếu d = f hay d = kết lưu giữ sổ đăng ký f
Hoạt động: (f) -> d
Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] COMF REG, w
Trước hướng dẫn thực hiện: REG = 0x13; 0001 0011 (0x13); bổ sung - Sau hướng dẫn: REG = 0x13; 1110 1100 (0xEC) W = 0xEC
Ví dụ 2:
[Nhãn] COMF INDF, f
Trước hướng dẫn thực hiện: FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị 0xAA Sau hướng dẫn: FSR = 0xC2 Đăng ký địa (FSR) chứa giá trị 0x55
DECF - f lượng giảm Cú pháp: [nhãn] DECF f, d
Mô tả: lượng giảm đăng ký e Nếu d = w d = 0, kết lưu trữ W đăng ký Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: (f) - -> d
Tốn hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] DECF REG, f
Trước hướng dẫn thực hiện: REG = 0x01 Z = Sau hướng dẫn: REG = 0x00 Z = Ví dụ 2:
[Nhãn] DECF REG, w
Trước hướng dẫn thực hiện: REG = 0x13 W = x, Z = Sau hướng dẫn: REG = 0x13 W = 0x12, Z = DECFSZ - lượng giảm f, bỏ qua
Cú pháp: [nhãn] DECFSZ f, d
Mô tả: lượng giảm e đăng ký Nếu d = w d = 0, kết lưu trữ W đăng ký Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f Nếu kết 0, sau NOP thực thay vào đó, làm cho hai chu kỳ hướng dẫn
(113)Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng:
-Số chu kỳ: tùy thuộc vào kết Ví dụ 1:
MOVLW MOVWF CNT 0,10; 10 -> CNT Loop ; Hướng dẫn chặn
DECFSZ CNT, f ; lượng giảm REG GOTO Loop; Bỏ dòng = LAB_03 ; Bước = Trong ví dụ này, khối lệnh thực thi nhiều lần giá trị ban đầu CNT biến, mà ví dụ 10
GOTO - vô điều kiện Chi nhánh Cú pháp: [nhãn] GOTO k
Mô tả: vô điều kiện chuyển đến địa k
Hoạt động: (k) -> PC (10:00), (PCLATH (4:3)) - PC> (12:11) Toán hạng: ≤ k ≤ 2047
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
LAB_00 GOTO LAB_01 ; Bước tới LAB_01 LAB_01 ; Chương trình tiếp tục từ Trước hướng dẫn thực hiện: PC = LAB_00 địa Sau hướng dẫn: PC = LAB_01 địa INCF - Tăng f
Cú pháp: [nhãn] INCF f, d Mô tả: Tăng đăng ký e
Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f Hoạt động: (f) + -> d
Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] INCF REG, w
Trước hướng dẫn thực hiện: REG = 0x10 W = x, Z = Sau hướng dẫn: REG = 0x10 W = 0x11, Z = Ví dụ 2:
[Nhãn] INCF REG, f
Trước hướng dẫn thực hiện: REG = 0xFF Z = Sau hướng dẫn: REG = 0x00 Z = INCFSZ - Tăng f, bỏ qua
Cú pháp: [nhãn] INCFSZ f, d
(114)Hoạt động: (f) + -> d
Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng:
-Số chu kỳ: tùy thuộc vào kết Ví dụ:
LAB_01 INCFSZ REG, f ; Tăng REG LAB_02 ; Bỏ dòng kết LAB_03 ; Bước kết
Nội dung chương trình truy cập Trước thực lệnh, máy tính = LAB_01address
Nội dung REG sau hướng dẫn, REG = REG +1 Nếu REG = 0, điểm chương trình truy cập tới địa LAB_03 nhãn Nếu không, điểm chương trình truy cập đến địa lệnh tiếp theo, tức địa LAB_02
IORLW - hòa nhập đen với W Cú pháp: [nhãn] IORLW k
Mô tả: Nội dung W đăng ký OR'ed với 8-bit chữ k Kết lưu giữ sổ đăng ký W Hoạt động: (W) OR (k) -> W
Toán hạng: ≤ k ≤ 255 Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
[Nhãn] IORLW 0x35
Trước hướng dẫn thực hiện: W = 0x9A Sau hướng dẫn: W = 0xBF Z = IORWF - hòa nhập W với f
Cú pháp: [nhãn] IORWF f, d
Mô tả: Nội dung đăng ký e OR'ed với nội dung W đăng ký Nếu d = w d = 0, kết lưu trữ W đăng ký Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: (W) (f) -> d Toán hạng: ≤ f ≤ 127, d -> [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] IORWF REG, w
Trước hướng dẫn thực hiện: REG = 0x13, W = 0x91 Sau hướng dẫn: REG = 0x13, W = 0x93 Z = Ví dụ 2:
[Nhãn] IORWF REG, f
Trước hướng dẫn thực hiện: REG = 0x13, W = 0x91 Sau hướng dẫn: REG = 0x93, W = 0x91 Z = MOVF - Di chuyển f
(115)Mô tả: Nội dung đăng ký e chuyển đến địa điểm xác định toán hạng d Nếu d = w d = 0, nội dung chuyển đến đăng ký W Nếu d = f hay d = 1, nội dung đăng ký f Lựa chọn d = sử dụng để kiểm tra nội dung đăng ký e lệnh ảnh hưởng đến cờ Z đăng ký TÌNH TRẠNG
Hoạt động: (f) -> d
Toán hạng: ≤ f ≤ 127, d -> [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] MOVF FSR, w
Trước hướng dẫn thực hiện: FSR = 0xC2 W = 0x00 Sau hướng dẫn: W = 0xC2 Z = Ví dụ 2:
[Nhãn] MOVF INDF, f
Trước hướng dẫn thực hiện: W = 0x17 FSR = 0xC2, đăng ký địa 0xC2 chứa 0x00 giá trị Sau hướng dẫn: W = 0x17 FSR = 0xC2, đăng ký địa 0xC2 chứa giá trị 0x00, Z =
MOVLW - Di chuyển nghĩa chữ để W Cú pháp: [nhãn] MOVLW k
Mô tả: 8-bit chữ k chuyển đến đăng ký W Hoạt động: k -> (W)
Toán hạng: ≤ k ≤ 255 Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ 1:
[Nhãn] MOVLW 0x5A Sau hướng dẫn: W = 0x5A Ví dụ 2:
Const equ 0x40 [nhãn] MOVLW XD
Trước hướng dẫn thực hiện: W = 0x10 Sau hướng dẫn: W = 0x40 MOVWF - Di chuyển W để f
Cú pháp: [nhãn] MOVWF f
Mô tả: Nội dung W đăng ký chuyển đến đăng ký f Hoạt động: (W) -> f
Toán hạng: ≤ f ≤ 127 Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ 1:
[Nhãn] MOVWF OPTION_REG
(116)[Nhãn] MOVWF INDF
Trước hướng dẫn thực hiện: W = 0x17 FSR = 0xC2, đăng ký địa 0xC2 chứa 0x00 giá trị Sau hướng dẫn: W = 0x17 FSR = 0xC2, đăng ký địa 0xC2 chứa giá trị 0x17
NOP - Không hoạt động Cú pháp: [nhãn] NOP Mơ tả: Khơng có hoạt động Hoạt động:
Tốn hạng:
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
[Nhãn] NOP ; 1us chậm trễ (dao động 4MHz)
Trước hướng dẫn thực hiện: PC = x Sau hướng dẫn: PC = x + RETFIE - Trả lại từ ngắt
Cú pháp: [nhãn] RETFIE
Mô tả: Trở từ chương trình Giá trị popped từ ngăn xếp nạp vào chương trình truy cập Ngắt kích hoạt cách thiết lập Giẻ bit INTCON đăng ký
Hoạt động: TOS -> PC, -> Giẽ Tốn hạng:
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
[Nhãn] RETFIE
Trước hướng dẫn thực hiện: PC = x Giẽ (bit cho phép ngắt đăng ký SATUS) = Sau hướng dẫn: PC = TOS (trên ngăn xếp) Giẻ =
RETLW - Quay trở lại với chữ W Cú pháp: [nhãn] RETLW k
Mô tả: 8-bit chữ k nạp vào đăng ký W Các giá trị từ stack nạp vào chương trình truy cập Hoạt động: (k) -> W; đầu stack (TOP) -> PC
Toán hạng:
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
[Nhãn] RETLW 0x43
Trước hướng dẫn thực hiện: W = x PC = x TOS (trên ngăn xếp) = x Sau hướng dẫn: W = 0x43 PC = TOS (trên ngăn xếp) TOS (trên ngăn xếp) = TOS -
(117)Cú pháp: [nhãn] RETURN
Mô tả: Trở từ chương trình Các giá trị từ stack nạp vào chương trình truy cập Đây chu trình giảng dạy hai
Hoạt động: TOS -> truy cập máy tính chương trình Tốn hạng:
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ:
[Nhãn] RETURN
= TOS (trên ngăn xếp) TOS (trên ngăn xếp) = TOS - PC Trước hướng dẫn thực hiện: PC = x TOS (trên ngăn xếp) = x Sau hướng dẫn:
RLF - Xoay lại e qua Carry Cú pháp: [nhãn] RLF f, d
Mô tả: Nội dung đăng ký e xoay chút để trái qua cờ Carry Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: (f (n)) -> d (n +1), f (7) -> C, C -> d (0); Toán hạng: ≤ f ≤ 127, d [0,1]
Tình trạng bị ảnh hưởng: C Số chu kỳ:
Hình 9-1 e Đăng ký Ví dụ 1:
[Nhãn] RLF REG, w
Trước hướng dẫn thực hiện: REG = 1110 0110 C = Sau hướng dẫn: REG = 1110 0110 1100 1100 W = C = Ví dụ 2:
[Nhãn] RLF REG, f
Trước hướng dẫn thực hiện: REG = 1110 0110 C = Sau hướng dẫn: REG = 1100 1100 C = RRF - Xoay phải e qua Carry
Cú pháp: [nhãn] RRF f, d
Mơ tả: Nội dung đăng ký e xoay chút quyền thông qua cờ Carry Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: (f (n)) -> d (n-1), f (0) -> C, C -> d (7); Toán hạng: ≤ f ≤ 127, d -> [0,1]
Tình trạng bị ảnh hưởng: C Số chu kỳ:
(118)Ví dụ 1:
[Nhãn] RRF REG, w
Trước hướng dẫn thực hiện: REG = 1110 0110 W = x C = Sau hướng dẫn: REG = 1110 0110 0111 0011 W = C = Ví dụ 2:
[Nhãn] RRF REG, f
Trước hướng dẫn thực hiện: REG = 1110 0110, C = Sau hướng dẫn: REG = 0111 0011, C = SLEEP - Nhập chế độ Sleep
Cú pháp: [nhãn] SLEEP
Mô tả: Bộ xử lý vào chế độ ngủ dao động dừng lại PD bit (Power Down) đăng ký TÌNH TRẠNG xóa TO bit đăng ký thiết lập Các WDT prescaler bị xóa
Hoạt động: -> WDT, -> WDT prescaler, -> ĐẾN, -> PD Tốn hạng:
-Tình trạng bị ảnh hưởng: TO, PD Số chu kỳ:
Ví dụ:
[Nhãn] SLEEP
Trước hướng dẫn thực hiện: WDT truy cập = x WDT prescaler = x Sau hướng dẫn: WDT truy cập = prescaler WDT 0x00 = TO = PD =
SUBLW - Trừ W từ chữ Cú pháp: [nhãn] SUBLW k
Mô tả: Nội dung đăng ký W trừ vào chữ k Kết lưu giữ sổ đăng ký W Hoạt động: k - (W) -> W
Toán hạng: ≤ k ≤ 255
Tình trạng bị ảnh hưởng: C, DC, Z Số chu kỳ:
Ví dụ:
[Nhãn] SUBLW 0x03
Trước hướng dẫn thực hiện: W = 0x01, C = x, Z = x Sau hướng dẫn: W = 0x02, C = 1, Z = kết dương tính Trước thực lệnh: W = 0x03, C = x, Z = x Sau hướng dẫn: W = 0x00, C = 1, Z = kết Trước thực lệnh: W = 0x04, C = x, Z = x Sau hướng dẫn: W = 0xFF, C = 0, Z = kết âm tính
SUBWF - Trừ W từ f
Cú pháp: [nhãn] SUBWF f, d
Mô tả: Nội dung đăng ký W trừ đăng ký f
Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f Hoạt động: (f) - (W) -> d
(119)Số chu kỳ: Ví dụ:
[Nhãn] SUBWF REG, f
Trước hướng dẫn thực hiện: REG = 3, W = 2, C = x, Z = x Sau hướng dẫn: REG = 1, W = 2, C = 1, Z kết = tích cực Trước thực lệnh: REG = 2, W = 2, C = x, Z = x Sau hướng dẫn: REG = 0, W = 2, C = 1, Z = kết Trước thực lệnh: REG = 1, W = 2, C = x, Z = x Sau hướng dẫn: REG = 0xFF, W = 2, C = 0, Z = kết âm tính
SWAPF - Trao đổi Nibbles e Cú pháp: [nhãn] SWAPF f, d
Mô tả: Các thấp Nibbles đăng ký f đổi chỗ Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: f (00:03) -> d (04:07), f (04:07) -> d (00:03); Toán hạng: ≤ f ≤ 127, d [0,1]
Tình trạng bị ảnh hưởng: -Số chu kỳ:
Ví dụ 1:
[Nhãn] SWAPF REG, w
Trước hướng dẫn thực hiện: REG = 0xF3 Sau hướng dẫn: REG = 0xF3 W = 0x3F Ví dụ 2:
[Nhãn] SWAPF REG, f
Trước hướng dẫn thực hiện: REG = 0xF3 Sau hướng dẫn: REG = 0x3F XORLW - độc quyền đen với W
Cú pháp: [nhãn] XORLW k
Mô tả: Nội dung đăng ký W XOR'ed với 8-bit chữ k Kết lưu giữ sổ đăng ký W Hoạt động: (WXOR ) k -> W
Toán hạng: ≤ k ≤ 255 Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] XORLW 0xAF
Trước hướng dẫn thực hiện: W = 0xB5; 1011 0101 (0xB5); 1010 1111 (0xAF) - Sau hướng dẫn: W = 0x1A; 0001 1010 (0x1A) Z =
Ví dụ 2:
Const equ 0x37 [nhãn] XORLW XD
Trước hướng dẫn thực hiện: W = 0xAF; 1010 1111 (0xAF) XD = 0x37; 0011 0111 (0x37) - - Sau hướng dẫn: W = 0x98; 1001 1000 (0x98) Z =
(120)Mô tả: Nội dung đăng ký e XOR'ed với nội dung đăng ký W Một chút kết thiết lập bit tương ứng toán hạng khác Nếu d = w d = 0, kết lưu giữ sổ đăng ký W Nếu d = f hay d = 1, kết lưu giữ sổ đăng ký f
Hoạt động: (WXOR ) k -> d Toán hạng: ≤ f ≤ 127, d [0,1] Tình trạng bị ảnh hưởng: Z Số chu kỳ:
Ví dụ 1:
[Nhãn] XORWF REG, f
Trước hướng dẫn thực hiện: REG = 0xAF, W = 0xB5; 1010 1111 (0xAF); 1011 0101 (0xB5) - Sau hướng dẫn: REG = 0x1A, W = 0xB5; 0001 1010 (0x1A)
Ví dụ 2:
[Nhãn] XORWF REG, w
Trước hướng dẫn thực hiện: REG = 0xAF, W = 0xB5; 1010 1111 (0xAF); 1011 0101 (0xB5) - Sau hướng dẫn: REG = 0xAF, W = 0x1A; 0001 1010 (0x1A)
Ngoài hướng dẫn đây, Microchip giới thiệu số hướng dẫn khác Để xác hơn, họ không hướng dẫn vậy, macro hỗ trợ MPLAB Microchip gọi họ "Hướng dẫn đặc biệt" tất chúng thực tế thu cách kết hợp hướng dẫn có
HƯỚNG DẪN MƠ TẢ HƯỚNG DẪN TƯƠNG ĐƯƠNG TÌNH TRẠNG BỊ ẢNH HƯỞNG ADDCF f, d Thêm với thực BTFSC
INCF TÌNH TRẠNG, C
ADDDCF f, d Thêm với chữ số Carry BTFSC INCF TÌNH TRẠNG, DC
B k Chi nhánh GOTO
BC k Chi nhánh Carry BTFSC GOTO TÌNH TRẠNG, C
BDC k Ngành chữ số Carry BTFSC GOTO TÌNH TRẠNG, DC
BNC k Khơng có chi nhánh Carry BTFSS GOTO TÌNH TRẠNG, C
BNDC k Chi nhánh số chữ số Carry BTFSS GOTO TÌNH TRẠNG, DC
BNZ k Khơng có chi nhánh Zero BTFSS GOTO STATUS, Z
BZ k Ngành Zero BTFSC GOTO STATUS, Z
CLRC Clear Carry BCF TÌNH TRẠNG, C
CLRDC Thực chữ số rõ ràng BCF TÌNH TRẠNG, DC CLRZ Clear Zero BCF STATUS, Z
MOVFW f Di chuyển tập tin để W MOVF SETC f Đặt Carry BSF TÌNH TRẠNG, C
SETDC Đặt chữ số Carry BSF TÌNH TRẠNG, DC
SETZ Đặt Zero BSF STATUS, Z
SKPC Bỏ vào Carry BTFSS TÌNH TRẠNG, C
SKPDC Bỏ qua chữ số Carry BTFSS TÌNH TRẠNG, DC SKPNC Bỏ qua Không Carry BTFSC STATUS, Z
SKPNDC Bỏ qua số chữ số Carry BTFSC TÌNH TRẠNG, DC SKPNZ Bỏ qua Không Zero BTFSC STATUS, Z
SKPZ Bỏ qua Zero BTFSS STATUS, Z SUBCF f, d Trừ Carry từ Tập BTFSC DECF TÌNH TRẠNG, C
SUBDCF f, d Trừ chữ số Carry từ Tập BTFSC DECF TÌNH TRẠNG, DC
(121)Vi điều khiển người giao tiếp thông qua phương tiện ngơn ngữ lập trình gọi hội ngơn ngữ Từ Assembler khơng có ý nghĩa sâu xa, tương ứng với tên ngôn ngữ khác tiếng Anh tiếng Pháp Chính xác hơn, hợp ngữ giải pháp qua Để vi điều khiển hiểu chương trình viết ngơn ngữ lắp ráp, phải biên dịch sang ngơn ngữ số không người thân Hội ngôn ngữ
Assembler khơng có ý nghĩa Người đề cập đến quy tắc dùng để viết chương trình cho vi điều khiển, sau dùng để chương trình máy tính cá nhân dùng để dịch phát biểu ngữ sang ngôn ngữ số không người thân Một chương trình biên dịch gọi Máy luật Một "Chương trình" tập tin liệu lưu trữ đĩa cứng máy tính (hoặc nhớ vi điều khiển, nạp) văn theo quy tắc hội đồng lập trình số ngơn ngữ khác Ngơn ngữ hội điều dễ hiểu người bao gồm từ có ý nghĩa biểu tượng bảng chữ Hãy để chúng tơi, ví dụ lệnh "RETURN" được, tên ngụ ý, sử dụng để trả vi điều khiển từ chương trình Trong mã máy, lệnh biểu diễn mảng 14-bit số không người dễ hiểu vi điều khiển Tất lắp ráp lệnh tương tự ngôn ngữ dịch thành mảng tương ứng số không người thân Một tập tin liệu sử dụng để lưu trữ chương trình biên dịch gọi "tập tin điều hành", nghĩa "HEX tập tin liệu" Tên đến từ trình bày thập lục tập tin liệu có hậu tố "thập lục" tốt, cho "probe.hex" ví dụ Sau tạo ra, file liệu nạp vào vi điều khiển cách sử dụng lập trình viên chương trình hội ngơn ngữ viết chương trình để xử lý văn (biên tập) tạo ASCII tập tin liệu đĩa cứng môi trường làm việc chuyên ngành MPLAB mô tả sau
YẾU TỐ CỦA HỘI NGÔN NGỮ
Một chương trình viết hợp ngữ bao gồm số yếu tố khác giải thích biên dịch chương trình thành file liệu thực thi Việc sử dụng yếu tố đòi hỏi phải có quy tắc nghiêm ngặt cần thiết đặc biệt ý đến họ chương trình văn để tránh lỗi
HỘI NGÔN NGỮ cú pháp
Như đề cập, cần thiết để thực số quy tắc cụ thể để kích hoạt q trình biên dịch thành mã HEX điều hành chạy mà khơng có lỗi Bắt buộc quy tắc giải thích cách trình tự biểu thức đặt để tạo thành báo cáo tạo nên chương trình hợp ngữ gọi cú pháp Chỉ có vài người số họ:
Mỗi dịng chương trình bao gồm tối đa 255 ký tự;
Mỗi dịng chương trình để biên dịch phải bắt đầu một, biểu tượng nhãn hiệu, giúp trí nhớ, Chỉ thị;
Văn sau dấu "," chương trình đại diện cho dịng bình luận bị bỏ qua nhà lắp ráp (không biên dịch);
Tất yếu tố dòng chương trình (nhãn hiệu, hướng dẫn, vv) phải phân cách nhân vật khơng gian Vì lợi ích độ sắc nét tốt hơn, TAB push-nút thường sử dụng thay nó, để dễ dàng để phân định cột với nhãn, vv chương trình
NHÃN
nhãn Một đại diện cho phiên nguyên văn số địa ROM nhớ RAM Mỗi nhãn phải bắt đầu cột với chữ bảng chữ "_" bao gồm tối đa 32 ký tự Bên cạnh đó, dễ dàng sử dụng:
Nó đủ để nhập vào tên nhãn hiệu thay địa 16-bit hướng dẫn mà gọi số chương trình nhảy Các nhãn hiệu tên cần phải viết vào đầu dịng chương trình chương trình bắt đầu nhảy nên thực thi Như quy luật chung, nhãn có tên dễ nhận biết
Trong chương trình biên soạn, nhà lắp ráp tự động thay nhãn địa tương ứng GÓP Ý
(122)Các hướng dẫn xác định cho gia đình vi điều khiển nhà sản xuất Vì vậy, đến người sử dụng để thực theo quy tắc việc sử dụng họ Cách viết hướng dẫn cú pháp lệnh gọi Các hướng dẫn "movlp"và"gotto", ví dụ sau đây, công nhận vi điều khiển PIC16F887 lỗi chúng khơng xác văn
Toán hạng
toán hạng An giá trị (một đối số) mà thị, đặt tên cách ghi nhớ, hoạt động Các tốn hạng đăng ký, biến, số chữ, nhãn địa nhớ
CHỈ THỊ
Không giống hướng dẫn viết vào nhớ chương trình on-chip sau biên dịch, thị, lệnh ngôn ngữ tự lắp ráp không trực tiếp ảnh hưởng đến hoạt động vi điều khiển Một số người số họ phải sử dụng chương trình người khác sử dụng để hỗ trợ tăng cường hoạt động Chỉ thị ghi vào cột dành cho hướng dẫn Các quy tắc phải quan sát cho phép chương trình thị dịng
Phần bao gồm vài số thường sử dụng thị Nó chắn nhiều không gian thời gian để mô tả tất thị công nhận chương trình MPLAB Dù sao, danh sách hồn chỉnh có chứa tất thị mà nhà lắp ráp MPLAB hiểu quy định Trợ giúp
Chỉ thị Processor
Chỉ thị phải viết vào đầu chương trình Nó định nghĩa loại vi điều khiển mà chương trình viết cho Ví dụ:
Bộ vi xử lý 16f887 Equ thị
Chỉ thị sử dụng để thay giá trị số biểu tượng Bằng cách này, số vị trí cụ thể nhớ phân cơng tên Ví dụ:
TỐI ĐA equ H'25 '
Điều có nghĩa vị trí nhớ địa 25 (hex.) định tên "tối đa" Tất xuất nhãn "tối đa" chương trình giải thích hợp ngữ địa 25 (tối đa = H'25 ') Biểu tượng định nghĩa theo cách lần chương trình Điều thị chủ yếu sử dụng vào đầu chương trình ORG thị
Chỉ thị quy định vị trí nhớ chương trình mà chương trình sau để đặt Ví dụ: ORG 0x100 START ORG 0x1000 BẢNG
Chương trình bắt đầu vị trí 0x100 Các bảng chứa liệu lưu trữ vị trí 1024 (1000H) END thị
Mỗi chương trình phải kết thúc cách sử dụng thị Sau chương trình gặp gỡ thị, lắp ráp dừng lại biên soạn Ví dụ:
END; Kết thúc chương trình \ $ Bao gồm thị
Tên Chỉ thị cho biết đầy đủ mục đích Trong q trình biên soạn, cho phép lắp ráp để sử dụng liệu chứa tập tin khác đĩa cứng máy tính Ví dụ:
# Bao gồm <p16f887.inc> CBLOCK ENDC thị
(123)định địa cách sử dụng thị CBLOCK danh sách tất người khác sau Trình biên dịch tự động gán biến địa tương ứng theo thứ tự mà chúng liệt kê Cuối cùng, thị cho thấy ENDC cuối danh sách biến
CBLOCK 0x20 START; địa 0x20 RELE; 0x21 địa STOP, địa 0x22 trái; địa 0x23 quyền; 0x24 ENDC địa IF, ELSE endif thị
Các thị sử dụng để tạo gọi khối điều kiện chương trình Mỗi khối bắt đầu với thị IF kết thúc với endif thị ELSE Một tuyên bố biểu tượng (trong ngoặc đơn) theo thị IF đại diện cho điều kiện mà định phần chương trình để biên dịch:
Nếu tuyên bố xác giá trị biểu tượng chương trình biên dịch tất hướng dẫn văn trước ELSE thị endif;
Nếu tun bố khơng giá trị ký hiệu số không, hướng dẫn văn sau thị ELSE endif biên soạn
Ví dụ 1:
IF (VERSION> 3) CALL Table_2 endif CALL
Nếu chương trình phát hành sau phiên (báo cáo đúng), sau chương trình "Bảng 2" "mở rộng" thực thi Nếu câu dấu ngoặc đơn sai (VERSION <3), hai hướng dẫn cách gọi chương trình bỏ qua khơng biên dịch
Ví dụ 2:
Nếu giá trị biểu tượng "mẫu" hai hướng sau sau thị IF biên dịch hướng dẫn sau thị endif (tất hướng dẫn ELSE endif bỏ qua) Nếu không, Model = sau hướng dẫn IF ELSE bỏ qua, hướng dẫn sau ELSE thị biên dịch
IF (Model) MOVFW MOVWF TỐI ĐA ĐỆM ELSE MOVFW BUFFER1 endif TỐI ĐA MOVWF BANKSEL thị
Để truy cập SFR đăng ký cần thiết để lựa chọn ngân hàng thích hợp nhớ RAM cách sử dụng bit RP0 RP1 đăng ký TÌNH TRẠNG Chỉ thị sử dụng trường hợp Đơn giản, "inc" tập tin liệu chứa danh sách tất đăng ký với địa họ, lắp ráp biết mà ngân hàng tương ứng với đăng ký Sau gặp thị này, lắp ráp chọn RP0 bit RP1 cho đăng ký quy định riêng Ví dụ:
BANKSEL CLRF TRISB TRISB BANKSEL PORTB MOVLW 'PORTB MOVWF B'01001101 VÍ DỤ CÁCH VIẾT Một CHƯƠNG TRÌNH
Ví dụ sau minh họa chương trình đơn giản viết ngơn ngữ lắp ráp
Ngoài quy tắc thơng thường ngơn ngữ lắp ráp, có vài quy tắc bất thành văn mà nên quan sát chương trình văn Một số viết vài từ lúc bắt đầu chương trình chương trình tên là, sử dụng cho, phiên bản, ngày phát hành, loại vi điều khiển viết cho tên người lập trình Kể từ thơng tin khơng quan trọng cho lắp ráp, viết bình luận mà ln ln bắt đầu dấu chấm phẩy ";" viết dòng sau lệnh
Sau viết bình luận nói chung, thời gian để lựa chọn vi điều khiển cách sử dụng Processor thị Chỉ thị theo sau số khác sử dụng để bao gồm tất định nghĩa đăng ký nội vi điều khiển PIC16F887 chương trình Những định nghĩa gì, khả đăng ký địa cổng B khác PORTB thay 06h, chương trình rõ ràng dễ đọc
Để vi điều khiển hoạt động cách, vài thông số loại dao động, nhà nước chó, xem thiết lập lại mạch nội phải xác định Nó thực cách sử dụng thị sau đây:
_CONFIG _CP_OFF & _WDT_OFF & PWRTE_ON & XT_OSC
(124)cập vào TRISB đăng ký để cấu hình cổng B đầu (banksel TRISB) Các chương trình kết thúc cách chọn ngân hàng nhớ cài đặt tất chân cổng B để logic (1) (0xFF movlw, movwf PORTB)
Nó cần thiết để tạo vịng để giữ cho chương trình từ "lấy mất" trường hợp lỗi xảy Với mục đích này, có vịng lặp vô tận thực tất thời gian vi điều khiển bật
"kết thúc"là bắt buộc vào cuối chương trình để thơng báo cho nhà lắp ráp khơng có nhiều lệnh biên soạn THƠNG TIN TỪ CHƯƠNG TRÌNH Lập
Kết việc biên soạn chương trình viết ngôn ngữ lắp ráp tập tin liệu Các liệu quan trọng thường sử dụng tập tin được:
Điều hành tập tin liệu (Program_Name.HEX); Lỗi liệu tập tin (Program_Name.ERR);
Danh sách tập tin liệu (Program_Name.LST)
Các file có chương trình biên dịch mà nạp vào vi điều khiển nội dung cho khơng có thơng tin quan trọng để lập trình để khơng thảo luận Các tập tin thứ hai chứa sai sót trình viết phát trình biên dịch q trình biên soạn Lỗi phát danh sách tập tin liệu, mà phải nhiều thời gian hơn, đó, tập tin lỗi liệu phù hợp cho chương trình dài
Các tập tin thứ ba hữu ích cho lập trình viên Nó chứa nhiều thông tin lệnh biến vị trí nhớ on-chip signalization lỗi Có bảng biểu tượng cuối danh sách tập tin liệu chứa tất biểu tượng sử dụng chương trình Các yếu tố khác hữu ích tập tin liệu danh sách nhớ sử dụng đồ thống kê lỗi cung cấp cuối danh sách
Macro chương trình
Cùng trình tự hướng dẫn tính tốn thường sử dụng nhiều lần chương trình Ngơn ngữ hội khó khăn lập trình cần thiết để chăm sóc chi tiết nhỏ viết chương trình, có sai lệnh tên nhãn gây chương trình khơng hoạt động khơng hoạt động Do đó, mệt mỏi lỗi dễ bị sử dụng chuỗi hướng dẫn tuyên bố chương trình mà cơng trình cho chắn Để thực ý tưởng này, macro chương trình sử dụng
Macro
vĩ mơ A có định nghĩa biểu tượng lập trình mà đứng cho chuỗi dịng văn Nó định nghĩa cách sử dụng thị vĩ mô mà tên vĩ mô đối số cần thiết Vĩ mơ phải xác định trước sử dụng Khi vĩ mô xác định, tên sử dụng gặp gỡ program.When lắp ráp tên vĩ mô, thay trình tự phù hợp hướng dẫn xử lý chúng thể chúng xuất chương trình Nhiều vĩ mơ khác hướng dẫn có sẵn cho mục đích khác nhau, loại bỏ số repetitiveness chương trình này, đơn giản hóa văn bản, đọc hiểu biết chương trình Việc sử dụng đơn giản macro cho tên cho chuỗi thị lặp lặp lại Chúng ta lấy ví dụ, thủ tục cho phép ngắt toàn cầu, ngân hàng lựa chọn 'SFR macro_name vĩ mô đối_số1, đối_số2 chuỗi hướng dẫn
endm
Ví dụ sau cho thấy bốn macro Hai macro chọn ngân hàng, phần ba cho phép gián đoạn, trong vơ hiệu hóa thứ tư gián đoạn
bank0 vĩ mô ; Macro bank0 bcf STATUS, RP0; Thiết lập lại RP0 bit bcf STATUS, RP1; Reset bit RP1 endm; Cuối vĩ mô
vĩ mô bank1 ; Macro bank1 BSF STATUS, RP0; Đặt RP0 bit bcf STATUS, RP1; Reset bit RP1 endm; End vĩ mô vĩ mơ enableint ; cho phép ngắt tồn cầu BSF INTCON, 7; Set bit endm; Cuối vĩ mô
disableint vĩ mơ ; tồn vơ hiệu hóa INTCON bcf gián đoạn, 7; endm bit Thiết lập lại; Cuối vĩ mô
Macro định nghĩa theo cách lưu tập tin liệu đặc biệt với INC gia hạn mà viết tắt tập tin liệu bao gồm Như thấy, bốn macro khơng có đối số Tuy nhiên, macro bao gồm đối số cần thiết Ví dụ sau cho thấy macro với đối số Pin cấu đầu vào bit tương ứng Tris đăng ký thiết lập để logic (bank1) Nếu khơng, cấu đầu
(125)
vĩ mô sản lượng đối_số1, đối_số2 ; Macro bank1; Ngân hàng có đăng ký Tris bcf đối_số1, đối_số2; Xóa bit quy định (0 = ra) bank0; Macro endm lựa chọn ngân hàng; Cuối vĩ mô
Macro với đối số gọi theo cách sau:
sản lượng TRISB, ; Pin RB7 cấu sản lượng
Khi gọi vĩ mô, quy định đối số TRISB thay tham số đối_số1 định nghĩa macro Tương tự vậy, số thay đối số đối_số2, mã sau tạo ra:
BSF STATUS, RP0; Đặt RP0 bit = TRẠNG bcf BANK1, RP1; Thiết lập lại RP0 bit = BANK1 bcf TRISB, 7; Cấu hình RB7 bcf STATUS đầu ra, RP0; Clear RP0 bit = BANK0 bcf STATUS, RP1; Clear bit RP1 = BANK0
Rõ ràng từ nhìn mà chương trình trở nên dễ đọc linh hoạt cách sử dụng macro Nhược điểm vĩ mơ chiếm nhiều khơng gian nhớ tên vĩ mơ chương trình thay mã xác định trước Do thực tế chương trình thường sử dụng macro, tất thứ phức tạp lâu dài
callc nhãn vĩ mơ; callc địa phương vĩ mơ; Xác định Nhãn địa phương xuất bnc vĩ mô; Nếu C nhảy = đến nhãn gọi xuất; Nếu C = chương trình gọi số Nhãn địa (trong số vĩ mô) xuất; địa phương Label endm vĩ mô; End vĩ mô
Trong trường hợp macro có nhãn, chúng phải định nghĩa địa phương cách sử dụng thị địa phương Các ví dụ nêu có macro mà gọi chương trình (gọi nhãn hiệu trường hợp này) Carry bit đăng ký TÌNH TRẠNG thiết lập Nếu khơng, sau lệnh thực
Chương trình
Asubroutine chứa chuỗi hướng dẫn, bắt đầu với nhãn (subroutine_name) kết thúc lệnh trả lại retlw Sự khác biệt so với vĩ mơ chương trình khơng thay mã số chương trình, chương trình nhảy đến chương trình để thực Nó xảy lắp ráp gặp gỡ lệnh Subroutine_name gọi chương trình Trên lệnh trở về, để lại chương trình tiếp tục thực từ nơi rời khỏi chương trình Chương trình định nghĩa trước sau gọi
Như thấy, liên quan đến macro, tham số đầu vào đầu có tầm quan trọng lớn Liên quan đến chương trình con, khơng thể định nghĩa đối số chương trình riêng Tuy nhiên, biến xác định trước chương trình sử dụng đối số chương trình
Một trình tự hợp lý kiện sau: xác định biến, gọi chương trình sử dụng chúng cuối đọc biến đổi thực chương trình
Các chương trình ví dụ sau thực thêm hai biến 2-byte ARG1 ARG2 kết chuyển đến RES biến Khi biến 2-byte sử dụng, cần thiết để xác định byte cao thấp cho người số họ Chương trình đơn giản Nó thêm byte thấp biến ARG1 ARG2 cao sau Nếu số tiền bổ sung hai byte thấp lớn 255 (tối đa giá trị byte) phần lại thêm vào biến RESH
; Chương trình thêm hai-bit số 16; Phiên bản: 1.0 Ngày: ngày 25 tháng năm 2007 MCU: PIC16F887 Processor 16f887; Xác định xử lý # include "p16f887.inc"; INC sở liệu Microchip CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC Cblock 0x20; Bắt đầu RAM ARG1H; Đối số byte cao ARG1L; Đối số byte thấp ARG2H; Đối số byte cao ARG2L; Đối số byte thấp RESH; kết cao byte RESL; Kết byte thấp endc; Kết thúc biến ORG 0x00; Thiết lập lại vector goto Start Start; Viết giá trị cho biến movlw 0x01; ĐỐI_SỐ1 = 0x0104 movwf movlw 0x04 movwf ARG1H ARG1L movlw 0x07; ARG2 = 0x0705 movwf movlw 0x05 movwf ARG2H ARG2L chính; chương trình gọi Add16; Gọi chương trình Add16 goto Loop Loop; Duy trì Add16; chương trình thêm hai 16-bit số clrf RESH; RESH = movf ARG1L, w, w = ARG1L addwf ARG2L, w, w = ARG2L movwf RESL + w; = btfsc RESL TRẠNG w, C; kết lớn 255? incf RESH, f ; Nếu lớn hơn, RESH tăng movf ARG1H, w, w = ARG1H addwf ARG2H, w, w = w + ARG2 addwf RESH, f; RESH = w trở lại; Trở lại từ đầu chương trình con; Kết thúc chương trình
Trong ngắn hạn
(126)MPLAB chương trình Windows gói cho phép chương trình dễ dàng văn phát triển chương trình dễ dàng Nó tốt để mơ tả mơi trường phát triển cho ngơn ngữ chương trình tiêu chuẩn thiết kế cho lập trình máy tính MPLAB kỹ thuật đơn giản hóa số hoạt động bao gồm nhiều thơng số, đó, mơi trường * IDE xuất hiện, thực từ dòng lệnh Tuy nhiên, thị hiếu khác có số người thích biên tập viên lập trình tiêu chuẩn trình biên dịch dịng lệnh Mỗi chương trình viết MPLAB rõ ràng, có tài liệu trợ giúp, trường hợp
Cài đặt MPLAB
MPLAB bao gồm phần:
Chương trình mà loại tập tin liệu dự án vào nhóm (Project Manager); chương trình để tạo văn chế biến (Text Editor);
mô sử dụng để mơ hoạt động chương trình nạp vào vi điều khiển
Bên cạnh đó, có xây dựng lập trình chẳng hạn PICStart Plus ICD (Trong Circuit Debugger) sử dụng để chương trình phần mềm thiết bị vi điều khiển PIC Vì khơng phải chủ đề sách này, chúng đề cập lựa chọn
Để bắt đầu MPLAB, máy tính bạn cần có:
Máy tính tương thích máy tính thuộc lớp 486 tốt hơn; Bất kỳ hệ điều hành Windows;
VGA card đồ họa;
8MB nhớ (32 MB đề nghị); 200 MB có sẵn đĩa cứng, Một chuột
MPLAB cài đặt đến trước tập tin liệu từ đĩa CD MPLAB cần chép vào đĩa cứng Quá trình cài đặt tương tự hầu hết cài đặt chương trình Windows khác Đầu tiên cửa sổ chào đón tất xuất hiện, sau lựa chọn để chọn cài đặt Một thơng điệp thơng báo chương trình cài đặt thành công sẵn sàng để sử dụng xuất Bạn sẵn sàng?
Các bước trước cài đặt: Bắt đầu Microsoft Windows;
Đưa đĩa CD vào ổ đĩa CD ROM;
Click START chọn tùy chọn RUN chọn; Click BROWSE chọn ổ đĩa CD ROM Tìm thư mục MPLAB đĩa CD ROM
Mọi thứ sẵn sàng để bắt đầu cài đặt Những hình ảnh sau mô tả bước cài đặt Click vào biểu tượng để bắt đầu trình
Một xảy Những hình ảnh tới cho thấy trình cài đặt bắt đầu! Tiếp theo cửa sổ chứa chữ "Chào mừng" Cần giải thích?
Trên thực tế, chương trình nhắc nhở bạn để đóng tất chương trình hoạt động để khơng ảnh hưởng đến q trình cài đặt Tiếp theo khóa học!
Trước tiếp tục, bạn phải chấp nhận điều kiện MPLAB giấy phép phần mềm Chọn tùy chọn "Tôi chấp nhận" bấm vào KẾ TIẾP
(127)Tương tự chương trình khác, MPLAB cần được cài đặt vào thư mục Nó thư mục đĩa cứng Nếu khơng phải cần thiết để thực thay đổi, chọn địa định click Next
Một giấy phép, chấp nhận tùy chọn khác theo quy định máy tính Tiếp theo, Hãy kiên nhẫn!
Cuối cùng! Đây bạn chờ đợi Nhấp vào Finish Các máy tính khởi động với chương trình lưu đĩa cứng Mọi thứ OK!
Nhấp vào biểu tượng máy tính để bàn MPLAB để bắt đầu chương trình tìm hiểu
Như thấy, MPLAB tương tự hầu hết chương trình Windows Ngồi khu vực làm việc, có menu (chứa tùy chọn: File, Edit, vv), công cụ (chứa biểu tượng khác nhau) trạng thái phía cửa sổ Tương tự Windows, có quy định phải có phím tắt cho tùy chọn chương trình thường sử dụng tạo để dễ dàng truy cập chúng tăng tốc độ hoạt động Những phím tắt thật biểu tượng menu Nói cách khác, tất tùy chọn có cơng cụ nằm trình đơn
DỰ ÁN LÀM
Thực theo bước sau để chuẩn bị chương trình để nạp vào vi điều khiển: Thực dự án;
Viết chương trình; Biên dịch
Để thực dự án, cần nhấp vào tùy chọn "DỰ ÁN" sau "DỰ ÁN WIZARD" Một cửa sổ chào mừng xuất
Tiếp tục thực dự án cách nhấp vào NEXT Sau đó, chọn vi điều khiển, bạn sử dụng Trong trường hợp chúng tơi, vi điều khiển PIC16F887
Cuối cùng, dự án phân công tên mà thường mục đích nội dung chương trình viết Dự án di chuyển đến thư mục mong muốn Nó tốt mà liên kết thư mục với vi điều khiển PIC (Xem hình)
Các tài liệu có dự án không luôn cần phải viết MPLAB Tài liệu viết số chương trình khác bao gồm dự án Trong ví dụ này, khơng có văn Chỉ cần nhấp vào Next
Click FINISH để hoàn thành dự án Các cửa sổ chứa thơng số dự án Một VIẾT CHƯƠNG TRÌNH MỚI
Khi dự án tạo ra, cửa sổ hiển thị hình xuất
Bước viết chương trình Mở tài liệu cách nhấp vào tập tin mới> Text Editor MPLAB môi trường xuất
Lưu tài liệu thư mục D: \ dự án PIC cách sử dụng File> Save As lệnh đặt tên "Blink.asm" cho thấy chương trình ví dụ diode cổng nhấp nháy Rõ ràng bạn xác định vị trí bạn tập tin nơi bạn muốn, ổ cứng bạn muốn Sử dụng thư mục thông thường để lưu trữ tất dự án khác thư mục làm cho cảm giác tốt
(128)D: \ Pic dự án LED Flash dự án Tất file có liên quan tổ chức kiện Số dự án Tất file liên quan LED quét dự án Tất tập tin liên quan
Sau "Blink.asm" tạo lưu lại, cần bao gồm dự án cách click chuột phải vào tùy chọn "Source Files" cửa sổ "Proba.mcw" Sau đó, cửa sổ nhỏ với hai lựa chọn xuất Chọn "Add Files"
Click vào tùy chọn mở cửa sổ chứa PIC thư mục với Blink.asm tài liệu Xem hình Nhấp vào "Blink" để bao gồm Blink.asm tài liệu vào dự án
Ví dụ chương trình văn
Các chương trình văn thủ tục khơng thể bắt đầu tất hoạt động trước thực Chương trình viết minh họa đơn giản dự án làm
; Chương trình đặt chân cổng B để logic (1) 16f887.; Phiên bản: 1.0 Ngày: April 25,2007 MCU: PIC16F887 Lập trình viên: John Smith ;***** Tuyên bố cấu hình vi điều khiển ***** Processor # include "p16f887.inc" CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;***** biến khai ***** Cblock 0x20, vị trí miễn phí RAM endc; Khơng có biến ;;***** Chương trình cấu trúc nhớ * **** ORG 0x00; Thiết lập lại vector goto chính; Sau nhảy đặt lại vị trí ORG 0x04; ngắt vector goto chính; Khơng có thường xun bị gián đoạn chính; Bắt đầu chương trình banksel TRISB; ngân hàng Chọn chứa TRISB clrf TRISB; Port B cấu đầu banksel PORTB; Chọn ngân hàng có chứa movlw 0xFF PORTB; W = FF movwf PORTB; Di chuyển W đến cổng B goto Loop Loop; Bước tới nhãn Loop End
Chương trình nên ghi vào "Blink.asm 'cửa sổ chép từ đĩa qua tùy chọn chép / dán Khi chép, chương trình phải lập thành định dạng HEX thực thi cách sử dụng tùy chọn DỰ ÁN -> BUILD TẤT CẢ Một cửa sổ xuất Câu cuối quan trọng cho liệu biên soạn thành công hay không Rõ ràng, 'BUILD thành cơngthơng điệp có nghĩa khơng xảy lỗi biên dịch thực thành công
Trong trường hợp lỗi xảy ra, cần thiết để nhấp đúp chuột vào thông báo đề cập đến cửa sổ 'đầu ra', tự động chuyển bạn qua chương trình lắp ráp, trực tiếp đến đường dây, nơi lỗi xảy
MÔ PHỎNG
Asimulator phần môi trường MPLAB cung cấp nhìn sâu sắc vào hoạt động vi điều khiển Nói chung, mơ cố gắng để mơ hình sống thực tình giả định để nghiên cứu để xem cách cơng trình hệ thống Bằng phương tiện mơ phỏng, theo dõi giá trị biến, đăng ký cảng chân nước tốt Thành thật mà nói, giả lập tầm quan trọng cho tất chương trình Nếu chương trình đơn giản (như ví dụ chúng tơi), mơ khơng phải quan trọng đặt chân cổng B để logic (1) phức tạp Tuy nhiên, chương trình phức tạp có tính giờ, điều kiện khác u cầu (đặc biệt tốn học hoạt động), mơ sử dụng lớn Như tên cho biết, mô phương tiện để mô hoạt động vi điều khiển Giống vi điều khiển, mô hướng dẫn thi hành khác (từng dịng) liên tục cập nhật tình trạng tất đăng ký Bằng cách này, người dùng cần theo dõi thực chương trình Khi kết thúc chương trình văn bản, người sử dụng cần phải thử nghiệm mơ trước thực mơi trường thực tế Thật không may, nhiều điều tốt đẹp bỏ qua lập trình viên nhân vật thiếu mô chất lượng cao tốt
Simulator kích hoạt cách nhấp vào gỡ rối> SELECT TOOL> MPLAB SIM, hình Kết là, số biểu tượng liên quan đến giả lập xuất ý nghĩa chúng sau:
Bắt đầu thực chương trình tốc độ cao Trong ví dụ này, giả lập thực thi chương trình tốc độ (bình thường) đầy đủ phải dừng lại cách nhấn vào biểu tượng
(129)Bắt đầu bước thực chương trình Các hướng dẫn thực Hơn nữa, cách nhấp vào biểu tượng cho phép bạn để bước vào chương trình macro
Biểu tượng có chức tương tự trước đó, ngoại trừ có khả để bước vào chương trình
Đặt lại vi điều khiển Bằng cách nhấn vào biểu tượng này, chương trình truy cập đặt đầu chương trình mơ bắt đầu
Tương tự môi trường thực tế, điều cần thực thiết lập lại vi điều khiển cách sử dụng tùy chọn gỡ rối> RESET cách nhấp vào biểu tượng thiết lập lại Như hậu điều này, đường màu xanh đặt đầu chương trình chương trình PCL truy cập xóa khơng Hãy tham khảo cửa sổ đặc biệt Đăng ký chức hiển thị
Ngồi SFR, tốt để có nhìn sâu sắc Tập tin Đăng ký Một cửa sổ có chứa chúng xuất cách nhấn vào -> FILE XEM SỔ tùy chọn
Nếu chương trình có chứa biến, tốt để theo dõi giá trị họ Mỗi biến định cửa sổ (Xem Windows) cách nhấp vào VIEW-> WATCH tùy chọn
Nếu chương trình có chứa biến, tốt để theo dõi giá trị họ Mỗi biến định cửa sổ (Watch Windows) cách nhấp vào VIEW-> WATCH tùy chọn
Sau tất biến đăng ký quan tâm trở thành có sẵn khu vực làm việc mơ phỏng, mơ q trình bắt đầu Các lệnh bước vào Bước qua tùy thuộc vào việc bạn muốn bước vào chương trình hay khơng Các hướng dẫn tương tự thiết lập cách sử dụng bàn phím-push-nút <F7> <F8> (nói chung, tất dẫn quan trọng có nút bấm tương ứng bàn phím)
Email: info@123doc.org HomeDevelopment Tools Compilers
Accessory Boards Special Offers Easy BuyPublications SupportProjectsDownload Sách: vi điều khiển PIC
TOCGiới thiệuCh 1Ch 2Ch 3Ch 4.Ch 5Ch 6Ch 7Ch 8Ch 9App AApp BApp C Phụ lục B: Ví dụ
Mục đích chương cung cấp thông tin vi điều khiển mà người cần phải biết để sử dụng chúng thành cơng thực tế Chương này, đó, khơng chứa chương trình siêu thú vị thiết bị đồ với giải pháp tuyệt vời Thay vào đó, ví dụ sau có nhiều chứng cho thấy chương trình văn khơng phải đặc ân không đưa tài khả đơn giản đặt mảnh ghép với cách sử dụng thị Hãy yên tâm thiết kế phát triển thiết bị chủ yếu bao gồm điều sau phương pháp "thử nghiệm lặp lại đúng" Tất nhiên, có nhiều bạn phức tạp trở thành từ mảnh ghép đặt trẻ em kiến trúc sư hạng
Kết nối
Như thấy hình đây, để kích hoạt vi điều khiển hoạt động cần thiết để cung cấp: Nguồn cung cấp;
(130)Rõ ràng, mạch đơn giản, khơng phải lúc Nếu thiết bị mục tiêu sử dụng cho việc kiểm soát máy đắt tiền trì chức quan trọng, tất thứ nhiều phức tạp hơn! Tuy nhiên, giải pháp đủ cho thời gian
Nguồn điện
Mặc dù PIC16F887 hoạt động điện áp cung cấp khác nhau, lại để kiểm tra "của Murphy thấp"? Một nguồn điện 5DC hiển thị Mạch, sử dụng điều chỉnh ba-ga giá rẻ tích hợp tích cực, LM7805, cung cấp chất lượng cao ổn định điện áp đủ phép hành vi điều khiển điện tử ngoại vi để hoạt động bình thường (đủ trường hợp có nghĩa 1Amp)
RESET SIGNAL
Để vi điều khiển hoạt động cách, logic (VCC) phải áp dụng pin thiết lập lại giải thích kết nối pin-điện trở 10K-VCC The-nhấn nút kết nối MCLR pin thiết lập lại để GND không cần thiết Tuy nhiên, gần ln ln cung cấp cho phép trở lại vi điều khiển an toàn với điều kiện hoạt động bình thường gặp cố Bằng việc nhấn nút này, 0V đưa đến chân, vi điều khiển thiết lập lại thực chương trình đầu Các điện trở 10K có cho phép 0V áp dụng cho chân MCLR, thông qua nút đẩy, mà không shorting đường sắt 5VDC xuống đất
CLOCK SIGNAL
Mặc dù vi điều khiển xây dựng dao động, khơng thể hoạt động mà khơng có thành phần bên mà hoạt động ổn định xác định tần số (hoạt động tốc độ vi điều khiển) Tùy thuộc vào yếu tố sử dụng tần số mình, dao động chạy bốn chế độ khác nhau:
LP - Low Power Crystal; XT - Crystal / tiếng kêu vang;
HS - tốc độ cao Crystal / tiếng kêu vang; RC - Điện trở / Tụ
Tại chế độ quan trọng? Do thực tế gần khơng thể thực dao động ổn định, hoạt động dải tần số rộng, vi điều khiển phải biết tinh thể kết nối theo thứ tự mà điều chỉnh hoạt động thiết bị điện tử nội cho Đây lý tất chương trình sử dụng để nạp chip có chứa tùy chọn để lựa chọn chế độ dao động Xem hình
Thạch anh cộng hưởng
Khi tinh thể thạch anh sử dụng để ổn định tần số, xây dựng dao động hoạt động tần số xác lập từ thay đổi nhiệt độ điện áp cung cấp điện tốt tần số thường gắn nhãn bao bì vi điều khiển
Ngoài tinh thể, tụ điện C1 C2 phải có thêm kết nối theo sơ đồ điện dung họ quan trọng, đó, giá trị cung cấp bảng coi đề nghị quy tắc nghiêm ngặt
Gạch cộng hưởng
Gạch cộng hưởng rẻ hơn, tương tự thạch anh chức cách hoạt động Đây lý sơ đồ minh họa kết nối họ để vi điều khiển giống Tuy nhiên, giá trị tụ điện chút khác trường hợp tính khác điện Tham khảo bảng
Những dao động sử dụng khơng phải cần thiết để có tần số xác Bộ dao động RC
(131)Bộ dao động bên ngồi
Nếu cần thiết để đồng hóa hoạt động số vi điều khiển lý khơng thể sử dụng sơ đồ trước đó, tín hiệu đồng hồ tạo dao động bên Hãy tham khảo số
CÁC LINH
Bất kể thực tế vi điều khiển sản phẩm công nghệ đại, khơng sử dụng mà khơng kết nối với thành phần bổ sung Đơn giản, xuất điện áp chân vi điều khiển vô nghĩa không sử dụng để thực hoạt động định (một bật / tắt, thay đổi, hiển thị, vv.)
Phần cố ý bao gồm phổ biến sử dụng thành phần bổ sung thực tế chẳng hạn điện trở, bóng bán dẫn, điốt LED, hình LED, hình LCD mạch giao tiếp RS232
TẮC VÀ PUSH-NÚT
Khơng có đơn giản chuyển mạch push-nút! Điều chắn cách đơn giản phát xuất điện áp chân đầu vào vi điều khiển khơng có nhu cầu giải thích thêm cách thành phần hoạt động Tuy nhiên, khơng phải đơn giản thực tế Sau đó, tất về?
Đó việc liên hệ với thư bị trả lại-một vấn đề phổ biến với thiết bị chuyển mạch khí Khi đình cơng liên lạc với nhau, động lực họ hành động đàn hồi với để gây thư bị trả lại Kết cách nhanh chóng xung dịng điện thay q trình chuyển đổi từ số khơng đến đầy đủ Nói chung, chủ yếu xảy rung động, điểm thô nhẹ bụi bẩn địa liên lạc Hiệu ứng thường không đáng kể sử dụng thành phần sống hàng ngày bị trả xảy nhanh làm ảnh hưởng đến thiết bị nhất, gây vấn đề số mạch tương tự logic mà đáp ứng đủ nhanh để hiểu sai xung vào-ra luồng liệu Dù sao, tồn q trình khơng kéo dài lâu (một vài micro-hoặc mili giây), đủ lâu để đăng ký vi điều khiển Khi sử dụng nút ấn xung truy cập, sai sót xảy gần 100% trường hợp!
Vấn đề dễ dàng giải cách kết nối mạch RC đơn giản để ngăn chặn thay đổi nhanh chóng điện áp Kể từ thời kỳ bị trả không xác định, giá trị thành phần khơng xác định xác Trong hầu hết trường hợp, bạn nên sử dụng giá trị hình
Nếu ổn định hồn tồn cần thiết sau biện pháp cấp tiến phải thực hiện! Các đầu mạch, thể hình (RS flip-flop), thay đổi trạng thái logic sau phát xung kích hoạt trả lại liên lạc Giải pháp tốn (SPDT switch), vấn đề chắn giải quyết!
Ngồi giải pháp phần cứng, giải pháp phần mềm đơn giản Khi chương trình kiểm tra trạng thái pin vào phát thay đổi, việc kiểm tra nên thực lần sau chậm trễ định Nếu chương trình xác nhận việc thay đổi, có nghĩa chuyển đổi / nút ấn, thay đổi vị trí Ưu điểm giải pháp hiển nhiên: miễn phí, ảnh hưởng tiếng ồn loại bỏ áp dụng cho số liên lạc có chất lượng tốt
RELAY
relay cơng tắc điện đóng mở kiểm sốt mạch điện Do đó, kết nối với chân vi điều khiển sử dụng để bật / tắt thiết bị lượng cao động cơ, máy biến áp, máy sưởi, bóng đèn, vv Các thiết bị luôn đặt từ Hội đồng thành phần nhạy cảm Có nhiều loại chuyển tiếp, tất hoạt động cách Khi dòng điện chạy qua cuộn dây, chuyển tiếp điều hành điện từ để mở đóng nhiều nhóm liên lạc Tương tự optocouplers, khơng có kết nối galvanic (điện liên hệ) mạch đầu vào đầu Rơle thường yêu cầu hai cao điện áp để bắt đầu hoạt động có thu nhỏ mà kích hoạt thấp trực tiếp thu từ pin vi điều khiển
(132)Để ngăn chặn xuất cảm ứng điện áp cao tự dừng lại đột ngột dòng điện qua cuộn dây, diode phân cực ngược kết nối song song với cuộn dây Mục đích diode để "cắt bỏ" cao điểm điện áp
LED diode
Bạn biết tất bạn cần biết điốt LED, nên suy nghĩ hệ trẻ Làm để tiêu diệt LED? Vâng Rất đơn giản
Nhanh chóng đốt cháy
Giống diode khác, đèn LED có hai kết thúc cực dương cực âm Kết nối với điện áp cung cấp điện Các diode phát ánh sáng hạnh phúc Biến lộn ngược áp dụng điện áp cung cấp điện (thậm chí cho thời điểm) Nó khơng phát ánh sáng, khơng LẠI!
Chậm cháy
Có một, tối đa tức danh nghĩa hành xác định cho LED mà không vượt Nếu điều xảy ra, đi-ốt phát nhiều ánh sáng chuyên sâu, thời gian dài!
Một để nhớ
Tương tự ví dụ trước, tất bạn cần làm để loại bỏ điện trở hạn chế hành hiển thị Tùy thuộc vào điện áp cung cấp điện, hiệu ngoạn mục!
Màn hình LED
Về bản, đèn LED hiển thị khác số đèn LED đúc nhựa trường hợp tương tự Có nhiều loại hình bao gồm vài chục xây dựng điốt hiển thị biểu tượng khác Việc phổ biến sử dụng gọi 7-phân đoạn hiển thị Nó bao gồm đèn LED-7 phân đoạn bố trí hình chữ nhật cho biểu tượng hiển thị có phần bổ sung cho điểm thập phân hiển thị Để đơn giản hóa kết nối, cực dương cực âm tất điốt kết nối với pin thơng thường để có hình cực dương phổ biến hiển thị âm cực phổ biến, tương ứng Các phân đoạn đánh dấu ký tự từ đến g, cộng với dp, hình Về kết nối, diode xử lý riêng, có nghĩa phải có quy hành trở giới hạn
Dưới vài điều quan trọng mà ta nên ý mua hình LED:
Tuỳ thuộc vào việc cực dương cực âm kết nối với pin thơng thường, có hiển thị cực dương thơng thường hiển thị cực âm chung Con số cho thấy hình cực dương thơng thường Nhìn vào tính vật lý, khơng có khác biệt hình tất bạn nên kiểm tra cẩn thận cài đặt trước họ sử dụng; Đối với chân vi điều khiển, có hạn chế tối đa nhận gửi Do đó, số hiển thị kết nối với vi điều khiển rec ommended sử dụng gọi thấp sử dụng đèn LED 2mA cho hoạt động; Hiển thị đoạn thường đánh dấu ký tự từ đến g, khơng có quy tắc nhanh chóng mà vi điều khiển chân họ nên kết nối Vì lý quan trọng để kiểm tra kết nối trước bắt đầu chương trình văn thiết kế thiết bị
Hiển thị kết nối với vi điều khiển thường chiếm số lượng lớn tơi có giá trị / chân O, vấn đề lớn, đặc biệt cần thiết để hiển thị số đa số Vấn đề nhiều rõ ràng nếu, ví dụ, cần thiết để hiển thị hai số chữ số (một phép tính đơn giản cho thấy 96 chân cần thiết trường hợp này)! Vấn đề có giải pháp gọi ghép kênh
Đây ảo ảnh quang học dựa nguyên tắc hoạt động máy quay phim thực Chỉ có chữ số thời điểm hoạt động, chúng thay đổi trạng thái họ cách nhanh chóng bị ấn tượng tất chữ số số hoạt động đồng thời
Dưới lời giải thích số Lần byte đại diện đơn vị áp dụng cổng vi điều khiển transistor T1 kích hoạt đồng thời Sau lúc, bóng bán dẫn T1 bị tắt, byte đại diện cho hàng chục áp dụng cổng T2 bóng bán dẫn kích hoạt Q trình cyclically lặp lặp lại tốc độ cao cho tất chữ số bóng bán dẫn tương ứng
(133)hàng chục hàng trăm được, khơng phải mười chữ số sử dụng Vì vậy, số hiển thị phải qua thủ tục sau đây:
Trước hết, chương trình đặc biệt số đa số phải phân chia thành đơn vị, hàng chục vv Sau đó, chúng phải lưu trữ byte đặc biệt Chữ số có định dạng dễ nhận biết cách thực "mặt nạ" Nói cách khác, định dạng nhị phân số thay kết hợp khác bit cách sử dụng chương trình đơn giản Ví dụ, chữ số (0000 1000) thay số nhị phân 0111 1111 để kích hoạt tất đèn LED hiển thị chữ số Các diode cịn lại khơng hoạt động trường hợp dành riêng cho điểm thập phân
Nếu cổng vi điều khiển kết nối với hình cách mà bit kích hoạt đoạn "a", bit kích hoạt đoạn "b", bit phân khúc "c", vv, sau bảng cho thấy mặt nạ cho chữ số
CHỮ SỐ ĐỂ HIỂN THỊ HIỂN THỊ CÁC PHÂN ĐOẠN
dp b c d e f g
0 1 1 1
1 0 1 0 0
2 1 1
3 1 1 0
4 0 1 0 1
5 1 1
6 1 1 1
7 1 0 0
8 1 1 1
9 1 1 1
Ngồi chữ số từ đến 9, có số chữ cái-A, C, E, J, F, c U, H, L, b, d, o, r, t-mà hiển thị phương tiện mặt nạ thích hợp
Trong trường hợp hình cực dương thơng thường sử dụng, tất người có bảng trước nên thay số khơng ngược lại Ngồi ra, transistor NPN sử dụng trình điều khiển tốt OPTOCOUPLER
optocoupler An thiết bị thường sử dụng để vi điều khiển điện tử galvanically riêng biệt từ khả nguy hiểm điện áp mơi trường xung quanh Optocouplers thường có một, hai bốn nguồn ánh sáng (LED diode) đầu vào họ đầu mình, đối diện với điốt, có số yếu tố nhạy cảm với ánh sáng (phototransistors, hình ảnh hình ảnh thyristors triacs) Vấn đề optocoupler sử dụng đường truyền dẫn ngắn quang học để truyền tín hiệu thành phần mạch điện, giữ chúng điện cô lập cô lập có ý nghĩa điốt yếu tố hình ảnh nhạy cảm cấp nguồn riêng Bằng cách này, vi điều khiển điện tử đắt tiền bổ sung hoàn toàn bảo vệ từ điện áp cao tiếng ồn mà nguyên nhân phổ biến hoạt động phá hoại, làm hư hỏng không ổn định thiết bị điện tử thực tế Các optocouplers thường xuyên sử dụng người có phototransistors kết đầu họ Ngoài ra, optocouplers với nội sở-to-pin Kết nối Internet (cũng có optocouplers mà khơng có nó), sở để lại chưa nối
The R / C đại diện mạng lưới đường gãy hình biểu thị tùy chọn kết nối mà làm giảm tác động tiếng ồn cách loại bỏ xung ngắn
Màn hình LCD
Thành phần đặc biệt sản xuất để sử dụng với vi điều khiển, có nghĩa khơng thể kích hoạt theo tiêu chuẩn mạch IC Nó sử dụng để hiển thị thông điệp khác hình tinh thể lỏng nhỏ Các mơ hình mô tả giá thấp khả lớn thường xuyên sử dụng thực tế Nó dựa vi điều khiển
(134)CHỨC NĂNG PIN SỐ TÊN LOGIC NHÀ NƯỚC MÔ TẢ
Ground VSS - 0V
Nguồn cung cấp Vdd - +5 V
Tương phản Vee - - VDD
Kiểm soát hoạt động RS D0 - D7 hiểu lệnh
D0 - D7 hiểu liệu
5 R / W
1 Ghi liệu (từ điều khiển cho hình LCD) Đọc liệu (từ hình LCD để điều khiển)
6 E
1
Từ 1-0 Truy cập vào LCD tàn tật Hoạt động bình thường
Dữ liệu / lệnh chuyển giao cho LCD
Dữ liệu / lệnh D0 / Bit LSB D1 / Bit
9 D2 / Bit 10 D3 / Bit 11 D4 / Bit 12 D5 / Bit 13 D6 / Bit 14 D7 / Bit MSB Màn hình LCD
Màn hình LCD bao gồm hai dòng với 16 ký tự Mỗi nhân vật bao gồm 5x8 5x11 dot-ma trận Cuốn sách bao gồm hình hiển thị ký tự 5x8, thực thơng dụng
Màn hình độ tương phản phụ thuộc vào điện áp cung cấp điện có thơng điệp hiển thị hai dịng Vì lý này, thay đổi điện áp 0-VDD áp dụng chân đánh dấu Vee Trimmer chiết thường sử dụng cho mục đích Một số hình LCD xây dựng ánh sáng (màu xanh màu xanh diode) Khi sử dụng trình hoạt động, hạn chế trở nên kết nối với chân cho đèn (tương tự điốt LED)
Nếu khơng có ký tự hiển thị tất chúng bị làm mờ hình bật, điều cần thực kiểm tra chiết áp điều chỉnh độ tương phản Có phải điều chỉnh đúng? áp dụng phương thức hoạt động thay đổi (bằng văn hai dòng)
LCD Memory
LCD hiển thị có ba khối nhớ: DDRAM - Hiển thị liệu RAM; CGRAM - Ký tự phát RAM; CGROM - Ký tự phát ROM Bộ nhớ DDRAM
bộ nhớ DDRAM sử dụng cho nhân vật lưu trữ hiển thị Kích thước nhớ đủ để lưu trữ 80 ký tự Một số vị trí nhớ kết nối trực tiếp với nhân vật hình
Nó hoạt động đơn giản: đủ để cấu hình hiển thị địa tự động tăng (phải thay đổi) thiết lập địa khởi đầu cho tin nhắn hiển thị (đối với hex 00 chẳng hạn)
(135)Nếu trỏ vào, xuất vị trí mà giải Nói cách khác, nhân vật xuất vị trí trỏ, tự động di chuyển đến vị trí giải
Đây loại nhớ RAM để liệu viết đọc từ nó, nội dung vĩnh viễn file bị nguồn điện tắt
CGROM Memory
CGROM nhớ chứa đồ ký tự mặc định với tất ký tự hiển thị hình Mỗi nhân vật giao cho vị trí nhớ:
Các địa vị trí nhớ CGROM phù hợp với nhân vật ASCII Nếu chương trình thực gặp lệnh "gửi nhân vật P đến cổng" giá trị nhị phân 0101 0000 sau xuất cảng Giá trị tương đương với ký tự ASCII P Sau ghi vào hình LCD, kết hiển thị biểu tượng từ vị trí CGROM 0101 0000 Nói cách khác, ký tự "P" hiển thị Điều áp dụng cho tất chữ bảng chữ (thủ đô nhỏ), để số!
Như thấy đồ trước đây, địa tất chữ số đẩy phía trước 48 so với giá trị (địa chữ số 48, địa chữ số 49, địa chữ số 50, vv.) Theo đó, để hiển thị số xác cần thiết để thêm số thập phân 48 đến người số họ trước gửi cho LCD
ASCII gì? Từ thành lập họ ngày nay, máy tính nhận số chỉ, khơng phải chữ Nó có nghĩa tất liệu giao dịch hốn đổi máy tính với thiết bị ngoại vi có định dạng nhị phân công nhận người đàn ơng chữ (bàn phím ví dụ tuyệt vời)! Nó đơn giản vậy, nhân vật phù hợp với kết hợp độc đáo zero người thân ASCII ký tự mã hóa dựa bảng chữ tiếng Anh Mã ASCII định nhân vật biểu tượng tương ứng tiêu chuẩn tương đương số họ
LCD lệnh
Tất liệu chuyển giao cho hình LCD thơng qua D0-D7 đầu hiểu lệnh liệu, mà phụ thuộc vào trạng thái pin RS logic:
RS = - bit D0 - D7 địa ký tự hiển thị LCD xử lý địa ký tự từ đồ ký tự hiển thị Địa DDRAM xác định vị trí mà nhân vật hiển thị Địa xác định chuyển nhân vật trước địa chuyển nhân vật trước tự động tăng lên
RS = - bit D0 - D7 lệnh xác định chế độ hiển thị
Các lệnh cơng nhận hình LCD liệt kê bảng đây:
COMMAND RS RW D7 D6 D5 D4 D3 D2 D1 D0 THỜI GIAN THỰC HIỆN
Hiển thị rõ ràng 0 0 0 0 1.64mS
Cursor nhà 0 0 0 0 x 1.64mS
Thiết lập chế độ nhập 0 0 0 I / D S 40uS
Hiển thị bật / tắt kiểm soát 0 0 0 D U B 40uS
Cursor / Hiển thị Shift 0 0 D / C R / L x x 40uS
Chức thiết lập 0 0 DL N F x x 40uS
Thiết lập địa CGRAM 0 Địa CGRAM 40uS Thiết lập địa DDRAM 0 DDRAM địa 40uS
Đọc "BUSY" cờ (BF) BF DDRAM địa
-Viết thư cho CGRAM DDRAM D7 D6 D5 D4 D3 D2 D1 D0
40uS
Tìm hiểu từ CGRAM DDRAM 1 D7 D6 D5 D4 D3 D2 D1 D0
40uS
I / D = Tăng (bằng 1) R / L = Shift bên phải = lượng giảm (1) = Shift trái
S = Hiển thị thay đổi DL = 8-bit = Hiển thị giao diện chuyển = - bit giao diện
(136)
U = Cursor F = Ký tự định dạng 5x10 chấm = Cursor = Ký tự định dạng dấu chấm 5x7 B = Cursor nhấp nháy D / C Hiển thị thay đổi = = trỏ nhấp nháy = Cursor ca
Bận flag gì?
So với vi điều khiển, hình LCD thành phần chậm Bởi điều này, cần thiết để cung cấp tín hiệu mà có thể, thực lệnh, hình sẵn sàng cho phần liệu Đó tín hiệu, gọi cờ bận rộn, đọc từ dòng D7 Khi điện áp đường dây 0V (BF = 0), hiển thị sẵn sàng để nhận liệu Kết nối LCD
Tùy thuộc vào cách nhiều dòng sử dụng để kết nối hình LCD với vi điều khiển, có 8-bit 4-bit LCD chế độ Các chế độ thích hợp chọn vào đầu hoạt động trình gọi "khởi động" chế độ hình LCD 8-bit sử dụng kết đầu D0-D7 để chuyển liệu giải thích trang trước
Mục đích chế độ LED 4-bit để tiết kiệm tơi có giá trị / O chân vi điều khiển Chỉ có bit cao (D4-D7) sử dụng để giao tiếp, người khác nối thơng Mỗi phần liệu gửi đến hình LCD theo hai bước bốn bit cao gửi (thường thông qua đường D4-D7) bốn bit thấp gửi sau Cho phép khởi tạo hình LCD để liên kết giải thích bit nhận cách xác
Hiếm đọc liệu từ hình LCD (nó chủ yếu chuyển từ vi điều khiển để LCD) thường tiết kiệm thêm / O pin cách đơn giản kết nối R / W pin to the Ground Như tiết kiệm có giá Tin nhắn hiển thị bình thường, khơng thể đọc cờ bận rộn khơng thể đọc hình hiển thị tốt May mắn thay, có giải pháp đơn giản Sau gửi nhân vật hay lệnh quan trọng phải cho thời gian LCD, đủ để làm công việc Do thực tế việc thực lệnh chậm kéo dài khoảng 1.64mS, đủ để chờ khoảng 2ms cho LCD
LCD khởi
Màn hình LCD tự động trừ nguồn điện Nó kéo dài khoảng 15ms Sau này, hiển thị sẵn sàng hoạt động Các phương thức hoạt động thiết lập theo mặc định Nó có nghĩa là:
Hiển thị xóa Mode
DL = Truyền thông qua 8-bit giao diện N = Tin nhắn hiển thị dòng F = Ký tự font x điểm
Hiển thị / Cursor on / off D = hiển thị
U = Cursor off
B = Con trỏ nhấp nháy Ký tự nhập
ID = địa hiển thị tự động tăng thêm S = Hiển thị chuyển
Tự động thiết lập lại chủ yếu thực mà khơng có vấn đề Hầu hết, khơng phải ln ln! Nếu lý điện áp cung cấp điện không đạt tới giá trị đầy đủ vòng 10ms, hiển thị bắt đầu thực hoàn toàn thất thường Nếu đơn vị cung cấp điện áp khơng có khả đáp ứng tình trạng cần thiết để cung cấp hoàn toàn hoạt động an toàn, trình khởi tạo áp dụng Khởi tạo, số thứ khác, gây thiết lập lại cho phép hiển thị để hoạt động bình thường
Hãy tham khảo số cho thủ tục 8-bit khởi tạo:
Nó khơng phải sai lầm! Trong thuật toán này, giá trị chuyển ba lần liên tiếp Trong trường hợp 4-bit khởi tạo, thủ tục sau:
(137)Viết tiêu đề cấu hình I / O pins
Mục đích chương trình để bật điốt LED số cổng B Khơng có đặc biệt Dù sao, sử dụng ví dụ để nghiên cứu chương trình thực tế Hình cho thấy chương trình kết nối, chương trình có trang
Khi chuyển đi, diode LED khác cổng ánh sáng phát B Đó đủ biết vi điều khiển kết nối hoạt động bình thường
Ví dụ cho phép mơ tả tiêu đề cách xác văn thị ban đầu Họ đại diện cho phần chương trình sử dụng tất chương trình mơ tả sách Để bỏ qua
repetitiveness, khơng viết ví dụ sau đây, coi vào đầu chương trình (được đánh dấu "Tiêu đề")
Mục đích tiêu đề, thị ban đầu mô tả ngắn gọn Tiêu đề:
tiêu đề đặt đầu chương trình thơng tin dạng ý kiến (tên chương trình, ngày phát hành, vv.) Đừng sai lầm nghĩ sau vài tháng, bạn biết chương trình lưu máy tính bạn
Ban đầu thị: danh sách p = 16f887
Chỉ thị quy định xử lý để thực chương trình # Bao gồm <p16f887.inc>
Nó cho phép trình biên dịch để truy cập vào p16f887.inc tài liệu (Nếu bạn có cài đặt MPLAB, đặt theo mặc định vào C: \ Program Files \ Microchip \ MPASM Suite) Mỗi SFR đăng ký có tài liệu này, bit, có tên riêng địa Nếu chương trình đọc ví dụ:
BSF INTCON, Giẻ
Nó có nghĩa bit Giẻ INTCON đăng ký phải thiết lập Chỉ dẫn, vậy, làm cho ý nghĩa với trình biên dịch Nó có để truy cập vào "inc." Tài liệu để biết bit thứ bảy SFR địa 000B hex nên thiết lập
errorlevel -302
Đây thị "thẩm mỹ" mà vơ hiệu hóa tin nhắn khó chịu "Đăng ký tốn hạng khơng có " xuất vào cuối trình biên soạn Nó khơng phải cần thiết, hữu ích
config
Chỉ thị sử dụng để bao gồm cấu hình từ chương trình biên dịch Nó khơng phải cần thiết hoạt động tương tự thực phần mềm để nạp chương trình vào chip Tuy nhiên, bạn có ý tưởng phần mềm sử dụng người dùng? Những tùy chọn thiết lập mặc định? Bạn người dùng cuối? Bạn có biết chương trình bạn sử dụng cho MCU lập trình năm tới? Làm cho sống dễ dàng cho mình, thị cần thiết đưa vào chương trình bạn
VÍ DỤ
Sử dụng vịng lặp chương trình dao động nội LFINTOSC
Đây tiếp nối ví dụ trước, giao dịch với chút phức tạp vấn đề Ý tưởng để làm cho điốt LED nhấp nháy B vào cảng Một điều đơn giản nhìn đầu tiên! Nó đủ để định kỳ thay đổi trạng thái logic cổng B Trong trường hợp này, số 01010101 10101010 lựa chọn để thay đổi theo cách sau:
Thiết lập kết hợp nhị phân 01010101 cổng B; Vẫn loop1;
(138)Vẫn loop2;
Quay trở lại bước lặp lại tồn thủ tục
Bạn có biết làm nhanh chóng nên thực hiện? Nó quan sát thay đổi cổng B nếu, ngồi trì hỗn cung cấp loop1 loop2, tồn q trình giảm xuống khoảng 250 lần Bởi điều này, vi điều khiển sử dụng dao động nội LFINTOSC với tần số 31kHz thay cho dao động bên với tinh thể thạch anh (8MHz)
Bạn có nhận thấy nguồn tín hiệu đồng hồ thay đổi "trên bay" Nếu bạn muốn chắn nó, loại bỏ tinh thể thạch anh trước chuyển đổi vi điều khiển Điều xảy ra? Các vi điều khiển không bắt đầu hoạt động từ config tải với chương trình đòi hỏi việc sử dụng tinh thể chuyển Nếu bạn loại bỏ tinh thể sau q trình hoạt động, khơng ảnh hưởng đến vi điều khiển tất cả!
Mã Sorce
;************************************************* ***********************; Header ;************************
************************************************ * ************ định BIẾN ************************************ *** cblock 0x20; Block biến địa 20H counter1; biến "counter1" lúc 20h endc địa ;**************************
********************************************** org 0x0000; Địa hướng dẫn chương trình banksel OSCCON; chọn ngân hàng có chứa nhớ; đăng ký OSCCON bcf OSCCON, 6; Chọn nội dao động LFINTOSC với OSCCON bcf, 5; tần số 31KHz OSCCON bcf, BSF OSCCON, 0; vi điều khiển sử dụng dao động nội TRISB banksel; Chọn ngân hàng có đăng ký TRISB clrf TRISB; Tất chân B cổng cấu kết đầu banksel PORTB; chọn ngân hàng có đăng ký PORTB vịng movlw B'01010101 '; số nhị phân 01010101 ghi vào W movwf PORTB; Số chuyển đến h'FF movlw PORTB '; Số HFF chuyển đến W movwf counter1; Số chuyển đến biến "counter1" decfsz loop1 counter1; biến "counter1" bị giảm goto loop1; Nếu kết 0, tiếp tục Nếu khơng,; có loop1 B'10101010 movlw '; số nhị phân 10101010 chuyển đến W movwf PORTB; Số chuyển đến PORTB h'FF movlw'; Số HFF chuyển đến W movwf counter1; Số chuyển đến biến "counter1 "loop2 decfsz counter1; biến" counter1 "bị giảm goto loop2; Nếu kết 0, tiếp tục Nếu khơng,; cịn vịng lặp goto loop2; Chuyển đến nhãn kết thúc vịng lặp; Kết thúc chương trình
VÍ DỤ
Sử dụng vịng lặp lồng
Đề án kết nối lần Để thực điều chút thú vị hơn, kết hợp khác cổng B bit thay đổi lẫn Và, khơng phải tất khóa học Như thấy từ ví dụ trước, vi điều khiển nhanh thường xuyên, cần phải giảm xuống Việc sử dụng xây dựng LF dao động, ví dụ 2, biện pháp cuối mà áp dụng Vấn đề thường giải cách sử dụng vịng lặp lồng chương trình Trong ví dụ này, biến "counter1" bị giảm 255 lần loop1 ngắn Trước rời khỏi vòng lặp này, chương trình đếm ngược 255 lần 255-0 Nó có nghĩa LED nhấp nháy diode có hai cổng, có 255x255 xung đến từ dao động thạch anh Nói cách xác, số lượng xung cho khoảng 196 000 thời gian để thực hướng dẫn nhảy hướng dẫn giảm Có, thật, vi điều khiển chủ yếu chờ đợi không làm
Mã nguồn
;******************* Header ***************************** ****************** ;************* định BIẾN ****************
************************* cblock 0x20; Block biến địa 20H counter1; biến "counter1" địa 20H counter2; biến "counter2" lúc 21giờ endc địa ;********************************************* ***************************** org 0x0000; Địa chương trình banksel TRISB lệnh đầu tiên, chọn ngân hàng có đăng ký TRISB clrf TRISB; Xóa banksel PORTB TRISB; chọn ngân hàng có đăng ký PORTB B'11110000 movlw vịng lặp '; số nhị phân 11110000 chuyển đến W movwf PORTB; Số chuyển đến PORTB h'FF movlw'; Số HFF chuyển đến W movwf counter2; Số chuyển đến biến "counter2" loop2 movlw h'FF '; Số HFF chuyển đến W movwf counter1; Số di chuyển tới "counter1" decfsz loop1 counter1; Decrements "counter1" Nếu kết goto loop1; bỏ qua lệnh decfsz counter2; Decrements "counter2" Nếu kết goto loop2; bỏ qua lệnh movlw B'00001111 '; số nhị phân 00001111 chuyển đến W movwf PORTB; Số chuyển đến PORTB h'FF movlw'; Số HFF chuyển đến W movwf counter2; Số chuyển đến biến "counter2" loop4 movlw h'FF '; Số HFF chuyển đến W movwf counter1; Số chuyển đến biến "counter1" decfsz loop3 counter1; Decrements "counter1" Nếu kết 0; bỏ qua lệnh loop3 goto decfsz counter2; Decrements "counter2" Nếu kết goto loop4; bỏ lệnh goto vòng tiếp theo; Bước tới nhãn kết thúc vịng lặp; Kết thúc chương trình
Ví dụ
(139)Nếu bạn đọc ví dụ trước, bạn nhận thấy bất lợi việc cung cấp chậm trễ cách sử dụng vòng lặp Trong tất trường hợp này, vi điều khiển "giam cầm" khơng làm Nó đơn giản chờ đợi thời gian để vượt qua Như lãng phí thời gian sang trọng khơng thể chấp nhận số phương pháp khác áp dụng Bạn có nhớ câu chuyện giờ? Giới thiệu ngắt? Ví dụ làm cho mối liên kết chúng cách thiết thực sơ đồ tương tự thách thức Nó cần thiết để cung cấp chậm trễ lâu dài, đủ để thông báo thay đổi cổng Thời gian này, TMR0 hẹn với prescaler giao sử dụng cho mục đích Gián đoạn xảy vào đăng ký tràn gia tăng số thường xuyên bị gián đoạn cổng B Tồn quy trình thực "hậu trường" tồn q trình, cho phép vi điều khiển để làm việc khác
Chú ý đến vài chi tiết:
Mặc dù không cần thiết trường hợp này, nội dung sổ đăng ký quan trọng (W, STATUS PCLATH) phải lưu vào đầu ngắt thường xuyên;
Gây gián đoạn bit cờ thích hợp tự động thiết lập bit Giẽ tự động xóa Vào cuối thói quen ngắt lời, khơng qn để lại thứ với nhà nước họ có trước ngắt xảy ra,
Vào cuối rutine gián đoạn, đăng ký quan trọng cần nội dung ban đầu Mã nguồn
;********************** Header ************************** ******************** ;**************** định BIẾN ***********
***************************** cblock 0x20; Block biến w_temp 20H địa chỉ; biến pclath_temp 20H địa chỉ; biến địa 21giờ status_temp; biến endc 22h địa ;************************ START CHƯƠNG TRÌNH ************** ******************** org 0x0000; Địa lệnh goto chương trình chính; Chuyển đến nhãn "chính" ;***********
************* gián đoạn THƯỜNG ********************************* org 0x0004 ; ngắt vector movwf w_temp; Lưu giá trị đăng ký TÌNH TRẠNG movf W; Lưu giá trị đăng ký TÌNH TRẠNG status_temp movf movwf PCLATH; Lưu giá trị đăng ký PCLATH banksel pclath_temp movwf PORTB; chọn ngân hàng có chứa PORTB incf PORTB; gia đăng ký PORTB INTCON banksel; chọn ngân hàng có chứa INTCON bcf INTCON, TMR0IF; Xóa cờ ngắt TMR0IF pclath_temp movf, w; PCLATH cho nội dung ban đầu movwf PCLATH status_temp movf, w; STATUS đưa ban đầu movwf STATUS w_temp swapf nội dung, f; W cho swapf nội dung ban đầu w_temp, w BSF INTCON, Giẻ; tồn cầu ngắt retfie kích hoạt, trở lại từ thường xuyên bị gián đoạn ;************************ CHƯƠNG TRÌNH CHÍNH ******
******************************** chính; bắt đầu chương trình banksel Ansel chính, Ngân hàng có đăng ký Ansel clrf Ansel; Xóa Ansel đăng ký ANSELH clrf ANSELH; Tất chân kỹ thuật số banksel TRISB; chọn ngân hàng có đăng ký TRISB clrf TRISB; Tất chân B cổng cấu kết đầu banksel OPTION_REG; Ngân hàng có đăng ký OPTION_REG bcf OPTION_REG, T0CS; TMR0 đếm xung từ OPTION_REG bcf dao động, PSA; prescaler gán cho đếm thời gian OPTION_REG TMR0 BSF, PS0; prescaler tỷ lệ 1:256 BSF OPTION_REG, BSF OPTION_REG PS1, PS2 banksel INTCON; Ngân hàng có đăng ký INTCON BSF INTCON, TMR0IE; TMR0 kích hoạt ngắt tràn BSF INTCON, Giẻ; tồn cầu bị gián đoạn kích hoạt banksel PORTB; Ngân hàng có đăng ký clrf PORTB PORTB; Xóa cổng B vịng goto loop; Duy trì kết thúc; Kết thúc chương trình
Ví dụ
Sử dụng chương trình con, cách sử dụng push-nút
Trong ví dụ trước vi điều khiển thực thi chương trình mà khơng bị ảnh hưởng theo cách xung quanh Trong thực tế, thiết bị hoạt động theo cách (ví dụ, dấu hiệu neon đơn giản) Bạn đoán, số thành phần khác, chân đầu vào sử dụng ví dụ Có sơ đồ hình bên dưới, chương trình có trang Mọi thứ đơn giản
Khi bắt đầu chương trình, sau xác định biến, * vi điều khiển chân cấu hình cách sử dụng ghi TRISA TRISB
Trong chương trình chính, chút cổng B đặt Sau đó, nội dung đăng ký liên tục di chuyển theo nơi bên trái (PORTB rlf hướng dẫn) Nó cho ấn tượng điốt LED chiếu sáng chuyển động Để làm cho nhìn thấy, tồn q trình phải làm chậm đủ Nhấn vào nút "push" STOP "ngừng chuyển động chương trình cịn loop3 Delay cung cấp phương tiện vòng lặp lồng Thời gian này, đặt chương trình ngắn "DELAY"
(140);************************************************* ***************************; Header ;********************
************************************************** ****** ;************* định BIẾN **************************** *************** cblock 0x20; Block biến địa 20H counter1; biến "counter1" địa 20H counter2; biến "counter2" địa 21giờ endc; Block biến kết thúc; CHƯƠNG TRÌNH CHÍNH ************************ ************************ ************** org 0x0000; Địa chương trình banksel Ansel lệnh đầu tiên, chọn ngân hàng có đăng ký Ansel clrf Ansel; Xóa sổ đăng ký Ansel ANSELH để clrf ANSELH; cấu hình tất đầu vào banksel TRISB kỹ thuật số ; chọn ngân hàng có đăng ký TRISB clrf TRISB; Tất chân B cổng cấu kết đầu movlw B'00000010 'movwf TRISA; Pin RA1 đầu vào banksel PORTB; chọn ngân hàng có đăng ký TRISB movlw B'00000001'; Viết đến đăng ký W movwf PORTB ; Số chuyển đến PORTB PORTB rlf vòng lặp; Port B bit quay nơi trái TRÌ HỖN gọi; gọi chương trình "DELAY" loop3 btfss Porta, 1; Kiểm tra cổng firs Một chút goto loop3; "0" áp dụng cho pin.Go để nhãn "loop3" loop goto, "1" áp dụng cho pin.Go để nhãn "vịng" ;************************ chương trình ** ************************************* TRÌ HỖN clrf counter2; Xóa biến "counter2" loop1 clrf counter1; xóa biến "counter1" loop2 decfsz counter1; Decrements biến "counter1" goto loop2; Kết Tới nhãn loop2 decfsz counter2; Decrements biến "counter2" goto loop1; Kết Đi để trở phịng thí nghiệm loop1; Quay trở lại từ chương trình DELAY "kết thúc"; Kết thúc chương trình
VÍ DỤ
TMR0 một, truy cập xác định biến mới, sử dụng rơle
Thời gian này, TMR0 sử dụng truy cập Ý tưởng để kết nối đầu vào truy cập vào Nút để đếm xung vào thời điểm tất nút bấm Khi số lượng xung tính trở nên với số TEST đăng ký, logic điện áp (5V) áp dụng cho PORTD, pin Kể từ điện áp kích hoạt rơle điện khí, bit gọi là-cùng "tiếp sức"
Trong ví dụ này, việc đăng ký TEST chứa số Đương nhiên, số lượng tính tốn nhập vào qua bàn phím Thay chuyển tiếp một, vi điều khiển kích hoạt số thiết bị khác thay push-nút sử dụng cảm biến Ví dụ minh họa sử dụng phổ biến vi điều khiển cơng nghiệp Khi thực nhiều lần cần thiết, sau khác nên bật tắt
Mã nguồn
;************************************************* ***************************; Header ;********************
************************************************** ****** ;************* định BIẾN **************************** *************** TEST equ B'00000101 '; số nhị phân 00000101 = TEST # define RELAY PORTD, 3; Pin PORTD, = RELAY ;********* CHƯƠNG TRÌNH CHÍNH *************** ********************************* ***** org 0x0000; Địa lệnh banksel chương trình TRISB; ngân hàng chọn đăng ký có chứa TRISB clrf TRISB; Tất chân B cổng cấu kết đầu clrf TRISD; Tất chân D cổng cấu movlw B'00010000 đầu '; Con số ghi vào đăng ký W movwf TRISA; Chỉ chân cổng A đầu vào banksel OPTION_REG; Ngân hàng có đăng ký OPTION_REG BSF OPTION_REG, T0CS; Pin RA4 cung cấp với OPTION_REG BSF xung, PSA; prescaler tỷ lệ 1:1 banksel PORTB ; chọn ngân hàng có đăng ký PORTB TMR0 clrf; Xóa đăng ký bcf PORTD, 3; Pin PORTD, = vòng lặp movfw TMR0; đăng ký hẹn chuyển đến đăng ký W movwf PORTB; đăng ký W chuyển đến TEST xorlw PORTB; hoạt động độc quyền ; W đăng ký số TEST (00000101) btfsc STATUS, Z; Nếu số lượng nhau, kết BSF PORTD, 3; TRẠNG bit, Z = Bit PORTD, đặt vòng goto, nhảy đến nhãn vòng lặp thực thi kết thúc; Kết thúc chương trình
VÍ DỤ
Sử dụng macro chương trình, cách sử dụng thường xuyên trễ
Bạn nhận thấy ví dụ trước vi điều khiển khơng ln hoạt động mong đợi Cụ thể, cách nhấn nút-push, số lượng cổng B luôn tăng thêm Cơ push-nút làm cho số địa liên lạc ngắn họ kích hoạt Bạn đốn, vi điều khiển tính sổ đăng ký tất
Có nhiều cách để giải vấn đề Chương trình sử dụng chương trình gọi chậm trễ trễ Về bản, thủ tục đơn giản Khi phát thay đổi đầu vào (nút bấm), chậm trễ chương trình ngắn cung cấp chương trình chờ đợi thay đổi (nút phát hành) Chỉ sau này, chương trình đến kết luận nút kích hoạt
(141)Các chương trình tương đối đơn giản cho phép biến "cnt" để tăng lên giảm cách sử dụng hai push-nút Biến sau chép vào cổng B ảnh hưởng đến LED (logic (1) lượt đi-ốt LED trên, logic không (0) lượt đi-ốt LED off)
Mã nguồn
;********************** Header **********************; *** ********** định BIẾN ************************* cblock 0x20; Block biến địa 20hex HIcnt LOcnt LOOPcnt cnt endc; Cuối chặn biến ;***************************************** ***************************** ORG 0x000; Thiết lập lại vector nop goto chính; Go để bắt đầu chương trình (nhãn "chính"); * ************************************************** ******************* bao gồm "pause.inc" bao gồm "button.inc" ;****************** ************************************************** ** banksel Ansel; chọn ngân hàng có chứa Ansel clrf Ansel; Tất chân kỹ thuật số clrf ANSELH banksel TRISB BSF TRISA, BSF TRISA, clrf banksel PORTB TRISB clrf cnt nút Loop PORT, 0,0, nút Tăng PORT, 1,0 , lượng giảm goto Loop Tăng incf cnt, e movf cnt, w movwf PORTB goto Loop lượng giảm decf cnt, e movf cnt, w movwf PORTB goto vịng cuối; Kết thúc chương trình
Macro "pausems"
;************************************************* ********************* pausems MACRO đối_số1 địa phương Loop1 địa phương dechi địa phương Delay1ms địa phương Loop2 địa phương movlw High End (đối_số1); cao byte tham số di chuyển; để HIcnt movwf HIcnt movlw thấp (đối_số1); Hạ byte tham số di chuyển; để LOcnt movwf LOcnt LOcnt movf Loop1, f; Decrements HIcnt LOcnt TRẠNG btfsc, Z; cần thiết gọi chương trình Delay1ms goto dechi gọi
Delay1ms decf LOcnt, f goto dechi Loop1 movf HIcnt, e btfsc STATUS, Z goto Kết thúc gọi Delay1ms decf HIcnt, e decf LOcnt, f goto Delay1ms Loop1:; Delay1ms cung cấp chậm trễ movlw 0,100, 100 * 10us = 1ms movwf LOOPcnt; LOOPcnt <-100 Loop2: nop nop nop nop nop nop nop decfsz LOOPcnt, f goto Loop2; Thi thời gian trả lại Loop2; 10 Cuối ENDM ;*************************** *******************************************
Macro "nút"
;************************************************* *** MACRO nút cổng, pin, Hilo, nhãn địa phương Pressed1; tất nhãn địa phương Pressed2 địa phương địa phương Exit1 địa phương Exit2 IFNDEF debouncedelay; Cho phép thời gian trễ xác định, chương trình # define debouncedelay 0,10 endif IF (Hilo == ); Nếu kéo lên sử dụng cổng btfsc, pin; Nếu "1", nhấn nút nhấn goto Exit1 pausems debouncedelay; Chờ cho 10ms trễ Pressed1 btfss cổng, pin goto Pressed1 pausems debouncedelay; Chờ goto nhãn phát hành; nhảy quy định địa Exit1 ELSE; Nếu kéo xuống sử dụng btfss cổng, pin Exit2 goto; Nếu "0", push-nút phát hành pausems debouncedelay; Chờ cho Pressed2 trễ cảng btfsc 10ms, pin goto Pressed2 pausems debouncedelay; Chờ goto nhãn phát hành ; chuyển đến địa quy định endif Exit2 ENDM ;***************************************** *****************************
Ví dụ:
Sử dụng đếm thời gian TMR1 sử dụng gián đoạn
16-bit TMR1 hẹn sử dụng ví dụ Bằng cách đăng ký chiếm đóng TMR1L TMR1H, ngắt xảy số cổng B tăng lên Điều thấy ví dụ trước Sự khác biệt chương trình chậm trễ lâu chút thời gian tỷ lệ prescaler 01:08
Mã nguồn
;*************************** Header ********************* ******************** ;************* định BIẾN **************
(142)gián đoạn kích hoạt banksel PORTB; chọn ngân hàng có đăng ký clrf PORTB PORTB; Xóa cổng B vịng goto loop; Duy trì kết thúc; Kết thúc chương trình
VÍ DỤ
Sử dụng TMR2 hẹn giờ, cấu hình dao động thạch anh
Ví dụ minh họa việc sử dụng TMR2 hẹn vi điều khiển sử dụng dao động nội HFINTOSC với tần số từ 500 kHz Tồn chương trình làm việc sau: Sau thời gian thời gian xác định prescaler đăng ký, PR postscaler hết hạn, ngắt xảy Gián đoạn thường decrements nội dung đăng ký PR đồng thời gia tăng nội dung cổng B Vì số PR đăng ký, mà định ngắt để xảy liên tục giảm đi, làm gián đoạn xảy thời gian ngắn ngắn thời gian Nói cách khác, kể thực nhanh Một chu kỳ bắt đầu tăng tốc kể sau lần đăng ký tràn PR
Mã nguồn
;********************** Header ************************** ************************* ;************* định BIẾN *********
*************************************** cblock 0x20; Block biến địa 20H w_temp ; biến địa 20H pclath_temp; biến status_temp 21giờ địa chỉ; biến địa 22h endc START CHƯƠNG TRÌNH ;************************ ***** ************************************* org 0x0000; Địa lệnh goto chương trình chính; Bước để nhãn "chính" ;************************ gián đoạn THƯỜNG ****************** ******************** org 0x0004; ngắt movwf w_temp vector; Lưu đăng ký TÌNH TRẠNG movf W; Lưu đăng ký TÌNH TRẠNG status_temp movf movwf PCLATH; Lưu PCLATH đăng ký movwf PORTB banksel pclath_temp; Chọn ngân hàng có chứa PORTB incf PORTB; gia PORTB đăng ký PR2 banksel; chọn ngân hàng có chứa PR2 decf PR2; PR2 bị giảm pclath_temp movf, w; PCLATH cho trạng thái ban đầu movwf PCLATH status_temp movf, w; STATUS đưa ban đầu nhà nước movwf STATUS swapf w_temp, f; W cho, swapf trạng ban đầu w_temp w banksel PIR1; chọn ngân hàng có chứa PIR1 bcf PIR1, TMR2IF; Xóa cờ ngắt TMR2IF BSF INTCON, Giẻ; kích hoạt tồn cầu retfie gián đoạn; Quay trở lại từ gián đoạn thường xuyên; * CHƯƠNG TRÌNH CHÍNH *********************** ************************* ****************** chính; bắt đầu chương trình banksel OSCCON; ngân hàng chọn đăng ký có chứa OSCCON bcf OSCCON, 6; Chọn nội dao động HFINTOSC với OSCCON BSF, 5; tần số BSF 500KHz OSCCON, BSF OSCCON, 0; vi điều khiển sử dụng dao động nội Ansel banksel; chọn ngân hàng có đăng ký Ansel clrf Ansel; Xóa sổ đăng ký Ansel ANSELH clrf ANSELH; Tất chân TRISB banksel kỹ thuật số; chọn ngân hàng có đăng ký TRISB clrf TRISB; Tất cổng chân B cấu kết đầu clrf T2CON PR2 banksel; chọn ngân hàng có đăng ký T2CON movlw H'FF '; Bộ điều khiển tất đăng ký T2CON movwf bit; prescaler = 1:16, postscaler = 1:16 TMR2 = ON clrf PORTB banksel PIE1; chọn ngân hàng có đăng ký PIE1 BSF PIE1, TMR2IE; TMR2 BSF gián đoạn kích hoạt NTCON, PEIE; ngoại vi làm gián đoạn module kích hoạt; Timer TMR2 thuộc module ngoại vi BSF INTCON, Giẻ; tồn cầu ngắt vịng lặp loop goto cho phép; Duy trì kết thúc; Kết thúc chương trình
Ví dụ: 10
Module CCP1 PWM tạo tín hiệu
Từ mơ-đun ĐCSTQ có loạt khả họ thường sử dụng thực tế Ví dụ minh họa việc sử dụng module CCP1 chế độ PWM Bit CCP1CON đăng ký xác định mô-đun hoạt động PWM đơn đầu Cùng bit xác định tần số PWM 4,88 kHz Để làm cho điều thú vị hơn, thời gian đầu P1A (PORTC, 2) xung thay đổi cách đẩy nút tượng trưng gọi "Dark" "BRIGHT" Push-nút kiểm tra thường xuyên bị gián đoạn bắt đầu đếm thời gian TMR1 Bất kỳ thay đổi ảnh hưởng đến đi-ốt LED để thay đổi cường độ ánh sáng Lưu ý cổng B khơng sử dụng điện trở bên ngồi nội kéo lên điện trở kích hoạt Tồn q trình tạo tín hiệu PWM thực "hậu trường", cho phép vi điều khiển để làm việc khác
Source Code
;********************** Header ********************************************** ;************* DEFINING VARIABLES ******************************************* cblock 0x20 ; Block of variables starts at address 20h w_temp ; Variable at address 20h
pclath_temp ; Variable at address 21h status_temp ; Variable at address 22h endc
#define DARK PORTB,0 ; Push-button "DARK" is connected ; to PORTB,0 pin
(143); to PORTB,1 pin
;************************ PROGRAM START ************************************* org 0x0000 ; First program instruction address
goto main ; Jump to label "main"
;************************ INTERRUPT ROUTINE ********************************* org 0x0004 ; Interrupt vector
movwf w_temp ; Save register W
movf STATUS ; Save register STATUS movwf status_temp
movf PCLATH ; Save register PCLATH movwf pclath_temp
banksel CCPR1L
btfss DARK ; Tests push-button "DARK"
decf CCPR1L ; Push-button is pressed - decrement CCP1L by btfss BRIGHT ; Testing push-button "BRIGHT"
incf CCPR1L ; Push-button is pressed - increment CCP1L by
movf pclath_temp,w ; PCLATH is given its original content movwf PCLATH
movf status_temp,w ; STATUS is given its original content movwf STATUS
swapf w_temp,f ; W is given its original content swapf w_temp,w
banksel PIR1 ; Selects bank containing PIR1 bcf PIR1,TMR1IF ; Clears interrupt flag TMR1IF
bsf TMR1H,7 ; Accelerates timer TMR0 counting bsf TMR1H,6 ;
bsf INTCON,GIE ; Global interrupt enabled retfie ; Return from interrupt routine
;************************ MAIN PROGRAM ************************************** main ; Start of the main program
banksel ANSEL ; Selects bank containing register ANSEL clrf ANSEL ; Clears registers ANSEL and ANSELH clrf ANSELH ; All pins are digital
banksel OPTION_REG ; Selects bank containing register ANSEL bcf OPTION_REG,7 ; Pull-up resistors enabled
bsf WPUB,0 ; Pull-up resistors enabled bsf WPUB,1 ; on port B pins and
banksel TRISC ; Selects bank containing register TRISC clrf TRISC ; All port C pins are configured as outputs
banksel T1CON ; Selects bank containing register T1CON bcf T1CON,TMR1CS ; TMR1 operates as a timer
bcf T1CON,T1CKPS0 ; Prescaler rate is 1:8 bcf T1CON,T1CKPS1
(144)
banksel PIE1 ; Selects bank containing register PIE1 bsf PIE1,TMR1IE ; Interrupt TMR1 is enabled
bsf INTCON,PEIE ; Peripheral modules interrupts are ; enabled
bsf INTCON,GIE ; Global interrupt enabled
movlw B'11111101' ; Prescaler TMR2 = 1:4 banksel T2CON
movwf T2CON
movlw B'11111111' ; Number in register PR2 banksel PR2
movwf PR2
banksel CCP1CON
movlw B'00001100' ; Bits to configure CCP1 module movwf CCP1CON
loop
goto loop ; Remain here end ; End of program EXAMPLE 11
Using A/D converter
PIC16F887 A/D converter is used in this example Everything is quite simple A variable analog signal is applied on the AN2 pin while the result of conversion is shown on port B as a binary number In order to simplify the program as much as possible, only lower bits of the result of conversion are shown GND is used as a negative voltage reference Vref-, while positive voltage reference is applied on the AN3 pin It enables voltage measurement scale to "stretch and shrink"
To make this clear, the A/D converter always generates a 10-bit binary result, which means that it detects a total of 1024 voltage levels (210=1024) The difference between two voltage levels is not always the same The less the difference between Vref+ and Vref, the less the difference will be between two of 1024 levels Accordingly, the A/D converter is able to detect slight changes in voltage
Source Code
;*********************** Header ********************************************* ;************************ PROGRAM START ************************************* org 0x0000 ; Address of the first program instruction
banksel TRISB ; Selects bank containing register TRISB clrf TRISB ; All port B pins are configured as outputs movlw B'00001100'
movwf TRISA ; Pins RA2 and RA3 are configured as inputs
banksel ANSEL ; Selects bank containing register ANSEL movlw B'00001100' ; Inputs AN2 and AN3 are analog while movwf ANSEL ; all other pins are digital
clrf ANSELH
banksel ADCON1 ; Selects bank including register ADCON1 bsf ADCON1,ADFM ; Right justification of result
bcf ADCON1,VCFG1 ; Voltage Vss is used as Vref bsf ADCON1,VCFG0 ; RA3 pin voltage is used as Vref+
(145); AD converter is enabled loop
banksel ADCON0
btfsc ADCON0,1 ; Tests bit GO/DONE
goto loop ; Conversion in progress, remain in ; loop
banksel ADRESL
movf ADRESL,w ; Lower byte of conversion result is ; copied to W
banksel PORTB
movwf PORTB ; Byte is copied to PORTB bsf ADCON0,1 ; Starts new conversion goto loop ; Jump to label "loop" end ; End of program EXAMPLE 12
Using EEPROM memory
This example demonstrates write to and read from built-in EEPROM memory The program works as follows The main loop constantly reads EEPROM memory location at address (decimal) This number is displayed on port D The same loop tests the state of three push-buttons connected to port A The push-buttons "INCREMENT" and "DECREMENT" have the same purpose like in example - increment and decrement the variable "cnt" which is thereafter displayed on port B The button "MEMO" enables that variable to be written to EEPROM memory In order to check it, it is enough to press this push-button and switch off the device On the next switch on, the program displays the value of the variable on port D (at the moment of writing, this value was displayed on port B)
Source Code
;********************** Header ********************************************** ;*********** Defining variables in program ********************************** cblock 0x20 ; Block of variables starts at address 20h
HIcnt LOcnt LOOPcnt cnt
endc ; End of block
;**************************************************************************** ORG 0x000 ; Reset vector
nop
goto main ; Go to start of the program (label "main") ;**************************************************************************** include "pause.inc"
include "button.inc"
;**************************************************************************** main
banksel ANSEL ; Selects bank containing ANSEL clrf ANSEL
clrf ANSELH ; All pins are digital
banksel TRISB
bsf TRISA, ; Input pin bsf TRISA, ; Input pin bsf TRISA, ; Input pin
clrf TRISB ; All port B pins are outputs clrf TRISD ; All port D pins are outputs banksel PORTB
(146)clrf cnt ; cnt=0 Loop
banksel PORTA
button PORTA,0,0,Increment button PORTA,1,0,Decrement button PORTA,2,0,Save
banksel EEADR
movlw .5 ; Reads EEPROM memory location movwf EEADR ; at address
banksel EECON1 bcf EECON1,EEPGD
bsf EECON1,RD ; Reads data from EEPROM memory banksel EEDATA
movfw EEDATA ; Moves data to W banksel PORTD
movwf PORTD ; Data is moved from W to PORTD goto Loop
Increment ; Increments number on port B incf cnt, f
movf cnt, w movwf PORTB goto Loop
Decrement ; Decrements number on port B decf cnt, f
movf cnt, w movwf PORTB goto Loop
Save ; Copies data from port B to EEPROM banksel EEADR ; memory location at address movlw .5
movwf EEADR ; Writes address banksel PORTB
movfw PORTB ; Copies port B to register W banksel EEDAT
movwf EEDAT ; Writes data to temporary register banksel EECON1
bcf EECON1,EEPGD
bsf EECON1,WREN ; Write enabled
bcf INTCON,GIE ; All interrupts disabled btfsc INTCON,GIE
goto $-2
movlw 55h movwf EECON2 movlw H'AA' movwf EECON2 bsf EECON1,WR
btfsc EECON1,WR ; Wait for write to complete goto $-1
bsf INTCON,GIE ; Interrupt enabled bcf EECON1,WREN
goto Loop ; Tests push-buttons again end ; End of program
EXAMPLE 13
(147)In this example, the microcontroller operates as a two-digit counter Concretely, the variable Dval is decremented (slow enough to be visible) and its value is displayed on twodigit LED display (99-0) The challenge is to enable binary number to be
converted in decimal one and split it in two digits (tens and ones) Besides, since the LED display segments are connected in parallel, it is necessary to ensure that they change fast in order to make impression of simultaneous light emission (time-division multiplexing) Remember that in electronics, multiplexing allows several analog signals to be processed by one analog-todigital converter (ADC) In this very case, time-division multiplexing is performed by the timer TMR0, while binary to decimal number conversion is performed in macro "digbyte" Counter may be reset to its starting value (99) at any moment by pressing the pushbutton "COUNTER RESET"
Source Code
;************************* Header ******************************************* ;**************************************************************************** ; DEFINING VARIABLES IN PROGRAM
w_temp EQU 0x7D ; Variable for saving W register
status_temp EQU 0x7E ; Variable for saving STATUS register
pclath_temp EQU 0x7F ; Variable for saving PCLATH register
CBLOCK 0x20 ; Block of variables starts at address 20h
Digtemp
Dig0 ; Variables for displaying digits - LSB Dig1
Dig2
Dig3 ; Variables for displaying digits - MSB Dval ; Counter value
One ; Auxiliary variable which determines which ; display is to be switched on
ENDC ; End of block of variables
poc_vr EQU 99 ; Initial counter value is 99 include "Digbyte.inc"
;**************************************************************************** ORG 0x0000 ; First instruction address
goto main ; Jump to label "main"
;**************************************************************************** ORG 0x0004 ; Interrupt vector address
movwf w_temp ; Move w register to w_temp register
movf STATUS,w ; Move STATUS register to status_temp movwf status_temp ; register
movf PCLATH,w ; Move PCLATH register to pclath_temp movwf pclath_temp ; register
(148)
bcf PORTA, bcf PORTA, btfsc One, goto Lsdon goto Msdon
Lsdon
incf One, f
movlw HIGH (Bcdto7seg) movwf PCLATH
digbyte Dval movf Dig1, w
call Bcdto7seg ; Place L1 mask on the PORTD movwf PORTD
bsf PORTA, goto ISR_end
Msdon
incf One, f
movlw HIGH (Bcdto7seg) movwf PCLATH
digbyte Dval movf Dig0, w
call Bcdto7seg ; Place LO mask on the PORTD movwf PORTD
bsf PORTA, goto ISR_end
; End of interrupt routine ISR_end
movf pclath_temp,w ; PCLATH register is given its original movwf PCLATH ; state
movf status_temp,w ; STATUS register is given its original movwf STATUS ; state
swapf w_temp,f ; W register is given its original ; state
swapf w_temp,w
retfie ; Return from interrupt routine main
banksel ANSEL ; Selects bank containing ANSEL clrf ANSEL ; All pins are digital
clrf ANSELH BANKSEL TRISA
movlw b'11111100' ; RA0 and RA1 are configured as outputs and ; used for 7-segment display multiplexing
; RA2 is input push-button for initializa ; tion
movwf TRISA clrf TRISD
BANKSEL OPTION_REG
movlw b'10000110' ; TMR0 is incremented each 32us (Fclk=8MHz) movwf OPTION_REG
(149)BANKSEL PORTA movlw poc_vr
movwf Dval ; Dval contains counter value
movlw b'00000001' ; Initializes variable specifying display movwf One ; to switch on
movwf PORTA movlw .100
movwf TMR0 ; TMR0 interrupt appr.every 10ms bsf INTCON, GIE ; Global interrupt enabled bsf INTCON, T0IE ; Timer TMR0 interrupt enabled bcf INTCON, T0IF
Loop
btfss One, ; Falling edge encountered? goto Dec ; Yes! Go to Dec
btfss PORTA, ; Counter reset button pressed? goto Reset ; Yes! Go to Reset
goto Loop
; Decrement Dval counter by Dec
btfss One, goto Dec movf Dval, f
btfsc STATUS, Z ; Is Dval equal to 0?
goto Loop ; If it is, go to loop and wait for T2 decf Dval, f ; If Dval not equal to 0, decrement it by goto Loop
Reset
btfss PORTA, ; Wait for rising edge goto Reset
movlw poc_vr
movwf Dval ; Write initial value to counter goto Loop
;**************************************************************************** ORG 0x0300 ; Lookup table is at the top of third page, but ; can be placed at some other place, it is impor ; tant to have it all on one page
Bcdto7seg
addwf PCL, f
DT 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f ;**************************************************************************** END ; End of program
Macro "digbyte": digbyte MACRO arg0 LOCAL Exit0 LOCAL Exit1 LOCAL Exit2
clrf Dig0 clrf Dig1 clrf Dig2 clrf Dig3
movf arg0, w movwf Digtemp movlw .100 Exit2
(150)decf Dig2, f addwf Digtemp, f Exit1
movlw .10 incf Dig1, f subwf Digtemp, f btfsc STATUS, C goto Exit1 decf Dig1, f addwf Digtemp, f Exit0
movf Digtemp, w movwf Dig0 ENDM
Macro digbyte is used to convert the number from digital to decimal format Besides, digits of such decimal number are stored into special registers in order to enable them to be displayed on LED displays
EXAMPLE 14
Sound generating, using macros
The generation of sound is a task commonly assigned to the microcontroller Basically, it all comes to generating a pulse sequence on one output pin While doing so, the proportion of logic zero (0) to logic one (1) duration determines the tone pitch and by changing different tones, different melodies arise
In this example, any press on push-buttons T1 and T2 generates a sound The appropriate instructions are stored in macro "beep" containing two arguments
Source Code
;*********************** Header *************************************** ;******************* Defining variables in program ******************** cblock 0x20
HIcnt ; Auxiliary variables for macro pausems LOcnt
LOOPcnt PRESCwait
Beep_TEMP1 ; Belongs to macro "BEEP" Beep_TEMP2
Beep_TEMP3 endc
#define BEEPport PORTD, ; Speaker pin #define BEEPtris TRISD,
expand
;********************************************************************** ORG 0x0000 ; RESET vector address
goto main ; Jump to program start (label - main) ;********************************************************************** ; remaining code goes here
include "pause.inc" include "button.inc" include "beep.inc" main
(151)clrf ANSELH
banksel TRISD
movlw b'11111011' ; PORTA D initialization movwf TRISD
banksel PORTD
BEEPinit ; Macro "Beep" Loop
button PORTD,0,0,Play1 ; Push-button button PORTD,1,0,Play2 ; Push-button goto Loop
Play1 ; First tone BEEP 0xFF, 0x02
BEEP 0x90, 0x05 BEEP 0xC0, 0x03 BEEP 0xFF, 0x03 goto Loop
Play2 ; Second tone BEEP 0xBB, 0x02
BEEP 0x87, 0x05 BEEP 0xA2, 0x03 BEEP 0x98, 0x03 goto Loop
;********************************************************************** END ; End of program
Macro "beep": BEEPinit MACRO
bcf STATUS, RP0 bcf STATUS, RP1 bcf BEEPport bsf STATUS, RP0 bcf STATUS, RP1 bcf BEEPtris
movlw b'00000111' ; TMR0 prescaler rate 1:256 movwf OPTION_REG ; OPTION <- W
bcf STATUS, RP0 bcf STATUS, RP1 ENDM
BEEP MACRO freq, duration bcf STATUS, RP0 bcf STATUS, RP1 movlw freq
movwf Beep_TEMP1 movlw duration movwf Beep_TEMP2 call BEEPsub ENDM
;********************************************************************** ; Subroutines
BEEPsub
clrf TMR0 ; Counter initialization bcf INTCON, T0IF
bcf BEEPport BEEPa
bcf INTCON, T0IF ; Clears TMR0 Overflow Flag BEEPb
(152)call B_Wait ; Logic one "1" duration bcf BEEPport
call B_Wait ; Logic zero "0" duration
btfss INTCON, T0IF ; Check TMR0 Overflow Flag, goto BEEPb ; skip next if set
decfsz Beep_TEMP2, f ; Is Beep_TEMP2 = ? goto BEEPa ; Go to BEEPa again return
B_Wait
movf Beep_TEMP1, w movwf Beep_TEMP3 B_Waita
decfsz Beep_TEMP3, f goto B_Waita
return EXAMPLE 15 Using LCD display
This example illustrates the use of the alphanumeric LCD display The program itself is very simple because macros are used (usually the effort of creating Macros pays off in the end)
Two messages written on two lines change on display The second message is intended to display the current temperature Since no sensor is installed, the measurement is not really carried out, the variable "temp" appears on the display instead of the measured temperature
In reality, the current temperature or some other measured value would be displayed Source Code
;*********************** Header *********************************** ; DEFINING VARIABLES IN PROGRAM
CBLOCK 0x20 ; Block of variables starts at address 20h
HIcnt ; Belongs to macro "pausems" LOcnt
LOOPcnt
LCDbuf ; Belongs to functions "LCDxxx" LCDtemp
LCDportBuf ; LCD Port Buffer
Digtemp ; Belongs to macro "digbyte" Dig0 Dig1 Dig2 Dig3 temp
ENDC ; End of block
LCDport EQU PORTB ; LCD is on PORTB (4 data lines on RB0-RB3) RS EQU ; RS line connected to RB4
EN EQU ; EN line connected to RB5
;********************************************************************** ORG 0x0000 ; Reset vector address
(153)goto main ; Go to beginning of the program (label "main") ;**********************************************************************
include "LCD.inc" include "digbyte.inc" include "pause.inc"
;********************************************************************** main
banksel ANSEL ; Selects bank containing ANSEL clrf ANSEL ; All pins are digital
clrf ANSELH
bcf STATUS,RP0 ; Bank0 active only bcf STATUS,RP1
movlw .23
movwf temp ; Move arbitrary value to variable ; is to be displayed on LCD
lcdinit ; LCD initialization Loop
lcdcmd 0x01 ; Instruction to clear LCD
lcdtext 1, "mikroelektronika" ; Write text from the begin ; ning of the first line
lcdtext 2, "Beograd" ; Write text from the beginning of ; the second line
pausems 2000 ; sec delay
lcdcmd 0x01 ; Instruction to clear LCD lcdtext 1, "Temperatura1" ; Write text from the begin ; ning of the first line
lcdtext 2, "temp=" ; Write text from the beginning of ; the second line
lcdbyte temp ; Write variable (dec.) lcdtext 0, " C" ; Write text after cursor pausems 2000 ; sec delay goto Loop
;********************************************************************** end ; End of program
LCD.inc
;********************************************************************** ; Initialization must be done by using macro lcdinit before access ; ing LCD
;********************************************************************** lcdinit MACRO
bcf STATUS, RP0 ; Bank0 bcf STATUS, RP1
clrf LCDportBuf movf LCDportBuf, w movwf LCDport
bsf STATUS, RP0 ; Bank1 bcf STATUS, RP1
clrf TRISB ; LCDport with output LCD bcf STATUS, RP0 ; Bank0
bcf STATUS, RP1
(154)bsf LCDportBuf, EN movf LCDportBuf, w movwf LCDport bcf LCDportBuf, EN movf LCDportBuf, w movwf LCDport
call Delay1ms ; ms delay
; Function set (display mode set) lcdcmd b'00101100'
call Delay1ms ; ms delay
; Display ON/OFF Control lcdcmd b'00001100'
call Delay1ms ; ms delay
; Entry Mode Set
lcdcmd b'00000110'
call Delay1ms ; ms delay
; Display Clear
lcdcmd b'00000001'
pausems 40 ; 40 ms delay
; Function set (4-bit mode change) movlw b'00100000' movwf LCDbuf swapf LCDbuf, w movwf LCDportBuf bcf LCDportBuf, RS movf LCDportBuf, w movwf LCDport bsf LCDportBuf, EN movf LCDportBuf, w movwf LCDport bcf LCDportBuf, EN movf LCDportBuf, w movwf LCDport
call Delay1ms ; ms delay
; Function set (display mode set) lcdcmd b'00101100'
call Delay1ms ; ms delay
; Display ON/OFF Control lcdcmd b'00001100'
call Delay1ms ; ms delay
; Entry Mode Set
lcdcmd b'00000110'
call Delay1ms ; ms delay
; Display Clear
lcdcmd b'00000001'
pausems 40 ; 40 ms delay
ENDM
;**********************************************************************
(155); lcdclr is the same as lcdcmd 0x01
;********************************************************************** lcdcmd MACRO LCDcommand ; Send command to LCD movlw LCDcommand
call LCDcomd ENDM
LCDcomd
movwf LCDbuf bcf LCDportBuf, RS movf LCDportBuf, w movwf LCDport goto LCDwr LCDdata
movwf LCDbuf bsf LCDportBuf, RS movf LCDportBuf, w movwf LCDport goto LCDwr LCDwr
swapf LCDbuf, w call SendW movf LCDbuf, w call SendW return
SendW
andlw 0x0F movwf LCDtemp movlw 0xF0
andwf LCDportBuf, f movf LCDtemp, w iorwf LCDportBuf, f movf LCDportBuf, w movwf LCDport call Delay1ms bsf LCDportBuf, EN movf LCDportBuf, w movwf LCDport bcf LCDportBuf, EN movf LCDportBuf, w movwf LCDport call Delay1ms return
;********************************************************************** ; lcdtext writes text containing 16 characters which represents a ; macro argument The first argument select selects the line in which ; text writing is to start If select is 0, text writing starts from
; cursor current position
;********************************************************************** lcdtext MACRO select, text ; This macro writes text from cursor ; current position Text is specified
; in argument consisting of 16 charac ; ters
local Message local Start local Exit local i=0 goto Start
(156)DT Start
IF (select == 1) lcdcmd b'10000000' ELSE
IF (select == 2) lcdcmd b'11000000' ENDIF
ENDIF
WHILE (i<16) ; Repeat conditional program compiling 16 times call Message+i ; Read lookup table and place value in W addlw
bz Exit ; until is read
call LCDdata ; Call routine displaying W on LCD i=i+1 ENDW Exit ENDM ;********************************************************************** ; This macro writes value in size of byte on LCD
; excluding leading zeros
;********************************************************************** lcdbyte MACRO arg0
digbyte arg0 ; A hundred is in Dig2, ; A ten is in Dig1 and one in Dig0 movf Dig2, w
addlw 0x30 call LCDdata
movf Dig1, w ; If digit is move cursor addlw 0x30
call LCDdata
movf Dig0, w ; If digit is move cursor addlw 0x30
call LCDdata ENDM
;********************************************************************** ; 1ms Delay
Delay1ms:
movlw .200 movwf LOOPcnt Delay10us:
nop ;1us nop ;1us nop ;1us nop ;1us nop ;1us nop ;1us nop ;1us decfsz LOOPcnt, f ;1us goto Delay10us ;2us
return EXAMPLE 16
RS232 serial communication
(157)signalled by switching the LED diode on The easiest way to test device operation in practice is by using a standard Windows program called Hyper Terminal
Source Code
;*********************** Header *************************************** ; DEFINING VARIABLES IN PROGRAM
w_temp EQU 0x7D ; Variable for saving W register
status_temp EQU 0x7E ; Variable for saving STATUS register pclath_temp EQU 0x7F ; Variable for saving PCLATH w register cblock 0x20 ; Block of variables starts at address 20 h Port_A ; Variable at address 20 h
Port_B ; Variable at address 21 h RS232temp ; Variable at address 22 h RXchr ; Variable at address 23 h endc ; End of block of variables
;********************************************************************** ORG 0x0000 ; Reset vector
nop
goto main ; Go to beginning of program (label "main") ;********************************************************************** ORG 0x0004 ; Interrupt vector address
movwf w_temp ; Save value of W register
movf STATUS,w ; Save value of STATUS register movwf status_temp
movf PCLATH,w ; Save value of PCLATH register movwf pclath_temp
;********************************************************************** ; This part of the program is executed in interrupt routine banksel PIE1
btfss PIE1, RCIE
goto ISR_Not_RX232int banksel PIE1
btfsc PIR1, RCIF call RX232_int_proc
ISR_Not_RX232int
movf pclath_temp,w
movwf PCLATH ; PCLATH is given its original value
movf status_temp,w
movwf STATUS ; STATUS is given its original value swapf w_temp,f
swapf w_temp,w ; W is given its original value
retfie ; Return from interrupt routine
;********************************************************************** RX232_int_proc ; Check if error has occurred banksel RCSTA
(158)RX232_int_proc_FERR
bcf RCSTA, CREN ; To clear FERR bit, receiver is first ; switched off and on afterwards
nop ; Delay nop
bsf RCSTA, CREN
movf RCREG, w ; Reads receive register and clears FERR bit bsf Port_A, ; Switches LED on ( UART error indicator) movf Port_A, w
movwf PORTA goto RS232_exit
RX232_int_proc_OERR
bcf RCSTA, CREN ; Clears OERR bit nop ; Delay
nop
bsf RCSTA, CREN
movf RCREG, w ; Reads receive register and clears FERR bit bsf Port_A, ; Switches LED on ( UART error indicator) movf Port_A, w
movwf PORTA goto RS232_exit
RX232_int_proc_Cont
movf RCREG, W ; Reads received data movwf RXchr
movwf PORTB
movwf TXREG ; Sends data back to PC
RS232_exit
return ; Return from interrupt routine
;********************************************************************** ; Main program
main
banksel ANSEL ; Selects bank containing ANSEL clrf ANSEL ; All inputs are digital
clrf ANSELH
; Port configuration
banksel TRISA
movlw b'11111100' movwf TRISA movlw b'00000000' movwf TRISB
; Setting initial values
banksel PORTA
movlw b'11111100' movwf PORTA movwf Port_A movlw b'00000000' movwf PORTB movwf Port_B
(159)bcf TRISC, ; RC6/TX/CK = output bsf TRISC, ; RC7/RX/DT = input
banksel BAUDCTL bsf BAUDCTL, BRG16 banksel SPBRG
movlw .51 ; baud rate = 38400
; ( Fosc/(4*(SPBRG+1)) ) Error +0.16% movwf SPBRG
clrf SPBRGH
banksel TXSTA
bcf TXSTA, TX9 ; Data is 8-bit wide
bsf TXSTA, TXEN ; Data transmission enabled bcf TXSTA, SYNC ; Asynchronous mode bsf TXSTA, BRGH ; High-speed Baud rate
banksel RCSTA
bsf RCSTA, SPEN ; RX/DT and TX/CK outputs configuration bcf RCSTA, RX9 ; Select mode for 8-bit data receive bsf RCSTA, CREN ; Receive data enabled
bcf RCSTA, ADDEN ; No address detection, ninth bit may be ; used as parity bit
movf RCSTA, W movf RCREG, W
; Interrupts enabled
banksel PIE1
bsf PIE1, RCIE ; USART Rx interrupt enabled
bsf INTCON, PEIE ; All peripheral interrupts enabled bsf INTCON, GIE ; Global interrupt enabled
; Remain here
goto $
end ; End of program
Phụ lục C: Phát triển hệ thống Làm để bắt đầu làm việc?
vi điều khiển tốt bụng "thần chai" khơng có kiến thức bổ sung cần thiết để sử dụng
Để tạo thiết bị điều khiển vi điều khiển, cần thiết để cung cấp máy tính đơn giản, chương trình để biên soạn thiết bị đơn giản để chuyển mã từ máy tính đến chip
Mặc dù q trình hợp lý, thường có số truy vấn, khơng phải phức tạp, biến thể nhiều Chúng ta nhìn
CHƯƠNG TRÌNH NGƠN NGỮ LẬP HỘI TRONG
(160)phần mềm tùy chỉnh, có nhiều cơng cụ mà cài đặt để hỗ trợ q trình phát triển Một cơng cụ mô Điều cho phép người dùng để kiểm tra mã trước ghi MCU
Để kích hoạt trình biên dịch để thực nhiệm vụ thành cơng, cần có tài liệu có chứa chương trình có phần mở rộng, asm tên nó, ví dụ: Program.asm
Khi chương trình chuyên ngành (MPLAB) sử dụng, phần mở rộng tự động thêm vào Nếu chương trình khác để xử lý văn (Notepad) sử dụng sau văn cần lưu lại đổi tên Ví dụ: Program.txt -> Program.asm
Lưu ý cho người lười biếng: bỏ qua thủ tục này, mở tài liệu asm MPLAB cần chép / dán văn chương trình viết ngơn ngữ lắp ráp
Chương trình biên dịch
Các vi điều khiển không hiểu ngôn ngữ lắp ráp Đây lý cần thiết để biên dịch chương trình sang ngơn ngữ máy.Nó nhiều đơn giản sử dụng chương trình chuyên ngành (MPLAB) trình biên dịch phần phần mềm! Chỉ cần cú nhấp chuột vào biểu tượng thích hợp giải vấn đề tài liệu với Hex mở rộng bật ngồi Nó thực chương trình tương tự, biên dịch sang ngơn ngữ máy tính có vi điều khiển hoàn toàn hiểu tài liệu thường đặt tên "mã thập lục" dường vô nghĩa đại diện cho dãy số hệ thống số thập lục phân
: Trong trường hợp phần mềm cho chương trình viết ngơn ngữ assembly sử dụng, phần mềm đặc biệt để biên soạn chương trình phải cài đặt sử dụng sau: thiết lập trình biên dịch, mở tài liệu có phần mở rộng asm biên dịch Kết là, tài liệu với hex mở rộng Vấn đề mà bạn có bây lưu trữ máy tính bạn.
CHƯƠNG TRÌNH Một vi điều khiển
Để kích hoạt tính "hex mã" truyền cho vi điều khiển cần thiết để cung cấp cáp cho truyền thông nối tiếp thiết bị đặc biệt gọi lập trình với phần mềm thích hợp Có số cách để làm điều
Rất nhiều chương trình mạch điện tử có mục đích tìm thấy Internet Làm sau: tài liệu mở mã hex, thiết lập vài thông số nhấn vào biểu tượng để biên soạn Sau lúc, chuỗi số khơng người lập trình vi điều khiển thông qua cáp kết nối nối tiếp lập trình phần cứng Khơng có khác để thực ngoại trừ việc đặt chip lập trình thiết bị mục tiêu Trong trường hợp cần thiết để thực số thay đổi chương trình, thủ tục trước lặp lặp lại không giới hạn số lần
Đây có phải kết thúc có hậu?
Phần mô tả ngắn gọn việc sử dụng phần mềm lập trình MPLAB phát triển Mikroelektronika Mọi thứ đơn giản
(161)OK Bạn viết chương trình thử nghiệm với mơ Các chương trình khơng báo cáo lỗi trình biên dịch? Có vẻ thứ mà kiểm sốt
Chương trình viết biên soạn thành cơng Tất cịn lại để đổ vào chương trình vi điều khiển Với mục đích cần phải có phần mềm có chương trình viết biên soạn chuyển vào vi điều khiển (PIC Flash chẳng hạn) Bắt đầu lên chương trình
Việc cài đặt đơn giản khơng có nhu cầu giải trình bổ sung (các loại tần số, vi điều khiển dao động đồng hồ, vv.) Kết nối máy tính lập trình thơng qua cáp USB;
(162)Vậy đó! vi điều khiển lập trình tất thứ sẵn sàng cho hoạt động Nếu bạn khơng hài lịng, làm cho số thay đổi chương trình lặp lại thủ tục Cho đến nào? Cho đến bạn cảm thấy hài lòng
Phát triển hệ thống
(163)