1. Trang chủ
  2. » Công Nghệ Thông Tin

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

5 553 2
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tài liệu Vi điều khiển PIC dòng PIC18 bằng HTPIC doc
Thể loại Thư viện
Định dạng
Số trang 5
Dung lượng 58 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Đâ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.. Ví dụ: UART_PrString”Anh yeu em”; o unsigned char UART_Readvoid : Đọc

Trang 1

 Đâ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 Ví dụ: UART_Init(9600)

o UART_PrChar: Gửi một kí tự ra cổng RS232 Ví dụ: char x = ‘a’;

UART_PrChar(x);

o UART_PrString(const char* str): gửi 1 xâu kí tự ra cổng RS232 Ví 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

Generator - SPBRGH and SPBRG

Trang 2

// Baudrate = Fosc/[16(n+1)] => n =

((Fosc/Baudrate)>>4) - 1; n = SPBRGH: SPBRG;

n = (( Fosc/BaudRate ) gt;> ) - 1

SPBRG = n;

SPBRGH = n>> ;

// Enable the asyncchronous serial port.

TRIS_TX = 0

TRIS_RX = 1

//Configure for Transmitter mode.

//Configure for Receiver mode

//Interrupt

RCIF = 0

Enable

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 == ) ABDOVF = 0

#endif

}

}

Tất cả tham số của bộ UART được định nghĩa trong SysDef.h của mình:

Trang 3

// SysDef.h

//

// System Defination for specific IC

//

#ifndef SYSDEF_H

#define SYSDEF_H

// Crystal

#define Fosc 20000000

// UART Module

#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

Trang 4

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

Trang 5

Rating: 0.0/5 (0 votes cast)

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w