亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? speridll.cpp

?? Implementing μVision2 DLLs for Visual borland c++ builder
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// SPeriDLL.cpp : Defines the initialization routines for the DLL.
// Sample Peripheral DLL: A/D Converter for ADuC812

#include "stdafx.h"
#include "Agsi.h"
#include "SPeriDLL.h"
#include "PeriDialog.h"

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

//
//	Note!
//
//		If this DLL is dynamically linked against the MFC
//		DLLs, any functions exported from this DLL which
//		call into MFC must have the AFX_MANAGE_STATE macro
//		added at the very beginning of the function.
//
//		For example:
//
//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
//		{
//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
//			// normal function body here
//		}
//
//		It is very important that this macro appear in each
//		function, prior to any calls into MFC.  This means that
//		it must appear as the first statement within the 
//		function, even before any object variable declarations
//		as their constructors may generate calls into the MFC
//		DLL.
//
//		Please see MFC Technical Notes 33 and 58 for additional
//		details.
//

/////////////////////////////////////////////////////////////////////////////
// CSPeriDLLApp

BEGIN_MESSAGE_MAP(CSPeriDLLApp, CWinApp)
	//{{AFX_MSG_MAP(CSPeriDLLApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static AGSICONFIG  AgsiConfig;
struct AGSIFUNCS   Agsi;

DWORD GetFunctionPointers(void) {           // get all function pointers

  Agsi.DefineSFR            = (tAgsiDefineSFR)             GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineSFR");
  Agsi.DefineVTR            = (tAgsiDefineVTR)             GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineVTR");
  Agsi.DeclareInterrupt     = (tAgsiDeclareInterrupt)      GetProcAddress(AgsiConfig.m_hInstance, "AgsiDeclareInterrupt");
  Agsi.SetWatchOnSFR        = (tAgsiSetWatchOnSFR)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnSFR");
  Agsi.SetWatchOnVTR        = (tAgsiSetWatchOnVTR)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnVTR");
  Agsi.SetWatchOnMemory     = (tAgsiSetWatchOnMemory)      GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnMemory");
  Agsi.CreateTimer          = (tAgsiCreateTimer)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiCreateTimer");
  Agsi.DefineMenuItem       = (tAgsiDefineMenuItem)        GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineMenuItem");

  Agsi.WriteSFR             = (tAgsiWriteSFR)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteSFR");
  Agsi.ReadSFR              = (tAgsiReadSFR)               GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadSFR");
  Agsi.WriteVTR             = (tAgsiWriteVTR)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteVTR");
  Agsi.ReadVTR              = (tAgsiReadVTR)               GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadVTR");
  Agsi.SetSFRReadValue      = (tAgsiSetSFRReadValue)       GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetSFRReadValue");
  Agsi.ReadMemory           = (tAgsiReadMemory)            GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadMemory");
  Agsi.WriteMemory          = (tAgsiWriteMemory)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteMemory");
  Agsi.GetLastMemoryAddress = (tAgsiGetLastMemoryAddress)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetLastMemoryAddress");
  Agsi.IsSimulatorAccess    = (tAgsiIsSimulatorAccess)     GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsSimulatorAccess");
  Agsi.SetTimer             = (tAgsiSetTimer)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetTimer");
  Agsi.GetClock             = (tAgsiGetClock)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetClock");
//  Agsi.GetLogicalClockFactor= (tAgsiGetLogicalClockFactor) GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetLogicalClockFactor");
//  Agsi.GetPhysicalClockRate = (tAgsiGetPhysicalClockRate)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetPhysicalClockRate");
//  Agsi.SetPhysicalClockRate = (tAgsiSetPhysicalClockRate)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetPhysicalClockRate");
  Agsi.GetProgramCounter    = (tAgsiGetProgramCounter)     GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetProgramCounter");
  Agsi.IsInInterrupt        = (tAgsiIsInInterrupt)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsInInterrupt");
  Agsi.IsSleeping           = (tAgsiIsSleeping)            GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsSleeping");
//  Agsi.WakeUp               = (tAgsiWakeUp)                GetProcAddress(AgsiConfig.m_hInstance, "AgsiWakeUp");
  Agsi.StopSimulator        = (tAgsiStopSimulator)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiStopSimulator");
  Agsi.TriggerReset         = (tAgsiTriggerReset)          GetProcAddress(AgsiConfig.m_hInstance, "AgsiTriggerReset");
  Agsi.UpdateWindows        = (tAgsiUpdateWindows)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiUpdateWindows");
  Agsi.HandleFocus          = (tAgsiHandleFocus)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiHandleFocus");

  if ((Agsi.DefineSFR            == NULL) || (Agsi.DefineSFR            == NULL) ||
      (Agsi.DefineVTR            == NULL) || (Agsi.SetWatchOnSFR        == NULL) ||
      (Agsi.SetWatchOnVTR        == NULL) || (Agsi.SetWatchOnMemory     == NULL) ||
      (Agsi.CreateTimer          == NULL) || (Agsi.DefineMenuItem       == NULL) ||
      (Agsi.WriteSFR             == NULL) || (Agsi.ReadSFR              == NULL) ||
      (Agsi.WriteVTR             == NULL) || (Agsi.ReadVTR              == NULL) ||
      (Agsi.SetSFRReadValue      == NULL) || (Agsi.ReadMemory           == NULL) ||
      (Agsi.WriteMemory          == NULL) || (Agsi.GetLastMemoryAddress == NULL) ||
      (Agsi.IsSimulatorAccess    == NULL) || (Agsi.SetTimer             == NULL) ||
      (Agsi.GetClock             == NULL) || /* (Agsi.GetLogicalClockFactor== NULL) || */
//      (Agsi.GetPhysicalClockRate == NULL) || (Agsi.SetPhysicalClockRate == NULL) ||
      (Agsi.GetProgramCounter    == NULL) || (Agsi.DeclareInterrupt     == NULL) ||
      (Agsi.IsInInterrupt        == NULL) || (Agsi.IsSleeping           == NULL) ||
  /*  (Agsi.WakeUp               == NULL)||*/(Agsi.StopSimulator        == NULL) ||
      (Agsi.TriggerReset         == NULL) || (Agsi.UpdateWindows        == NULL) ||
	  (Agsi.HandleFocus          == NULL)) {
    return(FALSE);
  }

  return(1);
}


