/************************** Copyright (c) ********************************** ** FUZHOU FUGUANG ELECTRONICS Co.,LTD. ** ¸£Öݸ£¹âµç×ÓÓÐÏÞ¹«Ë¾ ** http://www.fuguang.com ** **-------------- File Info ------------------------------------------------- ** File name: USBModule_Driver.c ** Last modified Date: 2008-11-16 ** Last Version: 1.0 ** Descriptions: USBModule Drivers lib ** **-------------------------------------------------------------------------- ** Created by: mxpopstar ** Created date: 2008-11-16 ** Version: 1.0 ** Descriptions: The original version ** **-------------------------------------------------------------------------- ** Modified by: mxpopstar ** Modified date: 2008-11-20 ** Version: ** Descriptions: USBModule Drivers lib ** ***************************************************************************/ // #include "MessageBox.h" #include "USBModule_Driver.h" #include "ch376inc.h" #include "Delay.h" #include "M64USART_Driver.h" #include void InitIO_M64USART1(void) { DDRD &= (~0x04); //RXD1¶ËÅäÖÃΪÊäÈë DDRD |= 0x08; //TXD1¶ËÅäÖÃΪÊä³ö } // /////////////////////////´Ë´¦ÒÔÏÂÓÉCH376°æÌæ»»¶øÀ´//////////////////////// void Config_M64USART1(const unsigned int baud) { UCSR1B = 0; _delay_us(10); if(baud == 192) { UBRR1H = 0; UBRR1L = 23; //7.3728M¾§Õñ,19200 ²¨ÌØÂÊ } else if(baud == 576) { UBRR1H = 0; UBRR1L = 7; //7.3728M¾§Õñ,57600 ²¨ÌØÂÊ } else if(baud == 1152) { UBRR1H = 0; UBRR1L = 3; //7.3728M¾§Õñ,115200 ²¨ÌØÂÊ } UCSR1B = (1< 50000) { count = 0; *res = 1; return 0xFF; } } return UDR1; /* ´Ó»º³åÆ÷ÖлñÈ¡²¢·µ»ØÊý¾Ý*/ } //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- void xWriteCH376Cmd(const unsigned char mCmd ) /* ÏòCH376дÃüÁî */ { TXByteToCH376(SER_SYNC_CODE1); TXByteToCH376(SER_SYNC_CODE2); TXByteToCH376(mCmd); } //-------------------------------------------------------------------------------------------------- void xWriteCH376Data(const unsigned char mData ) /* ÏòCH376дÊý¾Ý */ { TXByteToCH376(mData); } //-------------------------------------------------------------------------------------------------- unsigned char xReadCH376Data( void ) /* ´ÓCH376¶ÁÊý¾Ý */ { unsigned char data = 0; unsigned char res = 0; data = RXByteFromCH376(&res); if(res == 0) return data; else return( 0 ); // ²»Ó¦¸Ã·¢ÉúµÄÇé¿ö } //-------------------------------------------------------------------------------------------------- unsigned char Query376Interrupt( void ) // ²éѯCH376ÖжÏ״̬ { unsigned char Int_data; if(UCSR1A & (1<500000) { count = 0; return 0xFF; } } return UDR1; } unsigned char ReceiveByte_M64USART2(void) { unsigned long count = 0; while ( !(UCSR1A & (1<500000)// 900mS { // PrintValue(0, 0, 22222, " ", 16, 300, 300+60, blue, white); count = 0; return 0xFF; } } return UDR1; } //-------------------------------------------------------------------------------------------------- unsigned char ReceiveSTR_M64USART1(void *buf, const unsigned char len, const unsigned long timeup) { unsigned char *pbuf = (unsigned char *)buf; unsigned char bytecount = len; unsigned long count = 0; while(bytecount--) { while ( !(UCSR1A & (1< timeup) { count = 0; return 0; } } *pbuf++ = UDR1; } return len; } //-------------------------------------------------------------------------------------------------- unsigned char ReceiveByte_M64USART1_21(void) { unsigned long count = 0; while ( !(UCSR1A & (1<500000) { count = 0; return 0xFF; } } return UDR1; } //--------------------------------------------------------------------------------------------------