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

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

?? jtag_chain_f02x.c

?? c8051F00x的pca的使用
?? C
?? 第 1 頁 / 共 3 頁
字號:
//************************************************************************************
// JTAG_Chain_F02x.c
//------------------------------------------------------------------------------------
// This program contains some primitive routines which gather information through the 
// JTAG port on multiple JTAG compatible devices under test (DUT) connected in a 
// chain. The TCK & TMS JTAG pins on the DUT are connected in parallel to port pins on
// the C8051F02x master device and the TDI & TDO pins are connected in 
// series.
//
// **NOTE: The first device in the chain (device 0) is the one whose TDO pin is
//         connected to the TDO pin of the master device.
//
// Target device: C8051F02x
//
// Tool chain: KEIL Eval 'c'
//************************************************************************************

//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------

#include <c8051f020.h>                    // SFR declarations

//------------------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F02x
//------------------------------------------------------------------------------------

sfr16 DP       = 0x82;                    // data pointer
sfr16 TMR3RL   = 0x92;                    // Timer3 reload value
sfr16 TMR3     = 0x94;                    // Timer3 counter
sfr16 ADC0     = 0xbe;                    // ADC0 data
sfr16 ADC0GT   = 0xc4;                    // ADC0 greater than window
sfr16 ADC0LT   = 0xc6;                    // ADC0 less than window
sfr16 RCAP2    = 0xca;                    // Timer2 capture/reload
sfr16 T2       = 0xcc;                    // Timer2
sfr16 RCAP4    = 0xe4;                    // Timer4 capture/reload
sfr16 T4       = 0xf4;                    // Timer4
sfr16 DAC0     = 0xd2;                    // DAC0 data
sfr16 DAC1     = 0xd5;                    // DAC1 data

//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------

#define MAX_NUM_DEVICES_IN_CHAIN 10

sbit  LED = P1^6;                         // green LED: '1' = ON; '0' = OFF
sbit  SW2 = P3^7;                         // SW2='0' means switch pressed

#define SYSCLK       22118400             // SYSCLK frequency in Hz

sbit   TCK = P3^7;      // JTAG Test Clock -- Connected to TCK pin on all devices.
sbit   TMS = P3^6;      // JTAG Mode Select -- Connected to TMS pin on all devices.
sbit   TDI = P3^5;      // JTAG Data Input(output of master) -- Connected to the 
                        //      TDI pin of device n.
sbit   TDO = P3^4;      // JTAG Data Output (input to master)-- Connected to the 
                        //      TDO pin of device 0.

#define   TRUE 1
#define   FALSE 0

// JTAG Instruction Register Addresses
#define   INST_LENGTH 16                   // number of bits in the C8051Fxxx 
#define   BYPASS      0xffff               // Instruction Register
#define   EXTEST      0x0000
#define   SAMPLE      0x0002

#define   RESET       0x2fff               // System RESET Instruction

#define   IDCODE      0x1004               // IDCODE Instruction address/HALT
#define   IDCODE_LEN  32                   // number of bits in the ID code

#define   FLASHCON    0x4082               // FLASH Control Instruction address
#define   FLCN_LEN    8                    // number of bits in FLASHCON

#define   FLASHDAT    0x4083               // FLASH Data Instruction address
#define   FLD_RDLEN   10                   // number of bits in an FLASHDAT read
#define   FLD_WRLEN   8                    // number of bits in an FLASHDAT write

#define   FLASHADR    0x4084               // FLASH Address Instruction address
#define   FLA_LEN     16                   // number of bits in FLASHADR

#define   FLASHSCL    0x4085               // FLASH Scale Instruction address
#define   FLSC_LEN    8                    // number of bits in FLASHSCL

//------------------------------------------------------------------------------------
// Global Variable DECLARATIONS
//------------------------------------------------------------------------------------

// The addresses of the following variables are explicitly defined for viewing 
// purposes. If the width of the external memory window is 5 bytes, then each 
// device will take up exactly one row starting from the second row.
char xdata num_devices  _at_ 0x0000;

char xdata num_devices_before _at_ 0x0001; // #devices before and after the isolated 
char xdata num_devices_after  _at_ 0x0002; // device                
char xdata num_IR_bits_before _at_ 0x0003; // #instruction register bits before and
char xdata num_IR_bits_after  _at_ 0x0004; // after the isolated device 


typedef struct JTAG_Information {          // Discovery information
      unsigned char IR_length;             // Instruction register length
      unsigned long id;                    // Identification code for each device
} JTAG_Information;
                                           // Array: one entry per device in the
                                           // JTAG chain
