Exemplo n.º 1
0
static int put_data(struct _simulate *simulate, int PC, int reg, int Ad, int bw, uint32_t data)
{
struct _simulate_msp430 *simulate_msp430 = (struct _simulate_msp430 *)simulate->context;

  if (Ad == 0) // Rn
  {
    if (bw == 0)
    { simulate_msp430->reg[reg] = data; }
      else
    {
      //simulate_msp430->reg[reg]&=0xff00;
      //simulate_msp430->reg[reg]|=data&0xff;
      simulate_msp430->reg[reg] = data & 0xff;
    }
    return 0;
  }

  if (reg == 2)
  {
    if (Ad == 1) // &LABEL
    {
      uint16_t a = READ_RAM(PC) | (READ_RAM(PC+1) << 8);

      if (bw == 0)
      {
        WRITE_RAM(a, data & 0xff);
        WRITE_RAM(a + 1, data >> 8);
      }
        else
      { WRITE_RAM(a, data & 0xff); }
Exemplo n.º 2
0
void MainWND::LOAD_PATTERN(void)
{
    unsigned int W_ADDR=0,ADC0,ADC1;
    unsigned int i;
//    unsigned short int trailing_value = 399;

    TextFrame->AppendText(wxString::Format(wxT("Loading...   ")));
    W_EN(true);
    wxYield();
    TextFrame->AppendText(wxString::Format(wxT("Sending...   ")));
    /*
      for(i=0; i<6; i++) {
        WADDR(W_ADDR);
        WRITE_RAM(trailing_value, trailing_value);
        W_STRB();
        W_ADDR++;
      }
      */
//    for(j=0; j<8; j++) {
//        for(i=0; i<512; i++) {
        for(i=0; i<samples_per_waveform; i+=4) {
//     for(i=0;i<128; i++){
//      for(j=0;j<64; j+=2){  
//        W_ADDR = 128*i + j;
//        if (i==0) {
//            ADC0 = trailing_value;
//        } else {
            ADC0 = RAM_DATA[i+0];
//        }
        ADC1 = RAM_DATA[i+1];
//        ADC1 = 0xfff;
//        ADC1 = 0xfff;
//        ADC0 = RAM_DATA[i][j];
//        ADC1 = RAM_DATA[i][j + 1];
        //TextFrame->AppendText(wxString::Format(wxT("LOADING: %d of 128 and %d of 32\n"),i,j));
//        TextFrame->AppendText(wxString::Format(wxT("[%03d, %03d, %04d] ADC0 = %04d, ADC1 = %04d\n"),i,j,W_ADDR,ADC0,ADC1));
        WADDR(W_ADDR);
        WRITE_RAM(ADC0,ADC1);
//        WRITE_RAM(ADC1,ADC0);
        W_STRB();
        W_ADDR++;
        // - - - - - - - - - - - - -
        ADC0 = RAM_DATA[i+2];
        ADC1 = RAM_DATA[i+3];
//        ADC0 = 0xfff;
//        ADC1 = 0xfff;
//        TextFrame->AppendText(wxString::Format(wxT("[%03d, %03d, %04d] ADC0 = %04d, ADC1 = %04d\n"),i,j,W_ADDR,ADC0,ADC1));
        WADDR(W_ADDR);
        WRITE_RAM(ADC0,ADC1);
//        WRITE_RAM(ADC1,ADC0);
        W_STRB();
        W_ADDR++;
        // - - - - - - - - - - - - -
      }
//      TextFrame->AppendText(wxString::Format(wxT("%d\n"), i));
/*
      for(i=0; i<samples_per_waveform; i+=4) {
        WADDR(W_ADDR);
        WRITE_RAM(trailing_value, trailing_value);
        W_STRB();
        W_ADDR++;
        // - - - - - - - - - - - - -
        WADDR(W_ADDR);
        WRITE_RAM(trailing_value, trailing_value);
        W_STRB();
        W_ADDR++;
      }
//      TextFrame->AppendText(wxString::Format(wxT("%d\n"), i));
//      TextFrame->AppendText(wxString::Format(wxT("%03d\n"),j));
//    }
*/
    wxYield();
    TextFrame->AppendText(wxString::Format(wxT("Done!!!\n")));
    W_EN(false);
    //TX_LENGTH(4099);
//    TX_LENGTH(8192);
}