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

📄 agdi.cpp

📁 8051编程例子讲解 一些基本使用方法通过例子有详细说明
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  DYMENU    *pM;

  pM = &Menu[0];
  while (pM->nDelim != -1)  {             // while not end of Menu-list
    if (pM->pDlg && pM->pDlg->Update)  {  // if dialog has been created
      pM->pDlg->Update();                 // then call it's update function
    }
    ++pM;                                 // next menu entry.
  }
}


/*
 * Need to close all currently open modeless dialogs
 */

void CloseAllDlg (void)  {
  DYMENU    *pM;

  pM = &Menu[0];
  while (pM->nDelim != -1)  {
    if (pM->pDlg && pM->pDlg->hw)  {        // Dialog is visible
      pM->pDlg->Kill (pM->pDlg);            // update contents
    }
    ++pM;
  }
}




//--- Interface functions between AGDI and target follow
//------------------------------------------------------


/*
 * Read 'nMany' bytes out of data space into buffer 'pB'
 *  return: 0:=Ok, else 'ErrorAddress | (amDATA << 24)'
 */

UL32 ReadData (BYTE *pB, DWORD nAdr, DWORD nMany)  {
  if (CacheValid (pB, nAdr, nMany))  {   // use cache, if possible
    return (0);
  }
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amDATA << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Read 'nMany' bytes out of the idata space into buffer 'pB'
 *  return: 0:=Ok, else 'ErrorAddress | (amIDATA << 24)'
 */

UL32 ReadIdata (BYTE *pB, DWORD nAdr, DWORD nMany)  {
  if (CacheValid (pB, nAdr, nMany))  {   // use cache, if possible
    return (0);
  }
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amIDATA << 24);  // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Read 'nMany' sfr values out of sfr-data space into buffer 'pB'
 *  return: 0:=Ok, else 'ErrorAddress | (amDATA << 24)'
 */

UL32 ReadSFR (BYTE *pB, DWORD nAdr, DWORD nMany)  {
  if (CacheValid (pB, nAdr, nMany))  {   // use cache, if possible
    return (0);
  }

//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amDATA << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Read 'nMany' bytes out of the xdata space into buffer 'pB'
 *  return: 0:=Ok, else 'ErrorAddress | (amXDATA << 24)'
 */

UL32 ReadXdata (BYTE *pB, DWORD nAdr, DWORD nMany)  {
  if (CacheValid (pB, nAdr, nMany))  {   // use cache, if possible
    return (0);
  }
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amIDATA << 24);  // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Read 'nMany' bytes out of the code space into buffer 'pB'
 *  return: 0:=Ok, else 'ErrorAddress | (amCODE << 24)'
 */

UL32 ReadCode (BYTE *pB, DWORD nAdr, DWORD nMany)  {
  if (CacheValid (pB, nAdr, nMany))  {   // use cache, if possible
    return (0);
  }
  else  {
    memset (pB, 0, nMany);    // for now, we return 0 bytes (NOP's)
  }

//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amCODE << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Write 'nMany' bytes of code into target
 *  return: 0:=Ok, else 'ErrorAddress | (amCODE << 24)'
 */

UL32 WriteCode (BYTE *pB, DWORD nAdr, DWORD nMany)  {
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amCODE << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Write 'nMany' bytes of xdata into target
 *  return: 0:=Ok, else 'ErrorAddress | (amXDATA << 24)'
 */

UL32 WriteXdata (BYTE *pB, DWORD nAdr, DWORD nMany)  {
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amXDATA << 24);  // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Write 'nMany' bytes of idata into target
 *  return: 0:=Ok, else 'ErrorAddress | (amIDATA << 24)'
 */

UL32 WriteIdata (BYTE *pB, DWORD nAdr, DWORD nMany)  {
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amIDATA << 24);  // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Write 'nMany' bytes of data into target
 *  return: 0:=Ok, else 'ErrorAddress | (amDATA << 24)'
 */

UL32 WriteData (BYTE *pB, DWORD nAdr, DWORD nMany)  {
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amDATA << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}

/*
 * Write 'nMany' sfr's to target
 *  return: 0:=Ok, else 'ErrorAddress | (amDATA << 24)'
 */

UL32 WriteSFR (BYTE *pB, DWORD nAdr, DWORD nMany)  {
//---TODO:
//---if Ok, then return 0, else error-address
//   adr |= (amDATA << 24);   // make address uVision2 conforming
  return (0);                 // say Ok.
}



/*
 * Initialize your target communication
 * Return 0 if Ok, 1 if failed.
 */

U32 InitTarget (void)  {
//---TODO:
  return (0);            // say 'Ok.'
}


/*
 * Target settings have changed (Baudrate or ComPort for example)
 * Return 0 if Ok, 1 if failed.
 */

U32 ReInitTarget (void)  {
//---TODO: shutdown target
//---      reinit communication with current 'MonConf' values
  return (0);            // say 'Ok.'
}

/*
 * Stop your target communication
 * Free all resources (dynamic memory, ...)
 */

void StopTarget (void)  {
  FreeCache();                 // free allocated cache memory.
//---TODO: add code for cleanup
}

/*
 * Reset your target. Set PC to whatever required value
 */

void ResetTarget (void)  {
//---TODO: add code for target reset
}


/*
 * Read PC out of target
 */

UL32 ReadPC (void)  {
  UL32   nPC;

//---TODO: read PC out of target

  nPC  = REG51.nPC & 0xFFFF;     // we use shadow PC for now...
  nPC |= (amCODE << 24);         // C:0xnnnn
  return (nPC);
}


/*
 * Write PC out to target
 */

void WritePC (UL32 nPC)  {
//---TODO: write PC to target
  REG51.nPC = nPC;                // keep in shadow registers
}



/*
 * Read all registers out of target and fill the REG51 structure
 */

void GetRegs (void)  {
  if (RegUpToDate) return;        // already up to date
  if (iRun) return;               // currently executing, can't access
  curPC = REG51.nPC = ReadPC();
 
//---TODO: fetch regs from target and put them into REG51
//---if connection is broken for some reason, then set PlayDead:=1 !
}


/*
 * Write all registers to target
 */

void SetRegs (RG51 *pR)  {
//--- write pR->Rn[0] ... pR->Rn[7]
//--- write pR->sp, pR->psw, pR->b, pR->acc, pR->dpl, pR->dph, pR->nPC
  WritePC (pR->nPC);
  REG51 = *pR;
//---if connection is broken for some reason, then set PlayDead:=1 !
}


/*
 * Stop execution of user program
 */

U32 StopExec (void)  {
  if (iRun)  {                  // if currently executing
//---TODO: Stop exec
//---if successful, return (1), else (0)
  }
  return (1);                   // 'Stopped'
}

/*
 * Invalidate everything which may be invalid after Go or Step
 *  (Registers, Caches, etc.)
 */

void Invalidate (void)  {
  RegUpToDate = 0;                       // invalidate Registers
  ClearCaR ((amDATA << 24)  | 0x00, 0);  // invalidate data-cache
  ClearCaR ((amIDATA << 24) | 0x80, 128);// invalidate idata-cache
  ClearCaR ((amXDATA << 24) | 0x0000, 0x10000);// invalidate xdata-cache
}


/*
 * Execute a single instruction, return 1 if ok, else 0
 */

UL32 Step (void)  {
//--TODO: 
  return (1);
}


/*
 * Start execution.  Stop when a Bp is reached
 */

void GoCmd (void)  {
//--TODO:
}


/*
 * Set/Clear Breakpoint at address pB->Adr
 */

int SetClrBp (int set, AG_BP *pB)  {
  int       nR;

  nR = 1;
  if (set)  {                   // set address break
//---TODO: give target a message about Set-Bp at address 'pB->Adr'
//---      if ok, then return (1), else (0)
//  if (failed)  {
//    MessageBeep (MB_OK);
//    txtout ((char *) szNBP, pB->Adr);
//    nR = 0;
//  }
  }
  else  {                       // clear address break
//---TODO: give target a message about Clear-Bp at address 'pB->Adr'
//---      if ok, then return (1), else (0)
  }
  return (nR);
}


//--- Flash Download interface functions follow
//------------------------------------------------------

/*
 * Initialize Flash programmer, download programmer firmware.
 * Return 0 if Ok, 1 if failed.
 */

int InitProgrammer (void)
{
  FlashProg = 1;         // we have started the Flash Programmer   
//---TODO: Add your initialization code here
  return (0);            // say 'Ok.'
}


/*
 * Stop Flash programmer, disconnect device power
 * Return 0 if Ok, 1 if failed.
 */

int ExitProgrammer (void)
{
  if (!FlashProg) return (0); // if Already done, just return
//---TODO: Add your deinitialization code here
//---If insertion socket is used for target Flash, make sure that all address,
//---data and control pins are held low and target VCC is disconnected here.
  FlashProg = 0;
  return (0);            // say 'Ok.'
}


/*
 * Enter programming mode for the flash device
 * Return 0 if Ok, 1 if failed.
 */

int EnterProgMode (void)
{
//---TODO: Add code for activating programming mode or just return if not needed
  return (0);            // say 'Ok.'
}


/*
 * Check device ID
 * Return 0 if Ok, 1 if failed.
 */

int CheckDevID (void)
{
//---TODO: Add code to Read device ID and verify device type
  return (0);            // say 'Ok.'
}


/*
 * Erase the flash device
 * Return 0 if Ok, 1 if failed.
 */

int EraseFlash (void)
{
//---TODO: Add Flash Erase code here
  return (0);            // say 'Ok.'
}


/*
 * Write data to Flash device
 * Return 0 if Ok, 1 if failed.
 */

int WriteToFlash (DWORD nAdr, BYTE *pb, DWORD nCnt, DWORD *eAdr)
{
//---TODO: Add Flash Write Code here
//---Note: nAdr has uVision2 address convention
//---if write fails, set write error addres and return 1
  *eAdr = 0;
  return (0);            // say 'Ok.'
}


/*
 * Verify the content of Flash device
 * Return 0 if Ok, 1 if failed.
 */

int VerifyFlash (DWORD nAdr, BYTE *pb, DWORD nCnt, DWORD *eAdr)
{
//---TODO: Verify Flash Code here
//---Note: nAdr has uVision2 address convention
//---if verify fails, set verify error addres and return 1
  *eAdr = 0;
  return (0);            // say 'Ok.'
}


/*
 * Send text Error message to Build window
 */

static void PgmError (char *pCmd)  {
  txtout ("*** Error: %s\n", pCmd);
}

/*
 * Initialize target Flash device.
 * Return 0 if Ok, 1 if failed.

⌨️ 快捷键说明

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