admin管理员组文章数量:1566678
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;
}
}
版权声明:本文标题:主程序 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1721700356a892048.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论