Exemplo n.º 1
0
Arquivo: usart.c Projeto: Dearn/SW2
void write_str_USART0(unsigned char* buff) {

  unsigned int i = 0x0;

  while(buff[i] != '\0') {
    write_char_USART0(buff[i]);
    i++;
  }

}
Exemplo n.º 2
0
void FlashReadArray(unsigned long address, unsigned char *buffer, unsigned char length)
{

    unsigned char ch;

    unsigned int addr	= 0;
    unsigned int page	= 0;

    page = address/264;
    addr = address%264;

    page<<=1;	

    FlashEnable();

    // Send READ opcode
    WriteByte(CONTINUOUS_ARRAY_READ);
	
    // 24 bit page and address
    WriteByte((*((unsigned char*)&page+1)));

    WriteByte((((unsigned char)page&0xFE)|(*((unsigned char*)&addr+1) & 0x01)));

    WriteByte((unsigned char)addr);

    // 32 don't care bits
    WriteByte(0x00);
    WriteByte(0x00);
    WriteByte(0x00);
    WriteByte(0x00);

    while(length--)
    {
       ch = WriteByte(0x0);
       *buffer++ = ch;
       write_str_USART0("\n\r\t Read -> "); write_char_USART0(ch+48);
    };
	


    FlashDisable();
}
Exemplo n.º 3
0
void write_report_USART0(void) 
{

  if(print_view == PRINT_COORDINATES) 
  {
    tmp_x = Coordinates[0]/NSAMPLE;
    tmp_y = Coordinates[1]/NSAMPLE;
    tmp_z = Coordinates[2]/NSAMPLE;
  }
  else 
  {
    tmp_x = base_x - (Coordinates[0]/NSAMPLE);
    tmp_y = base_y - (Coordinates[1]/NSAMPLE);
    tmp_z = base_z - (Coordinates[2]/NSAMPLE);
  }



  // X
  if(print_view == PRINT_DIVERSION) 
  {
    write_str_USART0(" dX: ");
    if(tmp_x<0) 
    {
      tmp_x = (tmp_x)*(-1);
      write_char_USART0('-');
    }
  }
  else 
  {
   write_str_USART0("\rX: ");
  }
  num_1 = (tmp_x%10);
  num_2 = (tmp_x%100 - num_1)/10;
  num_3 = (tmp_x%1000 - num_2)/100;
  num_4 = (tmp_x%10000 - num_3)/1000;

  write_char_USART0(num_4+48);
  write_char_USART0(num_3+48);
  write_char_USART0(num_2+48);
  write_char_USART0(num_1+48);


  // X
  if(print_view == PRINT_DIVERSION) 
  {
    write_str_USART0(" dY: ");
    if(tmp_y<0) 
    {
      tmp_y = (tmp_y)*(-1);
      write_char_USART0('-');
    }
  }
  else 
  {
   write_str_USART0(" Y: ");
  }

  num_1 = (tmp_y%10);
  num_2 = (tmp_y%100 - num_1)/10;
  num_3 = (tmp_y%1000 - num_2)/100;
  num_4 = (tmp_y%10000 - num_3)/1000;

  write_char_USART0(num_4+48);
  write_char_USART0(num_3+48);
  write_char_USART0(num_2+48);
  write_char_USART0(num_1+48);


  // Z
  if(print_view == PRINT_DIVERSION) 
  {
    write_str_USART0(" dZ: ");
    if(tmp_z<0) 
    {
      tmp_z = (tmp_z)*(-1);
      write_char_USART0('-');
    }
  }
  else 
  {
   write_str_USART0(" Z: ");
  }

  num_1 = (tmp_z%10);
  num_2 = (tmp_z%100 - num_1)/10;
  num_3 = (tmp_z%1000 - num_2)/100;
  num_4 = (tmp_z%10000 - num_3)/1000;

  write_char_USART0(num_4+48);
  write_char_USART0(num_3+48);
  write_char_USART0(num_2+48);
  write_char_USART0(num_1+48);

}
Exemplo n.º 4
0
//начало основной программы
void main(void)
{
  CPUinit();         //инициализация системы
  timer_init();      //инициализация таймеров-счетчиков
  LCDinit_clear();   //нач инициализация и сброс ЖКИ
  InitUSART0(115200);    //инициализация USART0 со скоростью обмена 115200 кбит/с

  // Вывод на ЖКИ начальной заставки
  lcd_pro_data('U', 0);
  lcd_tek_data('S');
  lcd_tek_data('A');
  lcd_tek_data('R');
  lcd_tek_data('T');
  lcd_tek_data('_');
  lcd_tek_data('F');
  lcd_tek_data('L');
  lcd_tek_data('A');
  lcd_tek_data('S');
  lcd_tek_data('H');

    //начало основного цикла
    for (;;)
    {
      if  (flagn_kn1==1)    // нажималась ли кнопка 1
     	    {
            flagn_kn1=0;    //да, сбросить флаг нажатия

            //смена состояния выхода светодиода LED1
            if (led1_old_state==OFF)
                     {
                     AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1); // зажечь сетодиод 1
                     led1_old_state=ON;
                     }
            else
                     {
                     AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1); // погасить светодиод 1
                     led1_old_state=OFF;
                     }
            //выбор значения для передачи в USART
            ch0++;
            if (ch0 == 'z')  ch0 = '!';
            lcd_pro_data(ch0, 64); //индикация символа, подлежащего передаче
            }

     if  (flagn_kn2==1)    // нажималась ли кнопка 2
	    {
	    flagn_kn2=0;    //да, сбросить флаг нажатия

           //смена состояния выхода светодиода LED2
           if (led2_old_state==OFF)
                     {
                     AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2); // зажечь сетодиод 2
                     led2_old_state=ON;
                     }
            else
                     {
                     AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2); // погасить светодиод 2
                     led2_old_state=OFF;
                     }
            write_char_USART0(ch0); //передача символа через USART0
            lcd_pro_data(ch0, 66); //индикация переданного символа
           }

     if  (flagn_kn3==1)    // нажималась ли кнопка 3
	    {
	    flagn_kn3=0;    //да, сбросить флаг нажатия

           //смена состояния выхода светодиода LED3
           if (led3_old_state==OFF)
                     {
                     AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED3); // зажечь сетодиод 3
                     led3_old_state=ON;
                     }
            else
                     {
                     AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED3); // погасить светодиод 3
                     led3_old_state=OFF;
                     }

             write_str_USART0(stroka); //передача в USART0 строки данных
            //индикация переданной строки
            U8 i = 0x0;
            while(stroka[i] != '\0')
                     {
                   lcd_pro_data(stroka[i], 68+i); //индикация переданного символа строки
                   i++;
                     }
            }

     if  (flagn_kn4==1)    // нажималась ли кнопка 4
	    {
	    flagn_kn4=0;    //да, сбросить флаг нажатия

           //смена состояния выхода светодиода LED4
           if (led4_old_state==OFF)
                     {
                     AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED4); // зажечь сетодиод 4
                     led4_old_state=ON;
                     }
            else
                     {
                     AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED4); // погасить светодиод 4
                     led4_old_state=OFF;
                     }
            lcd_clear();          //очистка ЖКИ
            }
    }
}