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

📄 adceshidlg.cpp

📁 基于Wince 4.2 操作系统
💻 CPP
字号:
// ADceshiDlg.cpp : implementation file
//
#include <stdlib.h>       
#include <stdio.h>
#include <malloc.h>

#include "stdafx.h"
#include "ADceshi.h"
#include "ADceshiDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CADceshiDlg dialog

CADceshiDlg::CADceshiDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CADceshiDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CADceshiDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CADceshiDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CADceshiDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CADceshiDlg, CDialog)
	//{{AFX_MSG_MAP(CADceshiDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CADceshiDlg message handlers

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

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen
//////////////////SPI
	v_pSSPRegs = (volatile SSPreg*)VirtualAlloc(0, sizeof(SSPreg), MEM_RESERVE, PAGE_NOACCESS);
     if (v_pSSPRegs == NULL) 
	 {
     DEBUGMSG (1,(TEXT("v_pSSPRegs is not allocated\n\r")));
      return TRUE;
	 }
      if (!VirtualCopy((PVOID)v_pSSPRegs, (PVOID)SSP_BASE, sizeof(SSPreg), PAGE_READWRITE|PAGE_NOCACHE)) 
	  {
         DEBUGMSG (1,(TEXT("v_pSSPRegs is not mapped\n\r")));
         return TRUE;
	  }
      DEBUGMSG (1,(TEXT("v_pSSPRegs is mapped to %x\n\r"), v_pSSPRegs));
	
//////////////////GPIO
	  v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
     if (v_pIOPRegs == NULL) 
	 {
       DEBUGMSG (1,(TEXT("v_pIOPRegs is not allocated\n\r")));
       return TRUE;
	 }
      if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE)) 
	  {
         DEBUGMSG (1,(TEXT("v_pIOPRegs is not mapped\n\r")));
         return TRUE;
	  }
      DEBUGMSG (1,(TEXT("v_pIOPRegs is mapped to %x\n\r"), v_pIOPRegs));
	

	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CADceshiDlg::OnButton1() 
{
	unsigned long *p;
	p=new unsigned long[20];
	int i;
	v_pSSPRegs->rSPPRE0=0x32;     // 波特率预分频=50   rate=PCLK/2/(Prescaler value+1)
	//v_pSSPRegs->rSPCON0=0x18;     // 查询模式,允许SCK,主设备,
	v_pSSPRegs->rSPCON0=(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);	
	for(i=0;i<10;i++)
	v_pSSPRegs->rSPTDAT0=0x03;
//	v_pIOPRegs->rGPECON|=0x0a800000;
	//v_pIOPRegs->rGPECON&=(~0x05400000);
	v_pIOPRegs->rGPECON=(2<<26)|(2<<24)|(2<<22);
	 v_pIOPRegs->rGPEUP  = 0xffff;  
    v_pIOPRegs->rGPEUP &= 0xC7ff;

     v_pIOPRegs->rGPGCON &= ~(0x3 << 4);                          
	 v_pIOPRegs->rGPGCON |= (0x1 << 4);
	 v_pIOPRegs->rGPGUP &= ~(0x1 << 2);	
	  // Initialize CS is high      
	 v_pIOPRegs->rGPGDAT |= (0x1 << 2); 

	v_pSSPRegs->rSPPIN0=(0<<2)|(1<<1)|(0<<0);	
//	v_pIOPRegs->rGPEUP|=0x3800
	v_pIOPRegs->rGPHCON|=0x0400;;
	v_pIOPRegs->rGPHCON&=(~0x0800);
	v_pIOPRegs->rGPHUP&=(~0x20);
	v_pIOPRegs->rGPHDAT|=0x20;
    RETAILMSG(1,(TEXT("rSPSTA0 '%x'\r\n"),v_pSSPRegs->rSPRDAT0));
    for(unsigned long j=0;j<20;j++)
	{
      // v_pIOPRegs->rGPHDAT&=(~0x20);
	    v_pIOPRegs->rGPGDAT &= ~(0x1 << 2);
	   //Sleep(2000);
       while(!(v_pSSPRegs->rSPSTA0 & 0x01));
	   p[j]=v_pSSPRegs->rSPRDAT0;

	   //  p[j]<<8;
	   //while(!(v_pSSPRegs->rSPSTA0 & 0x01));
	   // p[j]=p[j]+v_pSSPRegs->rSPRDAT0;
       v_pSSPRegs->rSPTDAT0=0xFF;
     //  v_pIOPRegs->rGPHDAT|=0x20;
	    v_pIOPRegs->rGPGDAT |= (0x1 << 2);
	   Sleep(2000);
	   RETAILMSG(1,(TEXT("rSPSTA0 '%x'\r\n"),v_pSSPRegs->rSPSTA0));

	}
    
    //char *p;
	//int n;
	//p=malloc(_MAX_PATH );
//     
      
     for(unsigned long m=0;i<20;i++)
       RETAILMSG(1,(TEXT("ADC_READ: Read Success! ADCDAT0 '%x'\r\n"),p[m]));

	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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