📄 main.c
字号:
//cd wxl
#include <iocc2430.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define FALSE 0
#define TURE 1
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1
void Delay(uint);
void initUARTtest(void);
void InitialAD(void);
void UartTX_Send_String(uchar *Data,int len);
uchar Recdata[30]="ChenDu WuXianLong TongXun";
uchar RTflag = 1;
uchar temp;
uint datanumber = 0;
uint stringlen;
/****************************************************************
*函数功能 :延时
*入口参数 :定性延时
*返 回 值 :无
*说 明 :
****************************************************************/
void Delay(uint n)
{
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
/****************************************************************
*函数功能 :初始化串口1
*入口参数 :无
*返 回 值 :无
*说 明 :57600-8-n-1
****************************************************************/
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
U0CSR |= 0x80; //UART方式
U0GCR |= 10; //baud_e
U0BAUD |= 216; //波特率设为57600
UTX0IF = 1;
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
*函数功能 :串口发送字符串函数
*入口参数 : data:数据
* len :数据长度
*返 回 值 :无
*说 明 :
****************************************************************/
void UartTX_Send_String(uchar *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
/****************************************************************
*函数功能 :主函数
*入口参数 :无
*返 回 值 :无
*说 明 :无
****************************************************************/
void main(void)
{
//P1 out
P1DIR = 0x03; //P1控制LED
led1 = 1;
led2 = 1; //关LED
initUARTtest();
stringlen = strlen((char *)Recdata);
UartTX_Send_String(Recdata,27); //wu xian long
while(1)
{
if(RTflag == 1) //接收
{
led2=0; //接收状态指示
if( temp != 0)
{
if((temp!='#')&&(datanumber<30))
{ //’#‘被定义为结束字符
//最多能接收30个字符
Recdata[datanumber++] = temp;
}
else
{
RTflag = 3; //进入发送状态
}
if(datanumber == 30)RTflag = 3;
temp = 0;
}
}
if(RTflag == 3) //发送
{
led2 = 1; //关绿色LED
led1 = 0; //发送状态指示
U0CSR &= ~0x40; //不能收数
UartTX_Send_String(Recdata,datanumber);
U0CSR |= 0x40; //允许收数
RTflag = 1; //恢复到接收状态
datanumber = 0; //指针归0
led1 = 1; //关发送指示
}
}
}
/****************************************************************
*函数功能 :串口接收一个字符
*入口参数 : 无
*返 回 值 :无
*说 明 :接收完成后打开接收
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -