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

📄 peridialog.cpp

📁 Implementing μVision2 DLLs for Visual borland c++ builder
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	//}}AFX_DATA_INIT
//}


void CPeriDialog::Update (void)  {          /* Update Dialog Contents */
  DWORD  rate, convst, fosc;
  static DWORD  rated;
  static DWORD  convstd;
  union  fv     ain0,  ain1,  ain2,  ain3,  ain4,  ain5,  ain6,  ain7 , temp,  vref;
  static float  ain0d, ain1d, ain2d, ain3d, ain4d, ain5d, ain6d, ain7d, tempd, vrefd;
  static DWORD  adccon1d, adccon2d, adccon3d, adcdatald, adcdatahd, dmald, dmahd, dmapd;
  char locbuffer[20];

  Agsi.ReadSFR(ADCCON1,  &adccon1,  &adccon1p,  0xFF);
  Agsi.ReadSFR(ADCCON2,  &adccon2,  &adccon2p,  0xFF);
  Agsi.ReadSFR(ADCCON3,  &adccon3,  &adccon3p,  0xFF);
  Agsi.ReadSFR(ADCDATAL, &adcdatal, &adcdatalp, 0xFF);
  Agsi.ReadSFR(ADCDATAH, &adcdatah, &adcdatahp, 0xFF);
  Agsi.ReadSFR(DMAL,     &dmal,     &dmalp,     0xFF);
  Agsi.ReadSFR(DMAH,     &dmah,     &dmahp,     0xFF);
  Agsi.ReadSFR(DMAP,     &dmap,     &dmapp,     0xFF);

  Agsi.ReadVTR(AIN0,   &ain0.DW);
  Agsi.ReadVTR(AIN1,   &ain1.DW);
  Agsi.ReadVTR(AIN2,   &ain2.DW);
  Agsi.ReadVTR(AIN3,   &ain3.DW);
  Agsi.ReadVTR(AIN4,   &ain4.DW);
  Agsi.ReadVTR(AIN5,   &ain5.DW);
  Agsi.ReadVTR(AIN6,   &ain6.DW);
  Agsi.ReadVTR(AIN7,   &ain7.DW);
  Agsi.ReadVTR(TEMP,   &temp.DW);
  Agsi.ReadVTR(VREF,   &vref.DW);
  Agsi.ReadVTR(XTAL,   &fosc);
  Agsi.ReadVTR(CONVST, &convst);

  if (initflag == 1) {
    adccon1d  = ~adccon1;
	adccon2d  = ~adccon2;
	adccon3d  = ~adccon3;
    adcdatald = ~adcdatal;
    adcdatahd = ~adcdatah;
	dmald     = ~dmal;
	dmahd     = ~dmah;
	dmapd     = ~dmap;
    ain0d     = ain0.f + 1.0f;
    ain1d     = ain1.f + 1.0f;
    ain2d     = ain2.f + 1.0f;
    ain3d     = ain3.f + 1.0f;
    ain4d     = ain4.f + 1.0f;
    ain5d     = ain5.f + 1.0f;
    ain6d     = ain6.f + 1.0f;
    ain7d     = ain7.f + 1.0f;
    tempd     = temp.f + 1.0f;
    vrefd     = vref.f + 1.0f;
	rated     = 0xFFFFFFFF;
	convstd   = convst ^ 0x01;
  }

  if (initflag == 2) adccon3d = ~adccon3;

  initflag = 0;

  if (adccon1d != adccon1) {
    StringHex2 (GetDlgItem (IDC_AD_ADCCON1), adccon1);
    if ((adccon1d ^ adccon1) & 0xC0) ((CComboBox *) GetDlgItem (IDC_AD_MODE))->SetCurSel((adccon1 & 0xC0) >> 6);
    if ((adccon1d ^ adccon1) & 0x30) ((CComboBox *) GetDlgItem (IDC_AD_CLOCK))->SetCurSel((adccon1 & 0x30) >> 4);
    if ((adccon1d ^ adccon1) & 0x0C) ((CComboBox *) GetDlgItem (IDC_AD_ACQUISITION))->SetCurSel((adccon1 & 0x0C) >> 2);
    if ((adccon1d ^ adccon1) & 0x02) ((CButton *) GetDlgItem (IDC_AD_T2C))->SetCheck ((adccon1 & 0x02) ? 1 : 0);
    if ((adccon1d ^ adccon1) & 0x01) ((CButton *) GetDlgItem (IDC_AD_EXC))->SetCheck ((adccon1 & 0x01) ? 1 : 0);
	adccon1d = adccon1;
  }

  if (adccon2d != adccon2) {
    StringHex2 (GetDlgItem (IDC_AD_ADCCON2), adccon2);
    if ((adccon2d ^ adccon2) & 0x0F) ((CComboBox *) GetDlgItem (IDC_AD_CHANNEL))->SetCurSel(adccon2 & 0x0F);
    if ((adccon2d ^ adccon2) & 0x10) ((CButton *) GetDlgItem (IDC_AD_SCONV))->SetCheck ((adccon2 & 0x10) ? 1 : 0);
    if ((adccon2d ^ adccon2) & 0x20) ((CButton *) GetDlgItem (IDC_AD_CCONV))->SetCheck ((adccon2 & 0x20) ? 1 : 0);
    if ((adccon2d ^ adccon2) & 0x40) ((CButton *) GetDlgItem (IDC_AD_DMA))->SetCheck ((adccon2 & 0x40) ? 1 : 0);
    if ((adccon2d ^ adccon2) & 0x80) ((CButton *) GetDlgItem (IDC_AD_ADCI))->SetCheck ((adccon2 & 0x80) ? 1 : 0);
	adccon2d = adccon2;
  }

  if (adccon3d != adccon3) {
    StringHex2 (GetDlgItem (IDC_AD_ADCCON3), adccon3);
    if ((adccon3d ^ adccon3) & 0x80) ((CButton *) GetDlgItem (IDC_AD_BUSY))->SetCheck ((adccon3 & 0x80) ? 1 : 0);
	adccon3d = adccon3;
  }

  if ((adcdatald != adcdatal) || (adcdatahd != adcdatah)) {
    StringHex4 (GetDlgItem (IDC_AD_ADCDATA), (adcdatah << 8) + adcdatal);
	adcdatald = adcdatal;
	adcdatahd = adcdatah;
  }

  if ((dmald != dmal) || (dmahd != dmah) || (dmapd != dmap)) {
    StringHex6 (GetDlgItem (IDC_AD_DMAPHL), (dmap << 16) + (dmah << 8) + dmal);
    dmald = dmal;
    dmahd = dmah;
    dmapd = dmap;
  }

  rate = (fosc / (((adccon1 & 0x0C) >> 2) + 17)) >> ((adccon1 & 0x30) >> 4);
  if (rated != rate) {
    sprintf (locbuffer, "%ld", rate);
    SetDlgItemText (IDC_AD_RATE, locbuffer);
	rated = rate;
  }

  if ((convstd ^ convst) & 0x01) {
    ((CButton *) GetDlgItem (IDC_AD_CONVST))->SetCheck ((convst & 0x01) ? 1 : 0);
	convstd = convst;
  }

  if (ain0d != ain0.f) { StringFloat (GetDlgItem (IDC_AD_AIN0), ain0.f); ain0d = ain0.f; }
  if (ain1d != ain1.f) { StringFloat (GetDlgItem (IDC_AD_AIN1), ain1.f); ain1d = ain1.f; }
  if (ain2d != ain2.f) { StringFloat (GetDlgItem (IDC_AD_AIN2), ain2.f); ain2d = ain2.f; }
  if (ain3d != ain3.f) { StringFloat (GetDlgItem (IDC_AD_AIN3), ain3.f); ain3d = ain3.f; }
  if (ain4d != ain4.f) { StringFloat (GetDlgItem (IDC_AD_AIN4), ain4.f); ain4d = ain4.f; }
  if (ain5d != ain5.f) { StringFloat (GetDlgItem (IDC_AD_AIN5), ain5.f); ain5d = ain5.f; }
  if (ain6d != ain6.f) { StringFloat (GetDlgItem (IDC_AD_AIN6), ain6.f); ain6d = ain6.f; }
  if (ain7d != ain7.f) { StringFloat (GetDlgItem (IDC_AD_AIN7), ain7.f); ain7d = ain7.f; }
  if (vrefd != vref.f) { StringFloat (GetDlgItem (IDC_AD_VREF), vref.f); vrefd = vref.f; }
  if (tempd != temp.f) {
    sprintf (locbuffer, "%1.1f", temp.f);
    (GetDlgItem (IDC_AD_TEMP))->SetWindowText (locbuffer);
	tempd = temp.f;
  }

}


BEGIN_MESSAGE_MAP(CPeriDialog, CDialog)
	//{{AFX_MSG_MAP(CPeriDialog)
	ON_WM_ACTIVATE()
	ON_WM_CLOSE()
	ON_CBN_SELCHANGE(IDC_AD_MODE, OnSelchangeAdMode)
	ON_CBN_SELCHANGE(IDC_AD_CLOCK, OnSelchangeAdClock)
	ON_CBN_SELCHANGE(IDC_AD_ACQUISITION, OnSelchangeAdAcquisition)
	ON_CBN_SELCHANGE(IDC_AD_CHANNEL, OnSelchangeAdChannel)
	ON_EN_KILLFOCUS(IDC_AD_ADCCON1, OnKillfocusAdAdccon1)
	ON_EN_KILLFOCUS(IDC_AD_ADCCON2, OnKillfocusAdAdccon2)
	ON_EN_KILLFOCUS(IDC_AD_ADCCON3, OnKillfocusAdAdccon3)
	ON_EN_KILLFOCUS(IDC_AD_ADCDATA, OnKillfocusAdAdcdata)
	ON_EN_KILLFOCUS(IDC_AD_DMAPHL, OnKillfocusAdDmaphl)
	ON_BN_CLICKED(IDC_AD_CONVST, OnAdConvst)
	ON_BN_CLICKED(IDC_AD_SCONV, OnAdSconv)
	ON_BN_CLICKED(IDC_AD_CCONV, OnAdCconv)
	ON_BN_CLICKED(IDC_AD_DMA, OnAdDma)
	ON_BN_CLICKED(IDC_AD_EXC, OnAdExc)
	ON_BN_CLICKED(IDC_AD_T2C, OnAdT2c)
	ON_BN_CLICKED(IDC_AD_ADCI, OnAdAdci)
	ON_BN_CLICKED(IDC_AD_BUSY, OnAdBusy)
	ON_EN_KILLFOCUS(IDC_AD_AIN0, OnKillfocusAdAin0)
	ON_EN_KILLFOCUS(IDC_AD_AIN1, OnKillfocusAdAin1)
	ON_EN_KILLFOCUS(IDC_AD_AIN2, OnKillfocusAdAin2)
	ON_EN_KILLFOCUS(IDC_AD_AIN3, OnKillfocusAdAin3)
	ON_EN_KILLFOCUS(IDC_AD_AIN4, OnKillfocusAdAin4)
	ON_EN_KILLFOCUS(IDC_AD_AIN5, OnKillfocusAdAin5)
	ON_EN_KILLFOCUS(IDC_AD_AIN6, OnKillfocusAdAin6)
	ON_EN_KILLFOCUS(IDC_AD_AIN7, OnKillfocusAdAin7)
	ON_EN_KILLFOCUS(IDC_AD_TEMP, OnKillfocusAdTemp)
	ON_EN_KILLFOCUS(IDC_AD_VREF, OnKillfocusAdVref)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPeriDialog message handlers

void CPeriDialog::PostNcDestroy() {

  delete this;              // delete the new'ed object
  pCPeriDialog = NULL;      // clear external Object pointer here.
}

BOOL CPeriDialog::OnInitDialog() {
  CDialog::OnInitDialog();

	// TODO: Add extra initialization here
	
  initflag =1;
  Update();
  return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPeriDialog::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) {
  CDialog::OnActivate(nState, pWndOther, bMinimized);
  
  switch (nState)  {
    case WA_INACTIVE:
      Agsi.HandleFocus(NULL);      // Clear Modeless Handle
      break;
    case WA_ACTIVE:
    case WA_CLICKACTIVE:
      Agsi.HandleFocus(m_hWnd);    // Set Modeless Handle
      break;
  }
}

void CPeriDialog::OnClose() {

  GetWindowRect (&pM->pDlg->rc);  // save Window position
  pM->pDlg->hw = NULL;            // clear m_hWnd
  DestroyWindow();                //--- modeless
}


void CPeriDialog::OnSelchangeAdMode() {
  int i;
  DWORD val;
	
  i = ((CComboBox *) GetDlgItem (IDC_AD_MODE))->GetCurSel(); 
  val = (i & 3) << 6;
  Agsi.WriteSFR(ADCCON1, val, 0xC0);
  Agsi.UpdateWindows();
}

void CPeriDialog::OnSelchangeAdClock() {
  int i;
  DWORD val;
	
  i = ((CComboBox *) GetDlgItem (IDC_AD_CLOCK))->GetCurSel();
  val = (i & 3) << 4;
  Agsi.WriteSFR(ADCCON1, val, 0x30);
  Agsi.UpdateWindows();
}

