示例#1
0
文件: main.c 项目: jaseg/bt-lamp
int main(void){
	usart_init(BAUDRATE);
	TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);
	TCCR1B |= (1<<WGM12)|(1<<WGM13)|(1<<CS10);
	ICR1=0xFFFF;
	sei();
#ifdef MASTER
	rx_check = 1;
	usart_write("atz0\r");
	_delay_ms(500);
	usart_write("atn=lelamp");
	_delay_ms(200);
	usart_write("atp=1234");
	_delay_ms(200);
	usart_status.usart_ready = 0;
	rx_check = 0;
#endif
	while(1){
		if(usart_status.usart_ready){
			uint16_t val = usart_rx_buffer[1]<<8|usart_rx_buffer[2];
			if(usart_rx_buffer[0] == OA_NUM){
				OCR1A = val;
			}else if(usart_rx_buffer[0] == OB_NUM){
				OCR1B = val;
			}else{ //if command not found: echo.
				usart_write_str(usart_rx_buffer);
			}
			usart_status.usart_ready = 0;
		}
	}
}
示例#2
0
//------------------------------------------------------------------------------
void usart_write_P (const char *Buffer,...)
{
	va_list ap;
	va_start (ap, Buffer);	
	
	int format_flag;
	char str_buffer[10];
	char str_null_buffer[10];
	char move = 0;
	char Base = 0;
	int tmp = 0;
	char by;
	char *ptr;
		
	//Ausgabe der Zeichen
    for(;;)
	{
		by = pgm_read_byte(Buffer++);
		if(by==0) break; // end of format string
            
		if (by == '%')
		{
            by = pgm_read_byte(Buffer++);
			if (isdigit(by)>0)
				{
                                 
 				str_null_buffer[0] = by;
				str_null_buffer[1] = '\0';
				move = atoi(str_null_buffer);
                by = pgm_read_byte(Buffer++);
				}

			switch (by)
				{
                case 's':
                    ptr = va_arg(ap,char *);
                    while(*ptr) { usart_write_char(*ptr++); }
                    break;
				case 'b':
					Base = 2;
					goto ConversionLoop;
				case 'c':
					//Int to char
					format_flag = va_arg(ap,int);
					usart_write_char (format_flag++);
					break;
				case 'i':
					Base = 10;
					goto ConversionLoop;
				case 'o':
					Base = 8;
					goto ConversionLoop;
				case 'x':
					Base = 16;
					//****************************
					ConversionLoop:
					//****************************
					itoa(va_arg(ap,int),str_buffer,Base);
					int b=0;
					while (str_buffer[b++] != 0){};
					b--;
					if (b<move)
						{
						move -=b;
						for (tmp = 0;tmp<move;tmp++)
							{
							str_null_buffer[tmp] = '0';
							}
						//tmp ++;
						str_null_buffer[tmp] = '\0';
						strcat(str_null_buffer,str_buffer);
						strcpy(str_buffer,str_null_buffer);
						}
					usart_write_str (str_buffer);
					move =0;
					break;
				}
			
			}	
		else
		{