DWORD DefineAllSFR(void) {           // declare all special function registers and their bits
  BOOL ret = TRUE;

  ret &= Agsi.DefineSFR("ADCCON1",  ADCCON1,  AGSIBYTE, 0);  // If more SFR's are defined, do it in a table
  ret &= Agsi.DefineSFR("ADCCON2",  ADCCON2,  AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("ADCCON3",  ADCCON3,  AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("ADCDATAL", ADCDATAL, AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("ADCDATAH", ADCDATAH, AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("DMAL",     DMAL,     AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("DMAH",     DMAH,     AGSIBYTE, 0);
  ret &= Agsi.DefineSFR("DMAP",     DMAP,     AGSIBYTE, 0);

  // It is only allowed to define bits which are bitaddressable.
  ret &= Agsi.DefineSFR("CS0",      ADCCON2,  AGSIBIT,  0);
  ret &= Agsi.DefineSFR("CS1",      ADCCON2,  AGSIBIT,  1);
  ret &= Agsi.DefineSFR("CS2",      ADCCON2,  AGSIBIT,  2);
  ret &= Agsi.DefineSFR("CS3",      ADCCON2,  AGSIBIT,  3);
  ret &= Agsi.DefineSFR("SCONV",    ADCCON2,  AGSIBIT,  4);
  ret &= Agsi.DefineSFR("CCNOV",    ADCCON2,  AGSIBIT,  5);
  ret &= Agsi.DefineSFR("DMA",      ADCCON2,  AGSIBIT,  6);
  ret &= Agsi.DefineSFR("ADCI",     ADCCON2,  AGSIBIT,  7);

  return(ret);
}


struct vtrlist VTREG[] = {           // VTR's definition: keep this table consistent with defines in SPeriDLL.h
  { "AIN0",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN1",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN2",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN3",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN4",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN5",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN6",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "AIN7",   AGSIVTRFLOAT, 0x00000000, NULL },
  { "TEMP",   AGSIVTRFLOAT, 0x41C80000, NULL },  // 25 癈
  { "VREF",   AGSIVTRFLOAT, 0x40200000, NULL },  // 2.5 V
  { "XTAL",   AGSIVTRLONG,  0x00A8C000, NULL },  // 11.0592MHz oscillator frequency
  { "CONVST", AGSIVTRCHAR,  0x00000001, NULL },
};

DWORD DefineAllVTREG(void) {         // declare all virtual registers
  BOOL ret = TRUE;
  int i;

  for (i = 0; i <= 11; i++) {
    VTREG[i].hVTR = Agsi.DefineVTR(VTREG[i].pName, VTREG[i].Type, VTREG[i].Value);
	if (!VTREG[i].hVTR) ret = FALSE;
  }

  return(ret);
}


AGSIINTERRUPT Interrupt = {     // Table of all Interrupts of this module
// vec    *mess           msfr mmask *mname  rsfr     rmask *rname  esfr  emask *ename  p0sfr p0mask *pname p1sfr p1mask pwl auto_reset
   0x33, "A/D Converter",  0,  0,     "",    ADCCON2, 0x80, "ADCI", IE,   0x40, "EADC", IP,   0x40,  "Pri", 0,    0x00,  7,  1   // ADCI
};


DWORD DefineAllInterrupts(void) {   // declare all interrupts

  if (!Agsi.DeclareInterrupt(&Interrupt)) return(FALSE);

  return(TRUE);
}


AGSITIMER Timer;

DWORD DefineAllWatches(void) {      // define all Watches
  BOOL ret = TRUE;

  ret &= Agsi.SetWatchOnSFR(ADCCON1, AdcConv, AGSIWRITE);
  ret &= Agsi.SetWatchOnSFR(ADCCON2, AdcConv, AGSIWRITE);
  ret &= Agsi.SetWatchOnSFR(ADCCON3, AdcConv, AGSIWRITE);
  ret &= Agsi.SetWatchOnVTR(CONVST,  AdcConv, AGSIWRITE);

  Timer = Agsi.CreateTimer(AdcCompleted);
  if (!Timer) return(FALSE);

  return(ret);
}


DWORD DefineAllMenuEntries(void) {  // declare all peripheral-menu entries and dialogs

  if (!Agsi.DefineMenuItem(&PeriMenu)) return(FALSE);

  return(TRUE);
}


DWORD ResetPeripheral(void) {       // reset all SFR's of this peripheral
  BOOL ret = TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产一区二区精华液| 国产乱子伦一区二区三区国色天香| 国产亚洲精品中文字幕| 91成人在线观看喷潮| 成人精品亚洲人成在线| 国产一区二区三区电影在线观看| 亚洲成人免费视频| 一区二区三区欧美| 亚洲视频一区在线| 国产精品久久网站| 国产精品天天看| 欧美国产日韩亚洲一区| 国产女主播视频一区二区| 精品日韩成人av| 日韩片之四级片| 日韩一区二区在线看片| 日韩亚洲电影在线| 精品欧美一区二区在线观看| 日韩欧美的一区| 欧美成人video| 久久亚洲综合色| 午夜一区二区三区在线观看| 亚洲九九爱视频| 亚洲成人av一区二区三区| 日本三级亚洲精品| 国产精品123| 99久久久国产精品| 欧美日本高清视频在线观看| 日韩三级高清在线| 中文字幕av一区二区三区| 99国产精品久| 欧美老女人在线| 久久一二三国产| 一区二区在线观看视频 | 制服丝袜一区二区三区| 欧美成人三级在线| 中文字幕精品综合| 亚洲福利视频三区| 精品在线播放午夜| 99riav一区二区三区| 欧美三级一区二区| www激情久久| 有码一区二区三区| 国产成人啪午夜精品网站男同| 91丝袜美女网| 精品美女一区二区三区| 亚洲欧洲精品成人久久奇米网| 午夜视频一区在线观看| 福利一区福利二区| 精品久久一二三区| 欧美色欧美亚洲另类二区| 日韩免费电影一区| 亚洲一区二区三区小说| 国产成人精品三级麻豆| 欧美人体做爰大胆视频| 亚洲欧洲日产国码二区| 老司机精品视频线观看86| 在线观看日韩毛片| 国产三级一区二区三区| 日韩综合一区二区| 在线视频一区二区三| 久久精品免费在线观看| 日本视频免费一区| 在线视频你懂得一区| 国产精品污污网站在线观看| 麻豆成人免费电影| 欧美精选午夜久久久乱码6080| 亚洲免费在线看| 91美女片黄在线观看| 美女精品一区二区| 欧美一级xxx| 蜜乳av一区二区三区| 欧美日韩一级片在线观看| 亚洲人123区| 色婷婷激情久久| 亚洲欧美另类图片小说| 成人性生交大合| 欧美国产丝袜视频| 成人永久免费视频| 国产精品久久国产精麻豆99网站| 粉嫩蜜臀av国产精品网站| 国产欧美日韩在线| 99久久精品一区| 一区二区三区四区不卡在线 | 国产精品羞羞答答xxdd| 欧美国产日产图区| 91在线观看美女| 亚洲免费成人av| 欧美三级韩国三级日本三斤| 亚洲影院在线观看| 欧美一区二区三区免费在线看| 强制捆绑调教一区二区| 亚洲精品一区二区三区蜜桃下载| 国产在线看一区| 最新国产成人在线观看| 91久久精品一区二区三| 美腿丝袜亚洲一区| 国产午夜精品久久久久久久 | 国产精品欧美一区喷水| 91色婷婷久久久久合中文| 亚洲成人自拍网| 精品国产乱码91久久久久久网站| 国产风韵犹存在线视精品| 亚洲三级理论片| 日韩美女视频在线| 不卡视频免费播放| 五月天久久比比资源色| 国产三级欧美三级| 欧美日韩精品免费| 粉嫩av一区二区三区粉嫩| 亚洲电影一级片| 国产欧美日韩精品a在线观看| 在线观看一区不卡| 国产美女精品人人做人人爽| 一区二区日韩电影| 久久久国际精品| 欧美日韩国产首页| 不卡区在线中文字幕| 看片的网站亚洲| 亚洲123区在线观看| 国产精品三级久久久久三级| 7777女厕盗摄久久久| 91同城在线观看| 成人黄页在线观看| 激情国产一区二区| 亚洲 欧美综合在线网络| 中文av一区特黄| 久久久久9999亚洲精品| 日韩无一区二区| 欧美日韩在线综合| 91福利在线导航| 播五月开心婷婷综合| 韩国午夜理伦三级不卡影院| 午夜久久福利影院| 欧美性极品少妇| 91浏览器打开| 91一区二区在线观看| 99久久久国产精品免费蜜臀| 成人免费精品视频| 成人高清免费观看| 懂色av噜噜一区二区三区av| 国产精品自产自拍| 国产一区不卡精品| 国产成人av电影在线| 91精品国产福利| 在线视频你懂得一区| 色先锋aa成人| 欧美日韩在线观看一区二区 | 91精品国产综合久久久蜜臀图片 | 成人精品国产一区二区4080| 国产v日产∨综合v精品视频| 福利91精品一区二区三区| 国产成人精品www牛牛影视| 国产高清不卡一区| 99久久婷婷国产综合精品电影| 99久久免费精品高清特色大片| 色婷婷av一区二区| 欧美日韩中文一区| 在线成人午夜影院| 久久亚洲欧美国产精品乐播| 国产日韩欧美精品电影三级在线| 亚洲欧洲日韩一区二区三区| 亚洲精品中文在线| 毛片av一区二区| 粉嫩蜜臀av国产精品网站| 色丁香久综合在线久综合在线观看| 欧美亚洲免费在线一区| 欧美一区二区三区成人| 日本一区二区免费在线| 亚洲一区二区影院| 久草热8精品视频在线观看| www.日韩大片| 91精品国产色综合久久不卡蜜臀 | 亚洲大尺度视频在线观看| 极品美女销魂一区二区三区| 成年人国产精品| 欧美一卡在线观看| 亚洲色图.com| 久久66热re国产| 在线精品国精品国产尤物884a| 欧美不卡123| 亚洲图片有声小说| 国产a久久麻豆| 欧美成人精品二区三区99精品| 亚洲男帅同性gay1069| 精品一区二区三区免费| 在线看日本不卡| 老司机一区二区| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产精品成人综合| 毛片av一区二区三区| 欧美三级蜜桃2在线观看| 国产精品成人午夜| 国产乱码精品一区二区三区av| 777xxx欧美| 污片在线观看一区二区| 91日韩一区二区三区| 国产精品乱码妇女bbbb| 国产传媒一区在线| 精品88久久久久88久久久|