📄 uart0.c
字号:
void time(ulong longth)//29us delay
{
ulong i;
uchar j;
for(i=0;i<longth;i++)
{
for(j=0;j<0x58;j++) //22.11MHz==0xb0//24MHz=0xc0;
{
// WDTCN = 0xA5;
nop();
}
}
}
void send(unsigned char cc)
{
while(U0Tbusy); //若发送忙标志未清,等待
SBUF0 = cc;
U0Tbusy = 1;
while(U0Tbusy); //等待发送完毕
}
void UART0_ISR() interrupt 4
{
if(RI0)
{
RS232 = SBUF0;
RS232FLAG = 1; //已经接收到数据
RI0 = 0;
}
if(TI0)
{
TI0 = 0;
U0Tbusy = 0;
}
}
void Uart0Process(void)
{
data uchar i = 0;
data uchar RECEIVE_DATA[30];
while(PrtocolNo !=0)
{
// WDTCN = 0xA5;
if(RS232FLAG) //处理从串口读来的数据
{
RS232FLAG = 0;
switch(PrtocolNo)
{
case 0:
LONG=0; PrtocolNo=0; U0Overtimer=0;
break;
case 1://DISK READY?
RECEIVE_DATA[LONG]=RS232;LONG++;
if(LONG==1)
{
if(RECEIVE_DATA[0]!=0)
{
USB_DISK_READY=0;
USBDiamFileCreated=0;
LONG=0; PrtocolNo=0; U0Overtimer=0;
}
}
if(LONG==2)
{
USB_DISK_READY=1;
LONG=0; PrtocolNo=0; U0Overtimer=0;
}
break;
case 2: //建立变径文件
RECEIVE_DATA[LONG]=RS232;LONG++;
if(LONG==1)
{
if(RECEIVE_DATA[0]!=0)
{
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
}
if(LONG==2)
{
USBDiamFileCreated=1;
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
break;
case 3: //写变径文件
RECEIVE_DATA[LONG]=RS232;LONG++;
if(RECEIVE_DATA[LONG-1]==0X1E)
{
for(i=0;i<64;i++)
{
// WDTCN = 0xA5; //看门狗
send(DiamBuffer[!CurrentDmBffer][(LONG-1)*64+i]);
}
}
if(LONG==27) //24个0X1E+3个返回值
{
LONG=0;U0Overtimer=0;PrtocolNo=0;//DiamBufferFull=0;
}
break;
case 4: //打开变径文件
RECEIVE_DATA[LONG]=RS232;
LONG++;
if(LONG==1)
{
if(RECEIVE_DATA[0]!=0)
{
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
}
if(LONG==2)
{
// CurrentFile=DIAM_FILE;
FILE_END=0;
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
break;
case 5: //将指针移动到文件尾
RECEIVE_DATA[LONG]=RS232;LONG++;
if(LONG==1)
{
if(RECEIVE_DATA[0]!=0)
{
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
}
if(LONG==2)
{
FILE_END=1;
LONG=0;U0Overtimer=0;PrtocolNo=0;
}
break;
default:
break;
}//end of switch
}//end of if
}//end of while
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -