2.1.5. Các định danh phần cứng................................................................ 18 2.1.6. Viết các lệnh hợp ngữ trong chương trình....................................... 18 2.2. Các hàm................................................................................................. 19 2.2.1. Xây dựng hàm. ............................................................................... 19 2.2.2. Hàm trong thư viện của trình dịch................................................... 20 2.3. Các lệnh xử lý bit. ................................................................................. 21 3. HOẠT ĐỘNG NGẮT .................................................................................. 23 3.1. Tổ chức ngắt của PIC 18F4520.............................................................. 23 3.2. Các thanh ghi liên quan ......................................................................... 23 3.2.1. Thanh ghi RCON............................................................................ 24 3.2.2. Các thanh ghi điều khiển ngắt INTCON ......................................... 24 3.2.3. Thanh ghi yêu cầu ngắt PIR........................................................... 26 3.2.4. Thanh ghi cho phép ngắt ngoại vi PIE ........................................... 28 3.2.5. Thanh ghi ưu tiên ngắt IPR............................................................. 29 3.3. Khung chương trình sử dụng ngắt.......................................................... 31 4. HOẠT ĐỘNG ĐỊNH THỜI......................................................................... 35 4.1. Timer 0.................................................................................................. 35 4.1.1. Các thanh ghi của Timer0 ............................................................... 35 4.1.2. Chế độ hoạt động của Timer0 ......................................................... 36 4.1.3. Ngắt Timer0. .................................................................................. 37 4.2. Timer1................................................................................................... 37 4.2.1. Các thanh ghi của Timer1 ............................................................... 37 4.2.2. Chế độ hoạt động của Timer1 ............2.1.5. Các định danh phần cứng................................................................ 18 2.1.6. Viết các lệnh hợp ngữ trong chương trình....................................... 18 2.2. Các hàm................................................................................................. 19 2.2.1. Xây dựng hàm. ............................................................................... 19 2.2.2. Hàm trong thư viện của trình dịch................................................... 20 2.3. Các lệnh xử lý bit. ................................................................................. 21 3. HOẠT ĐỘNG NGẮT .................................................................................. 23 3.1. Tổ chức ngắt của PIC 18F4520.............................................................. 23 3.2. Các thanh ghi liên quan ......................................................................... 23 3.2.1. Thanh ghi RCON............................................................................ 24 3.2.2. Các thanh ghi điều khiển ngắt INTCON ......................................... 24 3.2.3. Thanh ghi yêu cầu ngắt PIR........................................................... 26 3.2.4. Thanh ghi cho phép ngắt ngoại vi PIE ........................................... 28 3.2.5. Thanh ghi ưu tiên ngắt IPR............................................................. 29 3.3. Khung chương trình sử dụng ngắt.......................................................... 31 4. HOẠT ĐỘNG ĐỊNH THỜI......................................................................... 35 4.1. Timer 0.................................................................................................. 35 4.1.1. Các thanh ghi của Timer0 ............................................................... 35 4.1.2. Chế độ hoạt động của Timer0 ......................................................... 36 4.1.3. Ngắt Timer0. .................................................................................. 37 4.2. Timer1................................................................................................... 37 4.2.1. Các thanh ghi của Timer1 ............................................................... 37 4.2.2. Chế độ hoạt động của Timer1 ............2.1.5. Các định danh phần cứng................................................................ 18 2.1.6. Viết các lệnh hợp ngữ trong chương trình....................................... 18 2.2. Các hàm................................................................................................. 19 2.2.1. Xây dựng hàm. ............................................................................... 19 2.2.2. Hàm trong thư viện của trình dịch................................................... 20 2.3. Các lệnh xử lý bit. ................................................................................. 21 3. HOẠT ĐỘNG NGẮT .................................................................................. 23 3.1. Tổ chức ngắt của PIC 18F4520.............................................................. 23 3.2. Các thanh ghi liên quan ......................................................................... 23 3.2.1. Thanh ghi RCON............................................................................ 24 3.2.2. Các thanh ghi điều khiển ngắt INTCON ......................................... 24 3.2.3. Thanh ghi yêu cầu ngắt PIR........................................................... 26 3.2.4. Thanh ghi cho phép ngắt ngoại vi PIE ........................................... 28 3.2.5. Thanh ghi ưu tiên ngắt IPR............................................................. 29 3.3. Khung chương trình sử dụng ngắt.......................................................... 31 4. HOẠT ĐỘNG ĐỊNH THỜI......................................................................... 35 4.1. Timer 0.................................................................................................. 35 4.1.1. Các thanh ghi của Timer0 ............................................................... 35 4.1.2. Chế độ hoạt động của Timer0 ......................................................... 36 4.1.3. Ngắt Timer0. .................................................................................. 37 4.2. Timer1................................................................................................... 37 4.2.1. Các thanh ghi của Timer1 ............................................................... 37 4.2.2. Chế độ hoạt động của Timer1 ............2.1.5. Các định danh phần cứng................................................................ 18 2.1.6. Viết các lệnh hợp ngữ trong chương trình....................................... 18 2.2. Các hàm................................................................................................. 19 2.2.1. Xây dựng hàm. ............................................................................... 19 2.2.2. Hàm trong thư viện của trình dịch................................................... 20 2.3. Các lệnh xử lý bit. ................................................................................. 21 3. HOẠT ĐỘNG NGẮT .................................................................................. 23 3.1. Tổ chức ngắt của PIC 18F4520.............................................................. 23 3.2. Các thanh ghi liên quan ......................................................................... 23 3.2.1. Thanh ghi RCON............................................................................ 24 3.2.2. Các thanh ghi điều khiển ngắt INTCON ......................................... 24 3.2.3. Thanh ghi yêu cầu ngắt PIR........................................................... 26 3.2.4. Thanh ghi cho phép ngắt ngoại vi PIE ........................................... 28 3.2.5. Thanh ghi ưu tiên ngắt IPR............................................................. 29 3.3. Khung chương trình sử dụng ngắt.......................................................... 31 4. HOẠT ĐỘNG ĐỊNH THỜI......................................................................... 35 4.1. Timer 0.................................................................................................. 35 4.1.1. Các thanh ghi của Timer0 ............................................................... 35 4.1.2. Chế độ hoạt động của Timer0 ......................................................... 36 4.1.3. Ngắt Timer0. .................................................................................. 37 4.2. Timer1................................................................................................... 37 4.2.1. Các thanh ghi của Timer1 ............................................................... 37 4.2.2. Chế độ hoạt động của Timer1 ............
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA ĐIỆN TỬ Tài liệu VI ĐIỀU KHIỂN PIC (Dùng cho HS-SV tra cứu trong trình thực hành, thi, kiểm tra môn học Vi điều khiển) Mục lục Mục lục PHẦN CỨNG CỦA PIC 18F4520 1.1 Sơ đồ chân 1.2 Tổ chức nhớ 1.3 Các ghi EEPROM 1.4 Các ghi phát xung 1.5 Các ghi hoạt động Reset 12 1.6 Hoạt động vào/ra 14 1.7 Lệnh điều khiển vào/ra theo byte theo bit 15 NGƠN NGỮ LẬP TRÌNH VÀ TRÌNH DỊCH 16 2.1 Khung chương trình viết cho vi điều khiển 16 2.1.1 Hằng số 16 2.1.2 Biến 17 2.1.3 Lưu trữ đối tượng nhớ 17 2.1.4 Con trỏ 18 2.1.5 Các định danh phần cứng 18 2.1.6 Viết lệnh hợp ngữ chương trình 18 2.2 Các hàm 19 2.2.1 Xây dựng hàm 19 2.2.2 Hàm thư viện trình dịch 20 2.3 Các lệnh xử lý bit 21 HOẠT ĐỘNG NGẮT 23 3.1 Tổ chức ngắt PIC 18F4520 23 3.2 Các ghi liên quan 23 3.2.1 Thanh ghi RCON 24 3.2.2 Các ghi điều khiển ngắt INTCON 24 3.2.3 Thanh ghi yêu cầu ngắt PIR 26 3.2.4 Thanh ghi cho phép ngắt ngoại vi PIE 28 3.2.5 Thanh ghi ưu tiên ngắt IPR 29 3.3 Khung chương trình sử dụng ngắt 31 HOẠT ĐỘNG ĐỊNH THỜI 35 4.1 Timer 35 4.1.1 Các ghi Timer0 35 4.1.2 Chế độ hoạt động Timer0 36 4.1.3 Ngắt Timer0 37 4.2 Timer1 37 4.2.1 Các ghi Timer1 37 4.2.2 Chế độ hoạt động Timer1 38 4.2.3 Ngắt Timer1 40 4.3 Timer2 40 4.3.1 Các ghi Timer2 40 4.3.2 Chế độ hoạt động Timer2 41 4.3.3 Ngắt Timer2 41 4.4 Timer3 41 4.4.1 Các ghi Timer3 41 4.4.2 Chế độ hoạt động Timer3 43 4.4.3 Ngắt Timer3 43 ĐIỀU CHẾ ĐỘ RỘNG XUNG – PWM 44 5.1 Sơ đồ khối PWM 44 5.2 Các ghi liên quan 44 5.3 Sử dụng PWM 45 Thiết lập chu kỳ 45 Thiết lập độ rộng xung dương 45 5.4 Các hàm thư viện pwm.h 46 BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC) 47 6.1 Sơ đồ khối ADC PIC18F4520 47 6.2 Các ghi liên quan 47 6.4 Các bước lập trình chuyển đổi A/D 50 6.5 Các hàm thư viện adc.h 51 TRUYỀN THÔNG NỐI TIẾP QUA USART 56 7.1 Các ghi liên quan 56 7.2 Tốc độ baud 59 7.3 Chế độ không đồng 61 7.5 Một số hàm thông dụng thư viện usart.h 64 Phụ lục Màn hình tinh thể lỏng –LCD 67 PHẦN CỨNG CỦA PIC 18F4520 1.1 Sơ đồ chân 1.2 Tổ chức nhớ Sơ đồ tổ chức nhớ chương trình ngăn xếp Sơ đồ tổ chức nhớ liệu RAM Phân bổ địa ghi chức đặc biệt SFR 1.3 Các ghi EEPROM - Thanh ghi điều khiển EEPROM : EECON1 Ghi chú: R = Cho phép đọc -n = Reset - POR S = Bit thiết lập (không xóa phần mềm) W = Cho phép ghi U = Không sử dụng, đọc ‘0’ ‘1’ = Được thiết lập ‘0’ = Được xóa -x = Reset không xác định bit EEPGD: Bit lựa chọn nhớ liệu EEPROM hay nhớ chương trình Flash = Truy cập nhớ chương trình Flash = Truy cập nhớ liệu EEPROM bit EEPROM CFGS: Bit lựa chọn cấu hình nhớ chương trình Flash/dữ liệu = Truy cập ghi cấu hình = Truy cập nhớ chương trình Flash liệu EEPROM bit Khơng sử dụng, đọc trả giá trị ‘0’ bit FREE: Bit cho phép xóa hàng nhớ Flash = Xóa hàng nhớ chương trình thiết lập, địa chứa ghi TBLPTR, xóa từ lệnh WR kê tiếp = Chỉ thực ghi bit EEPROM WRERR: Bit cờ lỗi nhớ chương trình Flash/ nhớ liệu = Lỗi hoạt động ghi (hoạt động ghi bị kết thúc trước) = Ghi hoàn thành bit EEPROM WREN: Bit cho phép ghi nhớ chương trình Flash / Dữ liệu = Cho phép ghi vào nhớ chương trình Flash /dữ liệu EEPROM = Không cho phép ghi bit WR: Bit điều khiển ghi = Khởi tạo q trình xóa/ghi nhớ liệu EEPROM xóa nhớ chương trình ghi nhớ chương trình (Được xóa phần cứng việc ghi hồn thành Thiết lập phần mềm khơng xóa) = Q trình ghi hồn bit RD: Bit điều khiển đọc = Khởi tạo trình đọc nhớ EEPROM ( Đọc chu kỳ máy Bit RD xóa phần cứng Thiết lập phần mềm khơng xóa Bit RD không thiết lập EEPGD = CFGS = 1.) = Khơng khởi tạo q trình đọc EEPROM - Thanh ghi điều khiển EEPROM : EECON2 Thanh ghi EECON2 khơng phải vật lý, dành riêng cho việc ghi xóa nhớ Đọc EECON2 ‘0’ - Thanh ghi liệu EEPROM: EEDATA Thanh ghi EEDATA có bit, ghi đệm liệu cho nhớ liệu EEPROM, sử dụng để truy cập vào liệu nhớ (Cho phép đọc ghi phần mềm, nhớ EEPROM có bit) - Thanh ghi địa EEPROM: EEADR Thanh ghi EEADR có bit, ghi địa nhớ liệu EEPROM bit ghi EEADR sử dụng để địa hóa 256 nhớ EEPROM từ 00h đến FFh 1.4 Các ghi phát xung - Thanh ghi chuyển chế độ phát xung : OSCTUNE Ghi chú: R = Cho phép đọc -n = Reset - POR W = Cho phép ghi ‘1’ = Được thiết lập U = Không sử dụng, đọc ‘0’ ‘0’ = Được xóa -x = Reset không xác định bit INTSRC: Bit lựa chọn nguồn xung nội tần số thấp = Chọn tần số 31.25 kHz từ chia tần Postscaler (8 MHz INTOSC chia 256) = Chọn tần số 31 kHz từ dao động nội INTRC bit PLLEN: Bit lựa chọn nhân PLL cho chế độ INTOSC = Cho phép xung từ INTOSC qua nhân tần số PLL (chỉ sử dụng với tần số MHz MHz) = Không cho phép PLL bit Không sử dụng: Đọc ‘0’ bit 4-0 TUN4:TUN0: Bit chuyển chế độ tần số 01111 = Tần số Max 00001 00000 = Tần số trung bình Bộ phát xung hoạt động tần số hiệu chuẩn 11111 10000 = Tần số Min - Thanh ghi điều khiển phát xung OSCCON bit IDLEN: Bit cho phép chế độ Idle = Chuyển sang chế độ Idle lệnh SLEEP = Chuyển sang chế độ Sleep lệnh SLEEP bit 6-4 IRCF2:IRCF0: Các bit lựa chọn hệ số chia phát cung nội INTOSC 111 = MHz (xung trực tiếp từ INTOSC) 110 = MHz 101 = MHz 100 = MHz (tần số mặc định Reset) 011 = 500 kHz 010 = 250 kHz 001 = 125 kHz 000 = 31 kHz (xung từ INTOSC/256 trực tiếp từ INTRC) bit OSTS: Bit trạng thái bộ định thời khởi động (Oscillator Start-up Timer) = Kết thúc thời gian chờ khởi động từ OST; phát xung hoạt động = Đang đếm thời gian khởi động; phát xung chưa hoạt động bit IOFS: Bit báo ổn định tín hiệu phát xung nội INTOSC = Bộ phát xung nội INTOSC trạng thái ổn định = Bộ phát xung nội INTOSC chưa ổn định bit 1-0 SCS1:SCS0: Bit lựa chọn nguồn xung cho hệ thống 1x = Nguồn hệ thống từ dao động nội 01 = Nguồn xung phụ, nối qua chân Timer1(Secondary oscillator) 00 = Nguồn xung qua chân OSC1, OSC2 (Primary oscillator) - Thanh ghi cấu hình byte cao: CONFIG1H bit IESO: Bit cho phép luân phiên phát xung nội/ngoại = Cho phép = Không cho phép bit FCMEN: Bit cho phép chế độ quản lý an toàn phát xung (Fail-Safe Clock Monitor) = Cho phép = Không cho phép bit 5-4 không sử dụng: đọc ‘0’ 10 bit FERR: Bit báo lỗi khung truyền/nhận = Khung bị lỗi (có thể xóa đọc ghi RCREG nhận byte hợp lệ kế tiếp) = Không xảy lỗi khung bit OERR: Bit lỗi tràn = Lỗi tràn (có thể xóa xóa bit CREN) = Khơng xảy lỗi tràn bit RX9D: Bit nhận liệu thứ Có thể chứa bit địa chỉ/dữ liệu bit chẵn lẻ tính tốn xử lý theo chương trình người sử dụng - Thanh ghi điều khiển tốc độ baud (BAUDCON) R/W-0 ABDOVF bit R-1 RCIDL R/W-0 RXDTP R/W-0 TXCKP R/W-0 BRG16 U-0 — R/W-0 WUE R/W-0 ABDEN bit bit ABDOVF: Bit trạng thái tự động điều chỉnh tốc độ baud = Tốc độ baud từ BRG điều chỉnh chế độ phát tốc độ baud tự động (bit phải xóa phần mềm) = Khơng phát điều chỉnh tốc độ BRG bit RCIDL: Bit trạng thái nghỉ (Idle) hoạt động nhận = Hoạt động nhận trạng thái nghỉ (Idle) = Hoạt động nhận trạnh thái hoạt động (Active) bit RXDTP: Bit lưa chọn phân cực Dữ liệu/Nhận Chế độ không đồng bộ: = Nhận liệu (RX) đảo ngược (tích cực thấp) = Nhận liệu (RX) khơng đảo ngược (tích cực cao) Chế độ đồng bộ: = Dữ liệu (DT) đảo ngược (tích cực thấp) = Dữ liệu (DT) khơng đảo ngược (tích cực cao) bit TXCKP: Bit lựa chọn phân cực xung clock liệu Chế độ không đồng bộ: = Trạng thái nghỉ (Idle) hoạt động truyền (TX) thiết lập mức thấp = Trạng thái nghỉ (Idle) hoạt động truyền (TX) thiết lập mức cao Chế độ đồng bộ: = Trạng thái nghỉ (Idle) hoạt động phát xung clock (CK) thiết lập mức cao = Trạng thái nghỉ (Idle) hoạt động phát xung clock (CK) thiết lập mức thấp bit BRG16: Bit cho phép ghi tốc độ baud 16-Bit 58 = Bộ phát tốc độ baud 16-bit, gồm hai ghi SPBRGH SPBRG = Bộ phát tốc độ baud 8-bit, sử dụng ghi SPBRG, bỏ qua ghi SPBRGH bit Không sử dụng: Đọc ‘0’ bit WUE: Bit cho phep đánh thức (Wake-up) Chế độ không đồng bộ: = EUSART tiếp tục lấy mẫu chân RX – ngắt phát sinh sườn âm; bit xóa phần cứng sau có sườn dương = Chân RX khơng giám sát phát sườn Chế độ đồng bộ: Không sử dụng chế độ bit ABDEN: Bit cho phép phát tốc độ baud tự động Chế độ không đồng bộ: = Cho phép đo tốc độ baud ký tự Bit xóa phần cứng lúc hồn thành = Khơng cho phép hoạt động đo tốc độ baud hoàn Chế độ đồng bộ: Không sử dụng chế độ 7.2 Tốc độ baud Bộ tạo tốc độ baud BRG (Baud Rate Generator) hoạt động chế độ bit 16 bit, hỗ trợ chế độ đồng không đồng EUSART Ở chế độ mặc định, BGR hoạt động chế độ bit Chế độ BGR 16 bit lựa chọn bit BAUDCON thiết lập Hai ghi SPBRGH:SPBRG sử dụng để điều khiển chu kỳ xung tốc độ baud Trong chế độ không đồng bộ, hai bit BRGH(TXSTA) BRG16(BAUDCON) sử dụng để điều khiển tốc độ baud Trong chế độ đồng bộ, bit BRGH không sử dụng - Lựa chọn chế độ cơng cơng thức tính tốc độ baud: Cấu hình bit Chế độ BRG/EUSART Cơng thức tốc độ baud SYNC 0 BRG16 0 BRGH 8-Bit/Không đồng 8-Bit/Không đồng FOSC/[64 (n + 1)] 16-Bit/Không đồng 1 16-Bit/Không đồng x 8-Bit/Đồng 1 x 16-Bit/Đồng FOSC/[16 (n + 1)] FOSC/[4 (n + 1)] Ghi chú: x = Giá trị n = Giá trị cặp ghi SPBRGH:SPBRG 59 60 Các ghi liên quan đến điều chỉnh tốc độ baud (BRG): Tên Bit Bit Bit Bit Bit Bit Bit Bit TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D RCIDL RXDTP TXCKP BRG16 — WUE ABDEN BAUDCON ABDOVF SPBRGH EUSART Thanh ghi tạo tốc độ baud byte cao SPBRG EUSART Thanh ghi tạo tốc độ baud byte cao Ghi chú: — Không sử dụng, đọc ‘0’ Các ô tô màu không sử dụng BRG 7.3 Chế độ không đồng Truyền EUSART chế độ không đồng Thanh ghi TSR (Transmit (Serial) Shift Register) sử dụng để dịch bit liệu nối tiếp từ bit trọng số thấp nhấp LSb đến bit có trọng số cao MSb chân TX Thanh ghi TSR không cho phép đọc/ghi phần mềm Thanh ghi TXREG sử dụng để đệm liệu cho ghi TSR Dữ liệu cần truyền nạp vào ghi TXREG, sau liệu nạp tự động từ TXREG sang TSR Thanh ghi TSR chưa nạp liệu bit Dừng (Stop) trước chưa truyền Ngay sau bit Dừng truyền liệu nạp vào TRS (nếu có liệu TXREG) Ngay sau liệu nạp từ TXREG sang TSR (trong chu kỳ máy), ghi TXREG rỗng cờ ngắt truyền TXIF (PIR1) thiết lập (=1) Bit TXIF sử dụng để biết trạng thái ghi TXREG, bit TRMT (TXSTA) sử dụng để biết trạng thái ghi TSR Bit TRMT phép đọc, thiết lập TSR rỗng Hoạt động ngắt khơng gắn liền với bit này, sử dụng để báo trạng thái rỗng ghi TSR Các bước để truyền liệu chế độ không đồng bộ: Bước Khởi tạo giá trị cho cặp ghi SPBRGH:SPBRG, thiết lập xóa bit BRGH BRG16 để đạt tốc độ truyền mong muốn (theo bảng chế độ cơng thức tính tốc độ baud) Bước Xóa bit SYNC (TXSTA) phép chế độ không đồng thiết lập bit SPEN (RCSTA) phép PORT nối tiếp Bước Nếu muốn sử dụng ngắt cần phải thiết lập bit TXIE Bước Để thiết lập khung truyền 9-bit cần thiết lập bit TX9 (TXSTA) Khi bit-9 sử dụng để chứa địa chỉ/dữ liệu bit kiểm tra chẵn lẻ Bước Cho phép truyền liệu bit TXEN Bước Nếu khung truyền bit lựa chọn, bit thứ cần nạp vào TX9D 61 Bước Nạp liệu cần truyền vào ghi TXREG (quá trình truyền liệu bắt đầu) Bước Nếu sử dụng ngắt, cần chắn bit GIE PEIE ghi INTCON (INTCON) thiết lập Sơ đồ khối hoạt động truyền EUSART chế độ không đồng bộ: Các ghi liên quan đến hoạt động truyền không đồng bộ: Name Bit Bit Bit Bit Bit Bit Bit PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF PIR1 GIE/GIEH PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D TXREG Thanh ghi truyền liệu EUSART TXSTA CSRC BAUDCON ABDOVF SPBRGH Thanh ghi tạo tốc độ baud byte cao EUSART SPBRG Thanh ghi tạo tốc độ baud thấp cao EUSART INTCON Bit TX9 TXEN SYNC SENDB BRGH TRMT TX9D RCIDL RXDTP TXCKP BRG16 — WUE ABDEN Nhận EUSART chế độ không đồng Sơ đồ khối hoạt động nhận chế độ bất động thể hình 8.2 Dữ liệu nhận qua chân RX khối phục hồi liệu Chế độ thường sử hệ thống truyền thông RS-232 62 Hình 8.4 Sơ đồ khối nhận liệu EUSART chế độ không đồng Các bước để truyền liệu chế độ không đồng bộ: Bước Khởi tạo giá trị cho cặp ghi SPBRGH:SPBRG, thiết lập xóa bit BRGH BRG16 để đạt tốc độ truyền mong muốn (theo bảng chế độ cơng thức tính tốc độ baud) Bước Xóa bit SYNC (TXSTA) phép chế độ không đồng thiết lập bit SPEN (RCSTA) phép PORT nối tiếp Bước Nếu sử dụng ngắt cần phải thiết lập bit RCIE Bước Để cho phép nhận bit thứ cần phải thiết lập bit RX9(RCSTA) Bước Thiết lập bit CREN phép hoạt động nhận Bước Bit cờ ngắt RCIF thiết lập hoạt động nhận hoàn thành, ngắt xảy bit cho phép ngắt RCIE thiết lập trước Bước Đọc bit RX9D(RCSTA) để có bit thứ (nếu khung truyền bit cho phép), vào bit thứ để phát lỗi khung truyền Bước Đọc bit liệu nhận ghi RCREG Bước Nếu phát liệu nhận bị lỗi, xóa lỗi cách xóa bit cho phép nhận CREN Bước 10 Nếu sử dụng ngắt, cần chắn bit GIE PEIE ghi INTCON (INTCON) thiết lập Các ghi liên quan đến chế độ nhận không đồng bộ: Name Bit Bit Bit Bit Bit Bit Bit Bit PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF PIR1 GIE/GIEH PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE INTCON 63 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP SPEN RX9 SREN CREN ADDEN FERR OERR RX9D RCSTA Thanh ghi nhận liệu EUSART RCREG CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D BAUDCON ABDOVF RCIDL RXDTP TXCKP BRG16 — WUE ABDEN SPBRGH Thanh ghi tạo tốc độ baud byte cao EUSART SPBRG Thanh ghi tạo tốc độ baud byte thấp EUSART TXSTA 7.5 Một số hàm thông dụng thư viện usart.h Hàm BusyUSART CloseUSART Mô tả Hàm báo bận hoạt động truyền nối tiếp Cấm USART OpenUSART Cấu hình PORT nối tiếp putsUSART ReadUSART WriteUSART Truyền mảng PORT USART Đọc byte từ PORT USART Truyền byte PORT USART • Hàm : BusyUSART Chức : Nguyên mẫu : Chú thích : Giá trị trả : Hàm báo bận hoạt động truyền nối tiếp char BusyUSART( void ); Sử dụng để báo trạng thái truyền PORT nối tiếp Bằng nếu hoạt động truyền trạng thái nghỉ Bằng truyền Ví dụ: while (BusyUSART()); • Hàm : OpenUSART Chức : Cấu hình cho PORT nối tiếp Nguyên mẫu : void OpenUSART( unsigned char config, unsigned int spbrg); Các đối số: “config”: dùng thiết lập thông số sau cho USART (các thông số thiết lập đồng thời tốn tử “&”): Thông số 1: USART_TX_INT_ON: cho phép ngắt truyền USART_TX_INT_OFF: cấm ngắt truyền Thông số 2: USART_RX_INT_ON: cho phép ngắt nhận USART_RX_INT_OFF: cấm ngắt nhận 64 Thông số 2: USART_ASYNCH_MODE: Chọn chế độ cận đồng (Asynchronous Mode) USART_SYNCH_MODE: Chọn chế độ đồng (Synchronous Mode) Thông số 3: USART_EIGHT_BIT: Chọn chế độ truyền/nhận bit (8-bit transmit/receive) USART_NINE_BIT: Chọn chế độ truyền/nhận bit (9-bit transmit/receive) Thông số 4: USART_SYNC_SLAVE: Chọn chế độ tớ (Synchronous Slave mode) USART_SYNC_MASTER: Chọn chế độ chủ (Synchronous Master mode) Thông số 5: USART_SINGLE_RX: Chọn chế độ nhận byte (Single reception) USART_CONT_RX: Chọn chế độ nhận liên tục byte (Continuous reception) Thông số 6: USART_BRGH_HIGH: Chọn tốc độ baud cao (High baud rate) USART_BRGH_LOW: Chọn tốc độ baud thấp (Low baud rate) “spbrg”: dùng để đặt tốc độ baud, tốc độ baud tính sau: - Với chế độ cận đồng bộ, tốc độ baud cao (Asynchronous mode, high speed): Tốc độ baud=Fosc/ (16 * (spbrg+ 1)) - Với chế độ cận đồng bộ, tốc độ baud thấp (Asynchronous mode, low speed): Tốc độ baud=Fosc/ (64 * (spbrg+ 1)) Với chế độ đồng (Synchronous mode): Tốc độ baud=Fosc/ (4 * (spbrg+ 1)) Chú thích : Sử dụng để đặt thơng số USART • Hàm : CloseUSART Chức : Ngun mẫu : Chú thích : Đóng (cấm) USART void CloseUSART( void ); Hàm gọi không sử dụng USART Ví dụ: CloseUSART(); • Hàm : WriteUSART Chức : Nguyên mẫu : Chú thích : Ghi byte vào đệm truyền USART void WriteUSART( char data); Hàm sử dụng để truyền byte Ví dụ: WriteUSART( 0x41); //truyền ký tự A 65 • Hàm : ReadUSART Chức : Nguyên mẫu : Chú thích : Nhận byte từ đệm nhận USART char ReadUSART( void ); Hàm sử dụng để nhận byte Ví dụ: char x; x= ReadUSART(); • Hàm : putsUSART Chức : Nguyên mẫu : Chú thích : Nhận byte từ đệm nhận USART char ReadUSART( void ); Hàm sử dụng để nhận byte Ví dụ: char x; x= ReadUSART(); 66 Phụ lục Màn hình tinh thể lỏng –LCD Các mô-đun LCD hiển thị ký tự thiết kế dựa điều khiển HD44780 Hitachi, loại LCD 16x2 ký tự gồm 14 chân, ý nghĩa chân sau: Chân số Ký hiệu Mức logic I/O Vss Vcc Vee RS 0/1 I I R/W 0/1 I 10 11 12 13 14 E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 1, 1->0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 I I/O I/O I/O I/O I/O I/O I/O I/O Chức Nguồn cung cấp (GND) Nguồn cung cấp (+5V) Điện áp vào để điều chỉnh độ tương phản Lựa chọn ghi = Thanh ghi lệnh = Thanh ghi liệu = Ghi vào LCD module = Đọc từ LCD module Tín hiệu cho phép Bus liệu, bit (LSB) Bus liệu, bit Bus liệu, bit Bus liệu, bit Bus liệu, bit Bus liệu, bit Bus liệu, bit Bus liệu, bit (MSB) Điều khiển hiển thị ký tự LCD thực chất gửi mã lệnh tới điều khiển HD44780, mã lệnh liệt kê sau: 67 Mã lệnh Thời gian TT Lệnh Mô tả thi RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 hành Start 0 0 0 0 1 Đưa LCD chế 1.64 độ “bắt đầu” mS Cấu 0 0 DL N F 0 Thiết lập độ dài 40µS hình bus liệu, số LCD dòng kích thước font chữ Thiết 0 0 0 I/D S Thiết lập hướng 40µS lập chế dịch trỏ(I/D), độ hiển hướng hiển thị (S) thị Bật/Tắt 0 0 0 D C B -Bật/Tắt ký tự 40µS hiển thị hiển thị (D); -Bật/Tắt trỏ (C); -Bật/Tắt chế độ nhấp nháy trỏ (B) Dịch 0 0 S/C R/L * * Thiết lập chiều 40µS dịch chuyển trỏ/hiển trỏ hiển thị thị Xóa 0 0 0 0 Xóa hình, đưa 1.64 trỏ vị trí đầu mS hình (address 0) Thiết 0 40µS lập vị address trí trỏ Hiển Ghi liệu vào 40µS thị ký Mã ký tự cần hiển thị DDRAM tự Ghi chú: - DDRAM (Display Data RAM) : Chứa liệu cần hiển thị (mã ASCII ký tự); địa DDRAM tương ứng với vị trí trỏ hình - Các bit/byte viết tắt mã lệnh: 68 TT Tên Mơ tả I/D 0: Giảm vị trí trỏ (lùi) 1: Tăng vị trí trỏ (tiến) S 0: Không dịch chuyển hiển thị 1: Dịch chuyển hiển thị D 0: Tắt hiển thị 1: Bật hiển thị C 0: Tắt trỏ 1: Bật trỏ B 0: Con trỏ không nhấp nháy 1: Con trỏ nhấp nháy S/C 0: Di chuyển trỏ 1: Dịch chuyển hiển thị R/L 0: Dịch trái 1: Dịch phải DL 0: Chế độ 4-bit liệu 1: Chế độ 8-bit liệu N 0= dòng 1= dòng 10 F 0: Font chữ 5x7 1: Font chữ 5x10 11 address 80(H)÷8F(H): đầu dòng thứ C0(H)÷CF(H): đầu dòng thứ hai đến cuối dòng thứ đến cuối dòng thứ hai Giản đồ thời gian mơ tả q trình ghi lệnh ghi liệu vào DDRAM (hiển thị ký tự) sau: Ghi liệu Ghi lệnh Căn cứu giản đồ thời gian mơ tả q trình ghi lệnh ghi liệu, trình ghi mã lệnh bao gồm bước sau: Đặt chân RS, R/W mức thấp; chân E mức cao Xuất mã lệnh cần ghi lên bus DB0÷DB7 Đặt chân E mức thấp Quá trình ghi liệu vào DDRAM (hiển thị ký tự) bao gồm bước sau: Đặt chân R/W mức thấp; chân RS, chân E mức cao Xuất mã ký tự cần hiển thị lên bus DB0÷DB7 Đặt chân E mức thấp Nguyên tắc hiển thị ký tự LCD: Một chương trình hiển thị ký tự LCD theo bốn bước sau: Xố tồn hình 69 Đặt chế độ hiển thị Đặt vị trí trỏ (Nơi bắt đầu ký tự hiển thị) Hiển thị ký tự Ví dụ: // Buoc 1: xoa man hinh Lcd_Write_Command(0x01); // Lcd_Write_Command:Hàm //ghi lệnh cho LCD // Buoc 2: Dat che hien thi //(1)dua LCD ve che "bat dau" Lcd_Write_Command(0x03); // (2)Cau hinh LCD: // - DL=1: 8-bit du lieu // - N=1: LCD hien thi tren dong // - F=0: Font chữ gom 5x7 diem (dot) Lcd_Write_Command(0x38); // (3)Thiet lap che hien thi: // - I/D=1: Vi tri tro tang (hien thi tu trai qua phai) // - S=0: Khong hien thi dich (cac ky tu khong dich chuyen) Lcd_Write_Command(0x06); // (4)Bat/Tat hien thi: // - D=1: Bat hien thi (hien thi lien tuc-khong nhap nhay) // - B=0: Con tro khong nhap nhay // - C=0: Tat tro (khong hien thi tro tren LCD) Lcd_Write_Command(0x0c); //Buoc 3: Dat vi tri hien thi Lcd_Write_Command(0XC0); // dau dong thu //Buoc 4: Hien thi ky tu Lcd_Write_Data(0x41); // hien thi A // Lcd_Write_Data: Hàm ghi // liệu vào DDRAM Chú ý: - Các bước 3, lặp lại nhiều lần cần hiển thị nhiều ký tự - Khi thực ghi lệnh ghi liệu hiển thị lên LCD cần lưu ý đến thời gian thi hành lệnh điều khiển HD44780 Ví dụ sau xố hình tối thiểu 1.64 mS sau lệnh khác 70 - Chế độ hiển thị mặc định hiển thị dịch, vị trí trỏ mặc định đầu dòng thứ 71 72 ... việc ghi xóa nhớ Đọc EECON2 ‘0’ - Thanh ghi liệu EEPROM: EEDATA Thanh ghi EEDATA có bit, ghi đệm liệu cho nhớ liệu EEPROM, sử dụng để truy cập vào liệu nhớ (Cho phép đọc ghi phần mềm, ô nhớ EEPROM... nhớ liệu = Lỗi hoạt động ghi (hoạt động ghi bị kết thúc trước) = Ghi hoàn thành bit EEPROM WREN: Bit cho phép ghi nhớ chương trình Flash / Dữ liệu = Cho phép ghi vào nhớ chương trình Flash /dữ liệu. .. lựa chọn nhớ liệu EEPROM hay nhớ chương trình Flash = Truy cập nhớ chương trình Flash = Truy cập nhớ liệu EEPROM bit EEPROM CFGS: Bit lựa chọn cấu hình nhớ chương trình Flash/dữ liệu = Truy cập