PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

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

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 05-11-2008, 09:44 PM   #1
gunnroses
Đệ tử 1 túi
 
Tham gia ngày: May 2007
Bài gửi: 20
:
Module UART trong dsPIC30F4013

Em làm mạch test như sau. Do nối nhầm chân T1In và R1OUT của max232 vào chân 15 ,16. Sau đó e cắt mạch và câu dây vào chân 25, 26(U1Tx, U1Rx). Code tương tự như trong Tut4 về UART
Code:
#include "p30f4013.h"

	_FOSC(CSW_FSCM_OFF & FRC_PLL4);		//Clock = 32 MHz
	_FWDT(WDT_OFF);
	_FBORPOR(MCLR_EN & PBOR_OFF);
	_FGS(CODE_PROT_OFF);

//Cac prototype cho cac chuong trinh con
void Init_TMR1(void);
void Init_UART1_Module(void);

//Bang hang so trong ROM
const unsigned char __attribute__ ((space(psv), address (0x0200)))
Chuoi1[] = "Xin chao! \0";

//Cac bien toan cuc
unsigned char flag, idx;

//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
	Init_TMR1();			//Khoi tao Timer 1
	Init_UART1_Module();	//Khoi tao module UART1
	_PSV=1;
	PSVPAG = __builtin_psvpage(Chuoi1);
	flag = 0;				//Xoa co bao het thoi gian cho
	while (1) {
		if (flag) {			//Cho den khi het thoi gian cho
			idx = 0;
			while (Chuoi1[idx]) {	//Neu chua het chuoi thi
				U1TXREG = Chuoi1[idx++];	//Xuat tiep 1 ky tu
				while (!U1STAbits.TRMT);	//Cho den khi truyen xong ky tu,                //cho den khi bo dem phat trong(bit TRMT=1)
			};
			flag = 0;
		};
	};
}

//Chuong trinh con khoi tao module UART1
void Init_UART1_Module(void) {
	U1MODE = 0x8000;		//Main I/O, 8-bit, no parity, 1 stop bit 
	U1STA = 0x0400;			//bit10=UTXEN
	U1BRG = (((8000000/38400)/16)-1);	//baud=38400 bps @ ;clock=32,Fcy = 8 MHz
}

//Chuong trinh con khoi tao Timer 1, tran sau moi 1 giay o muc xung 8 Mips
void Init_TMR1(void) {
	TMR1 = 0;			//Xoa so dem trong TMR1
	PR1 = 0x7A12;		//Nguong tran la 1 giay tuong ung voi clock = 32 MHz
	_T1IF = 0;			//Xoa co ngat cua Timer 1
	T1CON = 0x8030;		//Dung fcy lam clock, prescale = 1:256
	_T1IE = 1;			//Cho phep ngat khi Timer 1 tran
}

//Chuong trinh xu ly ngat Timer 1
void _ISR _T1Interrupt(void) {
	_T1IF = 0;			//Xoa co ngat
	flag = 1;			//Bat co cho phep xuat chuoi ky tu
}
Em sử dụng phần mềm Terminal thì chỉ nhận được những ký tư : øÉÎ@ÃÈÁÏA@
Khi sờ tay vào chân Tx thì các nhận được các ký tự linh tinh khác.
Không biêt có phải do mạch bị nhiều hay k? và cách giải quyết thế nào?
Hình Kèm Theo
File Type: jpg 2.JPG (96.5 KB, 32 lần tải)
gunnroses vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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


Múi giờ GMT. Hiện tại là 11: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