當前位置:編程學習大全網 - 編程語言 - 在ARM的基礎上進行串口通信仿真,程序用C語言寫。要用到串口助手。到底該怎麽做啊?求高手幫忙。

在ARM的基礎上進行串口通信仿真,程序用C語言寫。要用到串口助手。到底該怎麽做啊?求高手幫忙。

具體去我空間看

//*********************************************

//功能:LPC2103的UART0演示

//內容:上位機PC以9600的波特率向LPC2103發送壹個字符

// LPC2103再返回該字符

#include<lpc2103.h>

#define Fosc 11059200 //晶振

#define Fcclk Fosc*5 //系統頻率

#define Fpclk Fcclk/4 //PCLK

#define UART_bps 9600 //波特率

#define u8 unsigned char

//以下是函數聲明

void uart_ini(void);

u8 get_char(void);

void put_char(u8);

void put_string(u8*);

int main()

{

u8 zifu;

uart_ini(); //UART初始化

put_string("Please input a char:"); //輸出字符串

while(1)

{

zifu=get_char(); //接收壹個字符

put_string("\nYou have sent:");

put_char(zifu); //發送該字符

}

}

//UART初始化

void uart_ini()

{

unsigned short Fdiv;

APBDIV=0; // Fpclk = Fcclk/4

PINSEL0=0x05; //選擇P0.0和P0.1為TXD0和RXD0

U0LCR=0x80; //除數鎖存訪問位打開

Fdiv=(Fpclk/16)/UART_bps;//波特率bps=(Fpclk/16)/(U0DLM:U0DLL),計算(U0DLM:U0DLL)

U0DLM = Fdiv / 256; //U0DLM放除數高八位

U0DLL = Fdiv % 256; //U0DLL放除數低八位

U0LCR=0x03; //關閉除數鎖存訪問位(這時RBR,THR處於可尋址狀態),並設定壹個字符的位寬為8位

}

//接收壹個字符

u8 get_char()

{

while((U0LSR&0x01)==0); //等待接收完成

return(U0RBR); //返回接收的字符

}

//發送壹個字符

void put_char(u8 byte)

{

U0THR=byte; //發送壹個字符

while((U0LSR&0x40)==0); //等待發送完畢

}

//發送字符串

void put_string(u8 *p)

{

for(;*p!='\0';p++) //如果不是結束符,就發送

put_char(*p);

}

//**********************************************************

  • 上一篇:吉林省醫療保險網上怎麽繳費
  • 下一篇:VB驅動級模擬鼠標鍵盤
  • copyright 2024編程學習大全網