📄 d12main.c
字号:
#include "reg52.h"
#include "D12Config.h"
#include "d12main.h"
#include "Descriptor.h"
#include "Chap_9.h"
INT8U idata Rs_buf[Rs232_Input_LEN];
INT8U g_cReceNum;
bit Start_Rxd;
bit Rs232_Rece_Error;
bit Rs232_Flag;
INT8U idata GenEpBuf[EP1_PACKET_SIZE];
INT8U idata EpBuf[EP2_PACKET_SIZE];
void main(void)
{
INT8U i;
//GenEpBuf[0]=9;
MCU_LED = 0;
delay(500);
MCU_LED = 1;
delay(500);
MCU_LED = 0;
delay(500);
MCU_LED = 1;
delay(500);
MCU_LED = 0;
delay(500);
MCU_LED = 1;
TH1 = TL1 = 0xFD; //9600Kbps
SCON = SCON|0x50;
TMOD = TMOD|0x21;
TR1 = True; EA = True;
ET0 = True; ES = True;
if (Init_D12() != 0) return ;
EX0 = True; //开外部中断0
PX0 = False; //设置外部中断0中断优先级
while (1)
{
Usbserve();
delay(500);
}
}
/*******************************/
/***********串口接收************/
/*******************************/
/*********接收不固定长度********/
void RS232(void) interrupt 4 using 1
{
unsigned char Rece_data = SBUF;
INT8U i;
INT8U verify = 0;
EA = False;
ES = False;
MCU_LED = False;
RI = 0;
if (Start_Rxd)
{
g_cReceNum ++;
Rs_buf[g_cReceNum] = Rece_data;
if (Rs_buf[1] == g_cReceNum+1)
{
for (i=0;i<Rs_buf[1]-1;i++)
{
verify^=Rs_buf[i];
}
if (verify == Rs_buf[g_cReceNum])
{
Rs232_Flag = True;
g_cReceNum = 0;
}
else
{
Rs232_Rece_Error = True;
g_cReceNum = 0;
}
Start_Rxd = False;
}
else
{
if ((Rs_buf[1]>Rs232_Input_LEN)||(g_cReceNum>Rs232_Input_LEN-1))
{
g_cReceNum = 0;
Rs232_Rece_Error = True;
Start_Rxd = False;
}
}
}
else
{
if (Rece_data == 0xBD)
{
Start_Rxd = True;
g_cReceNum = 0;
Rs_buf[0] = Rece_data;
}
}
MCU_LED = True;
ES = True;
EA = True;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -