![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Feb 2013
Bài gửi: 6
: |
giúp cpde UART
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; } |
![]() |
![]() |
|
|