void CPeriDialog::OnSelchangeAdAcquisition() {
  int i;
  DWORD val;
	
  i = ((CComboBox *) GetDlgItem (IDC_AD_ACQUISITION))->GetCurSel();
  val = (i & 3) << 2;
  Agsi.WriteSFR(ADCCON1, val, 0x0C);
  Agsi.UpdateWindows();
}

void CPeriDialog::OnSelchangeAdChannel() {
  int i;
  DWORD val;
	
  i = ((CComboBox *) GetDlgItem (IDC_AD_CHANNEL))->GetCurSel();
  val = i & 0x0F;
  Agsi.WriteSFR(ADCCON2, val, 0x0F);
  Agsi.UpdateWindows();
}


void CPeriDialog::OnKillfocusAdAdccon1() { HandleByteInput (GetDlgItem(IDC_AD_ADCCON1), ADCCON1); } 
void CPeriDialog::OnKillfocusAdAdccon2() { HandleByteInput (GetDlgItem(IDC_AD_ADCCON2), ADCCON2); } 
void CPeriDialog::OnKillfocusAdAdccon3() { HandleByteInput (GetDlgItem(IDC_AD_ADCCON3), ADCCON3); } 
void CPeriDialog::OnKillfocusAdAdcdata() { HandleWordInput (GetDlgItem(IDC_AD_ADCDATA), ADCDATAL, ADCDATAH); } 
void CPeriDialog::OnKillfocusAdDmaphl()  { Handle3ByteInput (GetDlgItem(IDC_AD_DMAPHL), DMAL, DMAH, DMAP); } 

void CPeriDialog::OnAdConvst() { WriteBitVTR(CONVST, 0x01, IsDlgButtonChecked (IDC_AD_CONVST)); } 

void CPeriDialog::OnAdSconv()  { WriteBit(ADCCON2, 0x10, IsDlgButtonChecked (IDC_AD_SCONV)); }
void CPeriDialog::OnAdCconv()  { WriteBit(ADCCON2, 0x20, IsDlgButtonChecked (IDC_AD_CCONV)); }
void CPeriDialog::OnAdDma()    { WriteBit(ADCCON2, 0x40, IsDlgButtonChecked (IDC_AD_DMA)); }
void CPeriDialog::OnAdExc()    { WriteBit(ADCCON1, 0x01, IsDlgButtonChecked (IDC_AD_EXC)); }
void CPeriDialog::OnAdT2c()    { WriteBit(ADCCON1, 0x02, IsDlgButtonChecked (IDC_AD_T2C)); }
void CPeriDialog::OnAdAdci()   { WriteBit(ADCCON2, 0x80, IsDlgButtonChecked (IDC_AD_ADCI)); }
void CPeriDialog::OnAdBusy()   { WriteBit(ADCCON3, 0x80, IsDlgButtonChecked (IDC_AD_BUSY)); }

void CPeriDialog::OnKillfocusAdAin0() { HandleFloatInput (GetDlgItem(IDC_AD_AIN0), AIN0); }
void CPeriDialog::OnKillfocusAdAin1() { HandleFloatInput (GetDlgItem(IDC_AD_AIN1), AIN1); }
void CPeriDialog::OnKillfocusAdAin2() { HandleFloatInput (GetDlgItem(IDC_AD_AIN2), AIN2); }
void CPeriDialog::OnKillfocusAdAin3() { HandleFloatInput (GetDlgItem(IDC_AD_AIN3), AIN3); }
void CPeriDialog::OnKillfocusAdAin4() { HandleFloatInput (GetDlgItem(IDC_AD_AIN4), AIN4); }
void CPeriDialog::OnKillfocusAdAin5() { HandleFloatInput (GetDlgItem(IDC_AD_AIN5), AIN5); }
void CPeriDialog::OnKillfocusAdAin6() { HandleFloatInput (GetDlgItem(IDC_AD_AIN6), AIN6); }
void CPeriDialog::OnKillfocusAdAin7() { HandleFloatInput (GetDlgItem(IDC_AD_AIN7), AIN7); }

void CPeriDialog::OnKillfocusAdTemp() { HandleFloatInput (GetDlgItem(IDC_AD_TEMP), TEMP); }
void CPeriDialog::OnKillfocusAdVref() { HandleFloatInput (GetDlgItem(IDC_AD_VREF), VREF); }


// The following two functions and the corresponding invisible buttons are necessary 
// to handle the behavior of the ESC and Enter Keys 
void CPeriDialog::OnOK() {
	
//	CDialog::OnOK();  // Do nothing when <Enter> is pressed
}

void CPeriDialog::OnCancel() {
	
  OnClose();            // Close Dialog when <ESC> is pressed 
}

⌨️ 快捷键说明

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