⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d12main.c

📁 用at89s52访问PDIUSBD12(USB协议)
💻 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 + -