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

📄 main.c

📁 基于AVR的USB单片机的源代码,其中部分代码被用在产品上.
💻 C
字号:
//===================================================================//
//					Augest, 25, 2002		The Last Modified Date
//===================================================================//

#include "AvrUsb.H"

//extern unsigned char GenBuf[GENBUF_LENGH];

///////////////////////////////////
// Data definition
AVRUSBFLAGS  bAvrUsbFlags;
extern CONTROL_XFER ControlData;
extern unsigned char buf[16];

void port_init(void)
{
 PORTA = 0xFF;
 DDRA  = 0xFF;
 
 PORTB = 0xFF;
 DDRB  = 0xFF;
 
 PORTC = 0xFF;
 DDRC  = 0xFF;
 
 PORTD = 0xFF;
 DDRD  = 0xF0; 
}

//TIMER0 initialisation - prescale:1024
// desired value: 50Hz
// actual value: 50.080Hz (0.2%)
void timer0_init(void)
{
 TCCR0 = 0x00; //stop timer
 TCNT0 = 0x00; //set count value
 TCCR0 = 0x05; //start timer
}


//call this routine to initialise all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();
 timer0_init();

 MCUCR = 0x80;//02;
 GIMSK = 0x40;
 TIMSK = 0x02;
 //SEI(); //re-enable interrupts
 //all peripherals are now initialised
}

/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/
void main (void)
{
	init_devices();
	bAvrUsbFlags.bits.bLED = LED_FLASH;

	USB_Reconnect();
    USBD12_SetEndpointEnable(1);
	ENABLE_INTERRUPTS;

	/* Main program loop */
	while(TRUE)
	{

		if (bAvrUsbFlags.bits.bBus_Reset)
		{
			DISABLE_INTERRUPTS;
			bAvrUsbFlags.bits.bBus_Reset = 0;
			ENABLE_INTERRUPTS;
			PORTB|= 0x80; //D12SUSPD = 1;
		} // if bus reset

		if (bAvrUsbFlags.bits.bSuspend)
		{
			DISABLE_INTERRUPTS;
			bAvrUsbFlags.bits.bSuspend= 0;
			ENABLE_INTERRUPTS;

		} // if suspend change

		if (bAvrUsbFlags.bits.bSetup_Packet)
		{
			DISABLE_INTERRUPTS;
			bAvrUsbFlags.bits.bSetup_Packet = 0;
			ENABLE_INTERRUPTS;
			USB_Control_Handler();
			PORTB|= 0x80; 
		} // if setup_packet
		if(bAvrUsbFlags.bits.bRead)
		{
			DISABLE_INTERRUPTS;
			bAvrUsbFlags.bits.bRead = 0;
		    USBD12_WriteEndpoint(3,buf,2);
		    USBD12_WriteEndpoint(5,buf,2);
		    USBD12_WriteEndpoint(3,buf,0);
		    USBD12_WriteEndpoint(5,buf,0);
			ENABLE_INTERRUPTS;

		}

	} // Main Loop

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -