Tài liệu Vi điều khiển PIC dòng PIC18 bằng HTPIC doc

5 552 2
Tài liệu Vi điều khiển PIC dòng PIC18 bằng HTPIC doc

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

Thông tin tài liệu

• Đây là thư viện viết cho vi điều khiển PIC dòng PIC18 bằng HTPIC. Thư viện được tạo dựa vào Datasheet của PIC18. Đã test với PIC18F4680, PIC18F4431 File Header: UART.h // UART.h //============================ #ifndef _UART_H #define _UART_H //============================= #include "pic18.h" #include "sysdef.h" //============================= // Declare sosme functions void UART_Init(unsigned int BaudRate); // Initialize for UART void UART_PrChar(unsigned char a); void UART_PrString(const char* str); unsigned char UART_Read(void); // Read data from UART Port void UART_detectBaudRate(void); // Auto detect baud rate #endif Giải thích các hàm: o UART_Init: Khởi tạo module giao tiếp UART, tham số là tốc độ truyền BaudRate. dụ: UART_Init(9600) o UART_PrChar: Gửi một kí tự ra cổng RS232. dụ: char x = ‘a’; UART_PrChar(x); o UART_PrString(const char* str): gửi 1 xâu kí tự ra cổng RS232. dụ: UART_PrString(”Anh yeu em”); o unsigned char UART_Read(void) : Đọc 1 byte từ cổng COM o UART_detectBaudRate(void): Tự động xác định tốc độ baudrate được truyền xuống PIC18, Master phải truyền kí tự ‘U’ để PIC18 tự xác định và thiết lập tốc độ (cái này có trong datasheet nhá ) File thực thi: UART.c // UART.C # include "UART.h" # include "pic18.h" # include "sysdef.h" // Initialize UART void UART_Init(unsigned int BaudRate){ unsigned int n; // Configure BaudRate BRGH = 0; // Low speed. BRG16 = 1; // 16-Bit Baud Rate Generator - SPBRGH and SPBRG // Baudrate = Fosc/[16(n+1)] =&gt; n = ((Fosc/Baudrate)&gt;&gt;4) - 1; n = SPBRGH: SPBRG; n = ((Fosc/BaudRate)&gt;&gt;4) - 1; SPBRG = n; SPBRGH = n&gt;&gt;8; // Enable the asyncchronous serial port. SYNC = 0 ; // Asynchronous mode SPEN = 1; // Serial port enable. TRIS_TX = 0; TRIS_RX = 1; //Configure for Transmitter mode. TXEN = 1; // Transmit enable //Configure for Receiver mode CREN = 1; // Enable the reception //Interrupt RCIF = 0; RCIE = 1; // Reception Interrupt Enable GIE = 1; // Global Interrupt Enable PEIE = 1; // Perapheral Interrupt Enable } //=========================== void UART_PrChar(unsigned char a){ while(!TRMT); TXREG = a; } //==================================== void UART_PrString(const char* str){ while(*str) UART_PrChar(*str ++);} //================================================= unsigned char UART_Read(void){ return (RCREG); } //=============================================== void UART_detectBaudRate(void){ TXSTA = 0b00100100; RCSTA = 0b10010000; #if defined(_18F4680) BAUDCON = 0b00001001; #endif #if defined(_18F4431) BAUDCTL = 0b00001001; #endif while(ABDEN){ #if defined(_18F4680) if(ABDOVF == 1) ABDOVF = 0; #endif }; } Tất cả tham số của bộ UART được định nghĩa trong SysDef.h của mình: // SysDef.h // // System Defination for specific IC // #ifndef SYSDEF_H #define SYSDEF_H // Crystal #define Fosc 20000000 // UART Module #define TX RC6 #define RX RC7 #define TRIS_TX TRISC6 #define TRIS_RX TRISC7 #define UART_Data TMR1H // UART Data temporary #endif // EOF Tải thư viện về: PIC18_UART_LIb (82) Cách dùng thư viện Copy các file thư viện này vào trong thư mục Project của bạn, ở file nào muốn dùng thư viện thì thêm header vào: #include "UART.h" Chúc các bạn thành công. Các bài viết liên quan: o Lập trình C cho vi điều khiển o Cơ bản về PIC và dsPIC, các phần mềm liên quan o Vài video demo về dsPIC khá ấn tượng o Microcontroller Based Applied Digital Control o Phương pháp quét Keypad ma trận dùng ngắt Timer o Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232 o Quản lý và build Project với trình dịch HTPIC bằng Visual C++.Net 2005 View ngohaibac's Profile Subscribe via RSS 2 Comments 1. #1 nguễn văn bách says: May 18th, 2009 at 10:19 am anh bắc cho em hỏi bài này cái.em mới vào nghề.em đang đọc về ngắt của con dspic,thử lập trình ngắt cho nháy đèn led từ 0-9 cho nó.chương trình của em gặp vấn đề thì phải,vì khi em thay đổi giá trị của PR1 thì thời gian nháy vẫn thế.nó vẫn nháy loạn lên.vậy mong các anh sửa giúp em với,và tư vấn cho em chút it về ngắt,khi nao` su dung ngat trong va khi nao su dung ngat ngoai.sau đây là đoạn chương trình của em: #define __dsPIC33FJ12MC202__ #include int led[10]={0×3F,0×06,0×5B,0×4F,0×66,0×6D,0×7D,0×07,0×7F,0×6 7}; int i; void _ISR _T1Interrupt(void) { _T1IF = 0; } main() { TMR1=0; PR1=0×2625A; //cho phep ngat sau 1 giay T1CON=0×8030; //chon ti le dem trc la 256 _T1IF=0; //xoa co ngat TMR1 _T1IE=1; //cho phep ngat TRISB=0xff00; while(1) { for (i=0;i<10;i++) { PORTB=led[i]; } } Rating: 0.0/5 (0 votes cast) Reply o #2 ngohaibac says: May 18th, 2009 at 8:38 am Em thay PR1 thì có ảnh hướng gì ở đây đâu hả em. Em phải viết lệnh thay đổi PORTB ở trong hàm xử lý ngắt chứ em. Em viết trong while(1) thì PORTB luôn luôn sáng rồi :). Chúc em thành công. Rating: 0.0/5 (0 votes cast) . • Đây là thư vi n vi t cho vi điều khiển PIC dòng PIC1 8 bằng HTPIC. Thư vi n được tạo dựa vào Datasheet của PIC1 8. Đã test với PIC1 8F4680, PIC1 8F4431 File. thành công. Các bài vi t liên quan: o Lập trình C cho vi điều khiển o Cơ bản về PIC và dsPIC, các phần mềm liên quan o Vài video demo về dsPIC khá ấn tượng o

Ngày đăng: 26/01/2014, 23:20

Từ khóa liên quan

Mục lục

  • Cách dùng thư viện

    • Các bài viết liên quan:

    • 2 Comments

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

  • Đang cập nhật ...

Tài liệu liên quan