PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-01-2007, 04:04 PM   #1
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Tối ưu các chương trình,chương trình giao tiếp USART

http://dientuvietnam.net/forums/show...?t=1406&page=5
Bài số 45.

Giờ mình xin đưa ra các chương trình mà mình tối ưu dần dần và cảm thấy nó dễ hiểu. Mình xin đưa ra cho các bạn xem và cho ý kiến. Mình sẽ tối ưu từng chương trình một.

Đầu tiên là chương trình dùng giao tiếp USART, trong chương trình này mình dùng thư viện stdio.h có hàm printf(). Tuy nhiên bạn phải định nghĩa hàm putch(..) thì mới sử dụng được hàm này.

Hàm printf( ) sẽ truyền xâu dữ liệu theo định dạng C ra cổng nối tiếp USART.

Code:
/*========================================================
; Ten chuong trinh	: giao tiep USART voi PC, nhan duoc thi hien thi lai
; Nguoi thuc hien	: ngohaibac
; Ngay thuc hien	: 
; Phien ban	: 1.0
; Mo ta phan cung	: Dung PIC16F877A - thach anh 20MHz
;		chan RC7/TX noi voi chan R1OUT cua MAX232
;		chan RC6/RX noi voi chan T1IN cua MAX232
;----------------------------------------------------------------
; Ngay hoan thanh	: 
; Ngay kiem tra	: 
; Nguoi kiem tra	: 
;----------------------------------------------------------------
; Chu thich	: Chuong trinh dung giao tiep USART

;========================================================*/
#include<pic.h>
# include "stdio.h"

__CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS );

// ham init - khoi tao 
void init(void){
// Khoi tao cho USART
	TRISC = TRISC | 0b11000000;			// Bit 7,6 la RX va TX phai la Input
	SPEN = 1 ;		// Enable Serial Port communication.
	SYNC =	 0;		// che do khong dong bo Asynchronous
	// cho che do truyen
	TXEN = 1;		//enable truyen
	TX9 = 0 ;		// chon che do 8 truyen  bit du lieu
	BRGH = 1; 		// High - speed
	SPBRG = 129;	//Baud = 9600;	voi HS, Baud Rate = Fosc/(16(X+1))  
	TXIE = 0;		// khong dung ngat Truyen
	// Che do nhan du lieu
	RCIE  =  1;		// dung ngat nhan
	PEIE = 1;		// cho phep ngat ngoai vi
	GIE  = 1;			// cho phep ngat toan cuc
	RX9 = 0;			// nhan 8 bit
	CREN = 1;		// lien tuc nhan du lieu; = 0 k lien tuc nhan du lieu
}
// ham truyen du lieu
void putch(unsigned char byte) 
{
	/* output one byte */
	while(!TXIF);	/* set when register is empty */
	//	continue;
	TXREG = byte;
}
// ham ngat
void interrupt MyInt(void){
	unsigned char temp;
	if(RCIF){						// Neu co ngat nhan du lieu noi tiep
		temp = RCREG;
		RCIF = 0;					// Xoa co ngat RCIF
		printf(" da nhan duoc du lieu: %c", temp);
	};
}

// ham chinh 
void main(void){
	init();
	while(1);
}
Chương trình này rất có ích khi muốn test chương trình giao tiếp qua USART.

Chúc các bạn thành công. Ngủ cái đã. Mai còn phải ôn thi .
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Cách giao tiếp DS1877 và PIC6F877A nbqvdp Cơ bản về vi điều khiển và PIC 7 05-08-2010 06:46 PM
Hỏi về chương trình HTPIC của ngohaibac riquelme Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 26 20-01-2007 09:42 PM
Giúp đỡ về HTPIC riquelme Cơ bản về vi điều khiển và PIC 0 11-01-2007 11:56 PM
Giao tiếp Pic6f877A qua cổng máy in???? spirit Cơ bản về vi điều khiển và PIC 8 11-09-2006 01:04 PM


Múi giờ GMT. Hiện tại là 12:05 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam