Ðăng Nhập

View Full Version : giúp cpde UART


chicken_555
02-02-2013, 01:39 AM
các bạn ơi giúp mình test đoạn code này với. mình biện dịch thì ok khi nạp vào mạch thì không chạy.
xin cảm ơn nhiều!
#include"P24FJ128GA010.h"
#include"libpic30.h"
#define delay 250
_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
_CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
// cac prototype***************************************** **
#define F2 LATFbits.RF2
#define F3 LATFbits.RF3
#define Fcy 4000000 //Tan so thuc thi lenh
#define baud 38400 //Toc do baud cua RS232
void Init_UART(void);
void UART_putchar(unsigned char ch);
void UART_putstring(unsigned char *st);
void T1_init();
void Delay_ms(unsigned long time);
// bien toan cuc
unsigned char flag;
//ham main
int main(void)
{
T1_init();
Init_UART();
Delay_ms(10);
while(1)
{
if(flag==1)
{
UART_putstring("hello worl");
}
flag=0;
};
}
void Init_UART(void)
{
TRISFbits.TRISF2=0;
TRISFbits.TRISF3=1;
U1MODE=0x8000;
/**********************************************
U1MODEbits.UARTEN=1;// cho phep UART cac chan U1TX,U1RX duoc dieu khien boi UART
U1MODEbits.ALTIO=0;//su dung cac chan U1TX,U1RX
U1MODEbits.UEN<1:0>=00//cho phep su dung chan U1TX,U1RX, cac chan ngoai vi U1CTS,U1RTS duoc dieu khien boi cac chot
U1MODEbits.ABAUD=0;//kho cho phep xac dinh baud o ky tu tiep theo
U1MODEbits.BRGH=0;//baud toc do thap
*************************************************/
U1STA=0x04000;
/************************************************** 8
U1STAbits.UTSIXEL1<1:0>=00;//ngat xay ra khi co 1 ky tu chuyen toi thanh ghi Transmis
U1STAbits.UATBRK=0;//khong cho truyen ky tu break;
U1STAbits.UTXEN=1;//U1TX duoc dieu khien boi U1RTX
U1STAbits.UTXBF=0;//bo dem rong cho phep truyen ky tu
U1STAbits.ADDEN=0;//tat che do address detect
U1STAbits.RIDLE//du lieu dang duoc nhan
U1STAbits.URXDA//bo dem nhan khong du lieu
*************************************************/
U1BRG=((Fcy/baud)/16-1);//baud=38400bps
_U1RXIF=0;//ngat co
_U1RXIE=1;// cho phep ngat
}
void UART_putchar(unsigned char ch)
{
while( U1STAbits.UTXBF==0) //kiem tra xem bo dem co day khong
{
U1RXREG=ch;//dhi du lieu vao thanh ghi
};
}
void UART_putstring(unsigned char *st)
{
while(*st!='0')
{
UART_putchar(*st);
st++;
};
}
void T1_init()
{
T1CON=0x8000;
//TON=1;
TMR1=0;//xoa bo dem timer 1
PR1=delay;//nguong tran timer ung voi 1 ms bo chia tan la 1:256,clock=8MHz
_T1IF=0;//xao co ngat
_T1IE=1;//cho phep ngat
}
void Delay_ms(unsigned long i_ms)
{
PR1=i_ms*delay;//thoi gian delay
T1CONbits.TON=1;//bat adc
flag=0;//ngat co
while(flag==1);//kiem tra xay ra ngat
T1CONbits.TON=0;//tat adc
TMR1=0;//xoa bo dem timer1
}
void _ISR_T1Interrupt(void)
{
_T1IF=0;//xao co ngat
flag=1;
}

chicken_555
03-02-2013, 07:28 PM
mọi người giúp t với