总算是整好了~~
基于LPC2106的Proteus仿真UART0~~
重点就是频率的设置~~
写程序是小事~~
明白其中的PLL才是大事~~
后面的程序里面有详细的介绍~~
三、UART
三—(02)、向串口发送字符串(就是发送_Justin~~哈哈~~)
然后就是源代码:
MDK3_1.c
//------------------------------------------------------------------------------
//向串口发送字符串
//向串口UART0发送字符串“Designed
by: _Justin"
//使用外部晶振12MHz;使用KEIL自带的启动代码Startup.s,里面有关时钟的设置(下边有图~~)
//PLL设置:倍频系数M=4,分频系数P=2
//当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz
//顺便再介绍一下波特率的除数计算吧:
//UxDLM、UxDLL=Fpclk/(16*baud)
//UART基本操作如下:
//1)设置I/O连接到UART0
//2)设置串口波特率(U0DLM、U0DLL)
//3)设置穿口工作模式(U0LCR、U0FCR)
//4)发送或者接收数据(U0THR、U0RBR)
//5)检查串口状态字或者等待串口中断(U0LSR)
//------------------------------------------------------------------------------
#include"lpc210x.h"
#include"delay.h"
#include"macroandconst.h"
#include"bit.h"
//------------------------------------------------------------------------------
#define
Fpclk 15000000
#define BAUD 9600
#define THRE
5 //线状态寄存器第五位,发送保持寄存器空~~
uchar
const send_string[]="Designed by: _Justin";
//------------------------------------------------------------------------------
//端口初始化函数
void
port_init()
{
PINSEL0=0x00000005; //设置I/O口连接到UART0
PINSEL1=0X00000000;
//由于当I/O口设置为第二引脚功能后,I/O口的输入输出就不受寄存器控制
//硬件自动控制~~
}
//------------------------------------------------------------------------------
//串口初始化函数——uart0_init()
//初始化串口0,设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
void
uart0_init()
{
uint32 Fdiv;
U0LCR=0X83; //DLAB=1,可以设置波特率;同时设置8位数据位
Fdiv=(Fpclk/16)/BAUD; //就是上面的波特率除数计算公式~~
U0DLM=Fdiv/256;
U0DLL=Fdiv%6;
U0LCR=0X03; //清零DLAB,禁止访问除数锁存~~
}
//------------------------------------------------------------------------------
//向串口发送字节函数——uart0_send_byte()
void
uart0_send_byte(uchar
dat)
{
U0THR=dat; //向发送器保持寄存器U0THR写入数据,它是UART0
Tx
FIFO的最高字节
//它包含了Tx
FIFO中最新的字符,为只写寄存器,DLAB必须为0
while(GET_BIT(U0LSR,6)==0X00); //等待数据发送完毕
}
//------------------------------------------------------------------------------
//uart0_send_string()
//向串口发送字符串函数
void
uart0_send_string(uchar const
*s)
{
while(1)
{
if(*s=='\0')
{
uart0_send_byte('\n'); //发送回车字符
break;
}
uart0_send_byte(*s); //发送字符串对应的数据
s++;
}
}
//------------------------------------------------------------------------------
//main
int
main()
{
port_init();
uart0_init();
uart0_send_string(send_string);
while(1);
}
上一篇:ARM7单片机(学习ing)—(四)、定时器—01
下一篇:ARM7单片机(学习ing)—(KZ)、PLL(锁相环)—01
推荐阅读最新更新时间:2024-03-16 15:34