admin管理员组

文章数量:1530865

2024年7月23日发(作者:)

主机程序

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

*File: main.C

*功能: 串口发送数据

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

#include

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

*名称:WaitKey()

*功能:等待一个有效按键.本函数有去抖功能

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

void WaitKey(void)

{ unsigned int i,KEY;

KEY = 0x00008000; //针对P0.15

while((IO0PIN&KEY)!=0); //等待按键动作

for(i=0;i<5000;i++); // 延时

while((IO0PIN&KEY)==0); //等待按键动作

}

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

*名称: UART0_Ini()

*功能: 初始化串口0.设置为8位数据位,1位停止位,无奇偶校验,波特率为9600

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

void UART0_Ini(void)

{ U0LCR=0x83; //DLAB=1,可设置波特率

U0DLL=0x61;

U0DLM=0x00;

U0LCR=0x03;

}

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

*名称: main()

*功能: 向串口UART0发送字符串"12345…………….."

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

int main(void)

{ unsigned int i;

unsigned char DISP_TAB[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,

0x41,0x42,0x43,0x44,0x45,0x46};

PINSEL0=0x00000005; //设置I/O连接到UART0

PINSEL1=0x00000000;

UART0_Ini();

while(1)

{

for (i=0;i<16; i++)

{

while((U0LSR & 0x40)==0);

U0THR = DISP_TAB[i];

WaitKey();

}

U0THR = 0x0d;

}

}

从机程序

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

*File: main.C

*功能: 串口发送数据

*说明: 使用外部晶振,不使用PLL,Fpclk=Fcclk/4

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

#include

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

*名称: UART0_Ini()

*功能: 初始化串口0.设置为8位数据位,1位停止位,无奇偶校验,波特率为9600

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

void UART0_Ini(void)

{ U0LCR=0x83; //DLAB=1,可设置波特率

U0DLL=0x61;

U0DLM=0x00;

U0LCR=0x03;

}

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

*名称: main()

*功能: 向串口UART0发送所接受的字符串" "

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

int main(void)

{

PINSEL0=0x00000005; //设置I/O连接到UART0

PINSEL1=0x00000000;

UART0_Ini();

while(1)

{

while((U0LSR & 0x01)==0);

U0THR = U0RBR;

}

}

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

*File: main.C

*功能: AD转换

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

#include

#define Fpclk 15000000

typedef unsigned int uint32;

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

*名称: ADC_Ini()

*功能: 初始化ADC模块

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

void ADC_Ini(void)

{ PINSEL1= 0x00400000; /* P0.27 defined as AN0 */

ADCR = (1 << 0) | // SEL = 1 ,选择通道0

((Fpclk/1000000-1)<<8) | // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz

(0 << 16) | // BURST = 0 ,软件控制转换操作

(0 << 17) | // CLKS = 0 ,使用11clock转换

(1 << 21) | // PDN = 1 , 正常工作模式(非掉电转换模式)

(0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)

(1 << 24) | // START = 1 ,直接启动ADC转换

(0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)

}

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

*名称: ADC_RESULT()

*功能: 等待AD转换结束,读取转换结果

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

uint32 ADC_RESULT(void)

{ uint32 ADC_Data;

while((ADDR&0x80000000)==0 ); // 等待转换结束

ADC_Data=ADDR;

ADC_Data=(ADC_Data<<10)&0x3ff0000; // 处理转换值

return ADC_Data;

}

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

*名称: main()

*功能: 通过P1口显示

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

int main(void)

{ uint32 i;

uint32 data;

PINSEL2=0x0000000 ;

IO1DIR=0xffffffff;

while(1)

{

ADC_Ini();

data=ADC_RESULT();

for(i=0;i<5000;i++);

IO1SET=~data;

IO1CLR=data;

}

}

本文标签: 转换串口功能