JTAG_Information xdata JTAG_info[MAX_NUM_DEVICES_IN_CHAIN]; 
                                           
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------

void SYSCLK_Init (void);
void PORT_Init (void);

void JTAG_StrobeTCK (void);
void JTAG_Reset (void);

void Blink_Led(void);

void init(void);
void JTAG_Discover(void);
void JTAG_Discover_IR(void);
void JTAG_Discover_DR(void);
void JTAG_Isolate(char index);

unsigned long JTAG_IR_Scan (unsigned long instruction, char num_bits) ;
unsigned long JTAG_DR_Scan (unsigned long dat, char num_bits);

void JTAG_IWrite (unsigned int ireg, unsigned long dat, int num_bits);
unsigned long JTAG_IRead (unsigned int ireg, int num_bits);
int FLASH_ByteRead (unsigned int addr, unsigned char *pdat);
int FLASH_ByteWrite (unsigned int addr, unsigned char dat);
int FLASH_PageErase (unsigned int addr);

//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void)
{
   
   long xdata id;
   unsigned char dest;
   int pass;
   int address;
   char device = 0;
   

   WDTCN = 0xde;                            // disable watchdog timer
   WDTCN = 0xad;
   
   PORT_Init ();                            // initialize crossbar and GPIO
   SYSCLK_Init ();                          // initialize oscillator

   LED = 1;                                 // turn on the LED         
   
   init();                                  // initialize JTAG Chain variables
   JTAG_Discover();                         // IDCODE should = 0x10000243 for
                                            // C8051F000 rev D device
   
   JTAG_Isolate(0);                         // isolate device 0
   JTAG_IR_Scan (IDCODE, INST_LENGTH);      // load IDCODE into IR and HALT the DUT
   id = JTAG_DR_Scan (0x0L, IDCODE_LEN);    // get the ID Code of the isolated device
   
   // comment out this code if you have less than two devices in the chain
   JTAG_Isolate(1);
   JTAG_IR_Scan (IDCODE, INST_LENGTH);      // load IDCODE into IR and HALT the DUT
   id = JTAG_DR_Scan (0x0L, IDCODE_LEN);    // get the ID Code of the isolated device
   
   // comment out this code if you have less than three devices in the chain
   JTAG_Isolate(2);
   JTAG_IR_Scan (IDCODE, INST_LENGTH);      // load IDCODE into IR and HALT the DUT
   id = JTAG_DR_Scan (0x0L, IDCODE_LEN);    // get the ID Code of the isolated device
   
   

   for(device = 0; device < num_devices; device++) {
       
      JTAG_Isolate(device);     

      //TEST 1 -- ERASE A FLASH PAGE      
      pass = FLASH_PageErase (0x1000);       // erase page prior to writing
      while (!pass);                         // handle Write Lock condition

           
      //Verify that locations 0x1000 - 0x11FF are 0xFF
      for(address = 0x1000; address < 0x1200; address++){ 
         pass = FLASH_ByteRead (address, &dest);   // dest should return 0xff
         if(!pass || dest != 0xFF) Blink_Led();                  
      }
      
      //TEST 2 -- WRITE A PATTERN TO FLASH PAGE
      
      for(address = 0x1000; address < 0x1200; address++){ 
         dest = address & 0x00FF;               // strip away upper 8 bits
         pass = FLASH_ByteWrite (address, dest);// store LSByte of address at address
         while (!pass);                         // handle Read Lock condition
      }
      
      dest = 0x12;                              // set test variable to non-0xff value
      
      //Verify that locations 0x1000 - 0x11FF are following the pattern
      for(address = 0x1000; address < 0x1200; address++){ 
         pass = FLASH_ByteRead (address, &dest);   
         if(!pass || dest != (address & 0x00FF)) Blink_Led();                  
      }
   }
     
      
   LED = 0;                                     // turn off the led,
                                                // program executed correctly
   while(1);
}
   
//************************************************************************************
// Function and Procedure DEFINITIONS
//************************************************************************************
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// This routine initializes the system clock to use an 22.1184MHz crystal
// as its clock source.
//
void SYSCLK_Init (void)
{
   int i;                              // delay counter

   OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal

   for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)

   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle

   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector
}

//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Configure the Crossbar and GPIO ports
//
void PORT_Init (void)
{
   XBR0    = 0x04;                     // Enable UART0
   XBR1    = 0x00;
   XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
   P0MDOUT |= 0x01;                    // enable TX0 as a push-pull output
   P1MDOUT |= 0x40;                    // enable P1.6 (LED) as push-pull output
   
   P3MDOUT |= 0xe0;                    // make P3.7-5 push-pull outputs
   P3 &= ~0xe0;                        // TCK, TMS, and TDI all low
}
//------------------------------------------------------------------------------------
// Blink_Led
//------------------------------------------------------------------------------------
// This routine blinks the Green LED forever to indicate an error.
//
void Blink_Led(void)
{
   int i;                                    // millisecond counter
   int ms = 200;                             // stay in each state for ms milliseconds
  
   TCON  &= ~0x30;                           // STOP Timer0 and clear overflow flag
   TMOD  &= ~0x0F;                           // configure Timer0 to 16-bit mode
   TMOD  |=  0x01;                            
   CKCON |=  0x08;                           // Timer0 counts SYSCLKs
   
   
   while (1){
   
   LED = ~LED;
      
      for (i = 0; i < ms; i++) {             // count milliseconds
         TR0 = 0;                            // STOP Timer0
         TH0 = (-SYSCLK/1000) >> 8;          // SET Timer0 to overflow in 1ms
         TL0 = -SYSCLK/1000;
         TR0 = 1;                            // START Timer0

         while(TF0 == 0);                    // wait for overflow 
   
         TF0 = 0;                            // clear overflow indicator      
      }
   }   
}

//------------------------------------------------------------------------------------
// init
//------------------------------------------------------------------------------------
// This routine initializes the variables used in a JTAG chain.
//
void init (void)
{

   num_devices = 1;                         // The default number of devices is one.
                                            // JTAG_Discover() does not have to be
                                            // called if only one device is connected.
   
   num_devices_before = 0;                  // Initializing these variables to zero
   num_devices_after = 0;                   // allows calling the JTAG_IR_Scan() and 
   num_IR_bits_before = 0;                  // the JTAG_DR_Scan() without first 
   num_IR_bits_after = 0;                   // calling JTAG_Isolate() when there is  
                                            // only one device in the chain.
}

//------------------------------------------------------------------------------------
// JTAG_StrobeTCK
//------------------------------------------------------------------------------------
// This routine strobes the TCK pin (brings high then back low again) 
// on the target system.
//
void JTAG_StrobeTCK (void)
{

   TCK = 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区av| 日韩成人av影视| 91精品久久久久久久久99蜜臂| 精品一区二区三区久久久| 国产精品一区免费在线观看| 国产一区二区在线视频| 国产69精品久久久久777| 成人免费av网站| 精品视频在线免费观看| 欧美一区二区日韩| 国产精品久久777777| 91超碰这里只有精品国产| 99精品视频一区| 波多野结衣在线一区| 亚洲欧洲精品天堂一级| 亚洲免费在线视频| 韩国欧美国产一区| 久久久91精品国产一区二区精品| 国产精品久久久久aaaa樱花| 青娱乐精品视频| 成人激情小说网站| 欧美一区二区黄| 狠狠色丁香久久婷婷综| 日韩精品成人一区二区三区| 午夜一区二区三区在线观看| 久久精品国产99| 国产欧美日韩另类一区| 亚洲一卡二卡三卡四卡五卡| 天天综合色天天| 国产 欧美在线| 中文字幕一区av| 国产精品三级在线观看| 亚洲成人在线免费| 日本不卡一区二区三区高清视频| 韩国精品一区二区| 久久99精品国产麻豆不卡| 亚洲成人av一区二区| 中文字幕在线不卡| 国产日韩一级二级三级| 日韩电影在线观看网站| 国产米奇在线777精品观看| 国产欧美精品一区二区色综合| av不卡在线观看| 韩国中文字幕2020精品| 国产精品久久影院| 久久综合99re88久久爱| 国产成人啪免费观看软件| 欧美三电影在线| 成人在线视频一区| 懂色av中文一区二区三区| 777精品伊人久久久久大香线蕉| 91丨porny丨首页| 国产精品一区二区91| 久久蜜桃av一区二区天堂| 国产麻豆日韩欧美久久| 2020国产精品| 久久亚洲精精品中文字幕早川悠里| 99久久精品久久久久久清纯| 美女视频黄久久| 国产真实精品久久二三区| 亚洲精品自拍动漫在线| 日本免费在线视频不卡一不卡二| 国产精品久久99| 蜜臀久久99精品久久久久久9| 日韩国产成人精品| 岛国一区二区三区| 日韩国产一区二| 91亚洲精品乱码久久久久久蜜桃| 99re这里都是精品| 久久久久久久久久久久电影 | 亚洲一区二区三区中文字幕在线| 欧美国产激情二区三区| 青青草原综合久久大伊人精品 | 成人高清在线视频| 日产国产欧美视频一区精品| 久久精品国产久精国产爱| 欧美伊人久久大香线蕉综合69| 久久精品视频免费| 激情伊人五月天久久综合| 无码av免费一区二区三区试看| 国产精品国产三级国产aⅴ原创 | 欧美日韩国产中文| 国产一区二区三区免费在线观看| 欧美精品色综合| 婷婷国产在线综合| 国产精品久久久一本精品| 亚洲视频在线一区| 伊人色综合久久天天人手人婷| 亚洲无线码一区二区三区| 欧美午夜精品电影| 日韩成人午夜电影| 91精品国产综合久久小美女| 蜜桃精品在线观看| 国产三级精品在线| 91视视频在线观看入口直接观看www | 日韩免费观看高清完整版在线观看| 亚洲国产一区二区三区青草影视| 欧美网站一区二区| 久久 天天综合| 中文字幕五月欧美| 欧美一级片在线| 成人妖精视频yjsp地址| 图片区小说区区亚洲影院| 国产夜色精品一区二区av| 国产成人精品午夜视频免费| 视频一区视频二区中文字幕| 色婷婷综合激情| 欧美精品v国产精品v日韩精品| 国产盗摄视频一区二区三区| 亚洲国产一区二区a毛片| 精品99999| 欧美刺激午夜性久久久久久久| 91麻豆123| 91麻豆精品在线观看| 99久久99久久免费精品蜜臀| 香蕉影视欧美成人| 成人黄色在线视频| 精品福利一区二区三区 | 91啪亚洲精品| 夜夜嗨av一区二区三区中文字幕| 粉嫩在线一区二区三区视频| 一区二区三区四区亚洲| 国产精品一区二区x88av| 日韩欧美亚洲国产另类| 色88888久久久久久影院按摩| 一区二区三区色| 欧美一级电影网站| 成人综合激情网| 欧美极品xxx| 日韩精品一区二区三区在线观看 | 欧美一区二区大片| 亚欧色一区w666天堂| 亚洲观看高清完整版在线观看| 日韩欧美亚洲一区二区| 91麻豆免费观看| 国产精品久久久久久久久免费丝袜| 国产精品1区二区.| 在线不卡欧美精品一区二区三区| 日韩影视精彩在线| 香蕉影视欧美成人| 奇米一区二区三区| 日本不卡的三区四区五区| 精品播放一区二区| 欧美电影精品一区二区| 亚洲大片在线观看| 亚洲综合一区二区三区| 精品在线你懂的| 欧美精品亚洲二区| 亚洲精品伦理在线| 成人av资源在线观看| 亚洲精品在线观看视频| 亚洲午夜成aⅴ人片| 不卡av在线免费观看| 国产免费成人在线视频| 国产精品中文欧美| 久久色.com| 午夜av电影一区| 国产成a人亚洲| 欧美日韩一区小说| 亚洲裸体在线观看| 成人影视亚洲图片在线| 欧美精品一区男女天堂| 日韩和欧美的一区| 日韩一区二区三区观看| 免播放器亚洲一区| 7799精品视频| 狠狠色伊人亚洲综合成人| 精品国产一区二区亚洲人成毛片| 亚洲一区二区在线免费看| 欧美午夜电影网| 国产欧美一区二区精品忘忧草 | 国产精品丝袜久久久久久app| 婷婷中文字幕综合| 免费av成人在线| 椎名由奈av一区二区三区| 精品视频123区在线观看| 亚洲成人动漫在线免费观看| 91在线观看视频| 在线精品视频免费播放| 51精品久久久久久久蜜臀| 99这里都是精品| 欧美一区二区视频免费观看| 欧美—级在线免费片| 亚洲影视在线观看| 99精品视频在线免费观看| 综合久久给合久久狠狠狠97色| 欧美日韩国产区一| 亚洲chinese男男1069| 91麻豆精品国产91久久久使用方法| 欧美国产国产综合| 国产伦精品一区二区三区免费迷| 欧洲av在线精品| 亚洲国产精品一区二区久久恐怖片 | 成人激情图片网| 亚洲精选在线视频| 久久久三级国产网站| 亚洲一区二区成人在线观看| 偷拍一区二区三区| 91免费视频大全| 中文无字幕一区二区三区 |