📄 mian.c
字号:
#include <chipcon/iocc1110.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define FALSE 0
#define TURE 1
//定义控制灯的端口
sbit led1 = P1^0;
sbit led2 = P1^1;
void Delay(uint);
void initUARTtest(void);
void InitialAD(void);
void UartTX_Send_String(char *Data,int len);
uchar Recdata[30]="ChenDu WuXianLong TongXun";
uchar RFflag = 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)
{
SLEEP &= ~0x04; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
U0CSR |= 0x80; //UART方式
U0GCR |= 11; //baud_e = 11;
U0BAUD |= 34; //波特率设为57600
UTX0IF = 1;
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
*函数功能 :串口接收一个字符 *
*入口参数 : 无 *
*返 回 值 :无 *
*说 明 :接收完成后打开接收 *
****************************************************************/
void USART0Rec(void) interrupt 2
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}
/****************************************************************
*函数功能 :串口发送字符串函数 *
*入口参数 : data:数据 *
* len :数据长度 *
*返 回 值 :无 *
*说 明 : *
****************************************************************/
void UartTX_Send_String(char *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(Recdata);
UartTX_Send_String(Recdata,stringlen); //AD
while(1)
{
if(RFflag == 1) //接收
{
led2=0; //接收状态指示
if((temp!= '#')&&(datanumber<=30))
{
if(temp != 0)Recdata[datanumber++] = temp;
temp = 0;
}
else
{
RFflag = 3; //收到结束标志
//或者已经达到收数上限
//进入发送状态
datanumber--;
led2 = 1; //关接收指示
}
}
if(RFflag == 3) //发送
{
led1 = 0; //发送状态指示
U0CSR &= ~0x40; //不能收数
UartTX_Send_String(Recdata,datanumber);
U0CSR |= 0x40; //允许收数
RFflag = 1; //
datanumber = 0; //指针归0
led1 = 1; //关发送指示
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -