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

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

?? jtag_chain.c

?? c8051F00x的pca的使用
?? C
?? 第 1 頁 / 共 3 頁
字號:
//************************************************************************************
// JTAG_Chain.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 C8051F00x, C8051F01x 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: C8051F00x,C8051F01x
//
// Tool chain: KEIL Eval 'c'
//************************************************************************************

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

#include <c8051f000.h>                      // SFR declarations

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

#define MAX_NUM_DEVICES_IN_CHAIN 10

#define SYSCLK 2000000                      // SYSCLK frequency in Hz

sbit   LED = P1^6;                          // green LED: '1' = ON; '0' = OFF

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 init (void);
void JTAG_StrobeTCK (void);
void JTAG_Reset (void);

void Blink_Led(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;
   

   init ();                                 // initialize ports

   LED = 1;                                 // turn on the LED         
   
   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

   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
   
   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
   
   
   // Here we perform 2 tests on each device.  These 2 tests take approximately 
   // 43 seconds for each device with SYSCLK at 2 Mhz and approximatly 6 seconds 
   // running at 16 Mhz. 
   
   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
//************************************************************************************

//------------------------------------------------------------------------------------
// 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 disables the watchdog timer and initializes the GPIO pins
//
void init (void)
{

   WDTCN = 0xde;                            // disable watchdog timer
   WDTCN = 0xad;

   XBR2   |=  0x40;                         // enable crossbar
   PRT1CF |=  0x40;                         // enable P1.6 (LED) as a push-pull output
   PRT3CF |=  0xe0;                         // make P3.7-5 push-pull outputs
   P3     &= ~0xE0;                         // set TCK, TMS, and TDI all low

   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;
   TCK = 0;
}

//------------------------------------------------------------------------------------
// JTAG_Reset
//------------------------------------------------------------------------------------
// This routine places the JTAG state machine on the target system in
// the Test Logic Reset state by strobing TCK 5 times while leaving
// TMS high.  Leaves the JTAG state machine in the Run_Test/Idle state.
//
void JTAG_Reset (void)
{
   
   TMS = 1;

   JTAG_StrobeTCK ();                       // move to Test Logic Reset state
   JTAG_StrobeTCK ();
   JTAG_StrobeTCK ();
   JTAG_StrobeTCK ();
   JTAG_StrobeTCK ();

   TMS = 0;

   JTAG_StrobeTCK ();                       // move to Run_Test/Idle state
}

//------------------------------------------------------------------------------------
// JTAG_Discover
//------------------------------------------------------------------------------------
// This routine sequentially queries a chain of JTAG devices and accomplishes the 
// following three tasks.
//    For the global struct array <JTAG_info> 
//      -- fills in the length of each device's instruction register
//      -- fills in each device's IDCODE. 
//    For the global variable <num_devices> 
//      -- updates it with the number of JTAG devices connected in the chain.
//
void JTAG_Discover(void)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产性天天综合网| 666欧美在线视频| 香蕉加勒比综合久久| 一本久久a久久精品亚洲| 亚洲人成网站影音先锋播放| 色狠狠色狠狠综合| 亚洲成人av电影在线| 欧美一区在线视频| 国产伦精品一区二区三区免费迷| 久久网站热最新地址| 成人av免费在线| 亚洲四区在线观看| 欧美日本乱大交xxxxx| 精品一区二区国语对白| 中文字幕不卡一区| 欧美日韩在线精品一区二区三区激情| 亚洲18影院在线观看| 精品久久久久一区| 91丝袜国产在线播放| 亚洲韩国一区二区三区| 日韩欧美高清在线| 99精品视频在线播放观看| 一区二区三区毛片| 精品国产3级a| 在线观看免费视频综合| 伦理电影国产精品| 亚洲视频免费观看| 精品欧美久久久| 色综合色综合色综合色综合色综合| 天堂资源在线中文精品| 久久免费的精品国产v∧| 色综合中文字幕| 国产一区二区三区免费在线观看| 亚洲欧美一区二区不卡| www激情久久| 欧美吻胸吃奶大尺度电影| 国产一区欧美一区| 天天色 色综合| 亚洲免费观看高清完整版在线观看熊| 日韩午夜中文字幕| 欧美在线播放高清精品| 国产传媒一区在线| 奇米色777欧美一区二区| 亚洲色大成网站www久久九九| 日韩欧美在线1卡| 在线观看中文字幕不卡| 国产成人激情av| 久久99国内精品| 亚洲v日本v欧美v久久精品| 国产欧美日韩不卡| 精品蜜桃在线看| 欧美日韩国产精品成人| 91色porny| 99在线精品视频| 国产suv精品一区二区6| 美女被吸乳得到大胸91| 视频在线观看一区| 亚洲国产日韩综合久久精品| 国产精品免费av| 久久久777精品电影网影网| 日韩一级免费观看| 欧美另类z0zxhd电影| 91精品91久久久中77777| 成人涩涩免费视频| 国产不卡视频一区二区三区| 麻豆成人91精品二区三区| 天天综合日日夜夜精品| 天天av天天翘天天综合网色鬼国产| 国产精品高潮呻吟| 亚洲国产成人午夜在线一区| 精品粉嫩aⅴ一区二区三区四区| 91精品国产91久久久久久一区二区 | 91麻豆精品国产91久久久资源速度| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美mv和日韩mv的网站| 在线91免费看| 欧美人成免费网站| 欧美福利电影网| 欧美一区二区三区在线观看 | 麻豆国产欧美一区二区三区| 婷婷综合久久一区二区三区| 五月天一区二区| 日韩高清不卡一区二区| 99免费精品视频| 丁香亚洲综合激情啪啪综合| 高清av一区二区| 成人黄色在线视频| 97精品久久久午夜一区二区三区| 成人性生交大片免费看中文网站| 国产99久久久精品| 91在线看国产| 一本久久a久久精品亚洲| 欧美精品久久久久久久多人混战 | 亚洲一二三区在线观看| 亚洲二区在线视频| 亚洲欧美偷拍三级| 亚洲不卡一区二区三区| 久久精品国产精品亚洲精品| 麻豆精品久久久| 国产成人免费9x9x人网站视频| 成人一级视频在线观看| 色偷偷88欧美精品久久久| 欧美性三三影院| 欧美电影免费观看高清完整版在 | 久久理论电影网| 成人免费一区二区三区视频 | 中文字幕一区二区三区色视频| 国产精品国产三级国产aⅴ原创| 中文字幕一区二区5566日韩| 亚洲精品国久久99热| 亚洲二区在线视频| 激情文学综合丁香| 成人福利电影精品一区二区在线观看| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 国产欧美综合在线观看第十页| 中文字幕 久热精品 视频在线 | 亚洲免费伊人电影| 日本亚洲一区二区| 成人免费视频caoporn| 色婷婷综合久久久久中文| 69堂精品视频| 亚洲欧美在线aaa| 免费久久99精品国产| 99r国产精品| 精品动漫一区二区三区在线观看| 国产精品免费av| 精品亚洲porn| 欧美系列在线观看| 国产日产欧美一区二区视频| 亚洲国产精品久久人人爱蜜臀| 激情小说欧美图片| 欧美伊人久久大香线蕉综合69| 久久久不卡网国产精品二区 | www国产精品av| 亚洲在线视频免费观看| 国产老肥熟一区二区三区| 欧美视频日韩视频| 亚洲视频小说图片| 国产精品911| 精品国产亚洲在线| 日韩av不卡一区二区| 91免费视频网址| 日本一区免费视频| 国产在线精品视频| 欧美一级电影网站| 亚洲成av人影院在线观看网| 91最新地址在线播放| 久久久久久久电影| 精品一区二区三区在线观看 | 成人午夜激情片| 日韩精品资源二区在线| 亚洲综合在线五月| 成人手机电影网| 国产日韩欧美精品一区| 久久精品国产亚洲高清剧情介绍| 欧美日韩国产首页| 亚洲成人免费电影| 欧美色国产精品| 亚洲一区二区三区中文字幕 | 白白色 亚洲乱淫| 国产欧美精品在线观看| 国产乱人伦偷精品视频免下载| 精品国一区二区三区| 精品一区二区三区免费视频| 日韩一区二区在线观看视频| 日韩二区在线观看| 欧美一级搡bbbb搡bbbb| 日韩国产在线一| 欧美一级理论片| 麻豆精品一区二区三区| 2023国产精品视频| 精品一区二区综合| 久久在线观看免费| 国产精品亚洲专一区二区三区| 久久久精品影视| caoporn国产一区二区| 亚洲四区在线观看| 欧美在线你懂得| 亚洲国产精品一区二区www| 欧美日韩亚洲综合在线| 日韩高清在线不卡| 精品入口麻豆88视频| 国产电影精品久久禁18| 亚洲人成精品久久久久| 欧美在线免费视屏| 青青草国产精品亚洲专区无| 欧美成人免费网站| 国产河南妇女毛片精品久久久| 国产精品久久久久久久岛一牛影视 | 国产精品99精品久久免费| 亚洲国产成人午夜在线一区 | 日韩精品福利网| 精品国产乱子伦一区| 国产成人精品午夜视频免费| 亚洲免费av在线| 欧美一级理论片| 99精品在线观看视频| 天堂影院一区二区| 国产精品久久久久影院色老大| 不卡在线视频中文字幕|