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

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

?? jtag_flash.c

?? c8051F00x的pca的使用
?? C
?? 第 1 頁 / 共 2 頁
字號:
//------------------------------------------------------------------------------------
// JTAG_FLASH.c
//------------------------------------------------------------------------------------
// This program contains some primitive routines which read, write, and erase the FLASH
// through the JTAG port on a C8051Fxxx device under test (DUT).  The JTAG pins on the
// DUT are connected to port pins on the C8051F000 master device.
//
// Target device: C8051F000, C8051F010
//
// Tool chain: KEIL Eval 'c'
//

//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include <c8051f000.h>                       // SFR declarations

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

// GPIO pins connecting to JTAG pins on device to be programmed (DUT)
sbit   TCK = P3^7;                           // JTAG Test Clock
sbit   TMS = P3^6;                           // JTAG Mode Select
sbit   TDI = P3^5;                           // JTAG Data Input
sbit   TDO = P3^4;                           // JTAG Data Output

#define   TRUE 1
#define   FALSE 0
                        
// JTAG Instruction Register Addresses
#define   INST_LENGTH 16                     // number of bits in the 
                                             // Instruction Register
#define   BYPASS      0xffff
#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

//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------

void init (void);
void JTAG_StrobeTCK (void);
void JTAG_Reset (void);
unsigned int JTAG_IR_Scan (unsigned int instruction, int num_bits);
unsigned long JTAG_DR_Scan (unsigned long dat, int 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) {
   
   unsigned long id;
   unsigned char dest;
   int pass;

   id = 0x12345678L;
   
   init ();                                    // initialize ports

   JTAG_Reset ();                              // Reset the JTAG state machine on DUT
   
   JTAG_IR_Scan (RESET, INST_LENGTH);          // Reset the DUT

   JTAG_IR_Scan (IDCODE, INST_LENGTH);         // load IDCODE into IR and HALT the DUT
   id = JTAG_DR_Scan (0x0L, IDCODE_LEN);       // read the IDCODE
                                               // IDCODE should = 0x10000243 for
                                               // C8051F000 rev D device

   // here we erase the FLASH page 0x1000 - 0x11ff, read 0x1000 (it's an 0xff),
   // write a 0x66 to 0x1000, and read 0x1000 again (it's changed to an 0x66).
   while (1) {
      pass = FLASH_PageErase (0x7c00);         // erase page prior to writing...
      while (!pass);                           // handle Write Lock condition

      dest = 0x5a;                             // set test variable to non-0xff value

      pass = FLASH_ByteRead (0x7c00, &dest);   // dest should return 0xff
      while (!pass);                           // handle Read Lock condition

      dest = 0x66;
      pass = FLASH_ByteWrite (0x7c00, dest);   // store 0x66 at 0x1000
      while (!pass);                           // handle Read Lock condition

      pass = FLASH_ByteRead (0x7c00, &dest);   // dest should return 0x66
      while (!pass);                           // handle Read Lock condition

      pass = FLASH_PageErase (0x7c00);
      while (!pass);

      pass = FLASH_ByteRead (0x7c00, &dest);
      while (!pass);
   }
}

//------------------------------------------------------------------------------------
// Functions and Procedures
//------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------
// 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 &= 0x1f;                            // TCK, TMS, and TDI all low

}

//------------------------------------------------------------------------------------
// 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_IR_Scan
//------------------------------------------------------------------------------------
// This routine loads the supplied <instruction> of <num_bits> length into the JTAG 
// Instruction Register on the target system.  Leaves in the Run_Test/Idle state.
// The return value is the n-bit value read from the IR.
// Assumes the JTAG state machine starts in the Run_Test/Idle state.
//
unsigned int JTAG_IR_Scan (unsigned int instruction, int num_bits) {

   unsigned int retval;                   // JTAG instruction read
   int   i;                               // JTAG IR bit counter

   retval = 0x0;
   
   TMS = 1;                     
   JTAG_StrobeTCK ();                     // move to SelectDR
   TMS = 1;
   JTAG_StrobeTCK ();                     // move to SelectIR
   TMS = 0;
   JTAG_StrobeTCK ();                     // move to Capture_IR
   TMS = 0;
   JTAG_StrobeTCK ();                     // move to Shift_IR state

   for (i=0; i < num_bits; i++) {

      TDI = (instruction & 0x01);         // shift IR, LSB-first
      instruction = instruction >> 1;

      retval = retval >> 1;
      if (TDO) {
         retval |= (0x01 << (num_bits - 1));
      }

      if (i == (num_bits - 1)) {
         TMS = 1;                         // move to Exit1_IR state
      }

      JTAG_StrobeTCK();
   }

   TMS = 1;
   JTAG_StrobeTCK ();                     // move to Update_IR
   TMS = 0;
   JTAG_StrobeTCK ();                     // move to RTI state

   return retval;
}

//------------------------------------------------------------------------------------
// JTAG_DR_Scan
//------------------------------------------------------------------------------------
// This routine shifts <num_bits> of <data> into the Data Register, and returns
// up to 32-bits of data read from the Data Register.
// Leaves in the Run_Test/Idle state.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品一区二区| 亚洲成人一区二区| 欧美高清视频不卡网| 99久免费精品视频在线观看| 国产综合一区二区| 美腿丝袜亚洲色图| 免费在线观看日韩欧美| 蜜臀久久99精品久久久久宅男| 久久影院视频免费| 中文字幕一区二区视频| 中文在线一区二区| 国产亲近乱来精品视频| 日本一区二区视频在线观看| 欧美成人精品二区三区99精品| 91精品免费在线| 欧美一区二区三区在线视频| 欧美一级片在线观看| 日韩精品一区二区三区四区视频| 欧美一区二区网站| 精品久久久久久久久久久久久久久久久 | 亚洲精品欧美综合四区| 亚洲日本va在线观看| 亚洲人成亚洲人成在线观看图片| 国产精品免费久久久久| 日韩理论片在线| 亚洲国产日日夜夜| 麻豆一区二区99久久久久| 久久91精品久久久久久秒播| 国产在线精品一区二区不卡了| 国产传媒久久文化传媒| 91在线精品一区二区三区| 欧美三级日韩三级| 日韩亚洲欧美在线| 国产成人亚洲综合a∨婷婷| 成人aa视频在线观看| 欧美视频在线一区| 久久综合色综合88| 亚洲人一二三区| 精品一区二区三区免费观看| 成+人+亚洲+综合天堂| 欧美日韩国产一区二区三区地区| 精品福利一区二区三区免费视频| 国产精品亲子伦对白| 亚洲一区在线播放| 激情都市一区二区| 色女孩综合影院| 精品国内片67194| 亚洲欧美另类小说| 精品无人区卡一卡二卡三乱码免费卡| a在线欧美一区| 久久99日本精品| 欧美调教femdomvk| 国产精品久久久久久久久免费桃花| 亚洲国产综合在线| caoporen国产精品视频| 欧美不卡在线视频| 亚洲综合色丁香婷婷六月图片| 国产乱理伦片在线观看夜一区| 欧洲精品在线观看| 中文字幕亚洲精品在线观看| 久久99国产精品久久| 在线观看91av| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品综合网| 日韩一区二区麻豆国产| 一区二区理论电影在线观看| 国产老妇另类xxxxx| 精品一区二区三区香蕉蜜桃 | 国产精品网站在线播放| 麻豆精品在线看| 欧洲人成人精品| 亚洲综合网站在线观看| jizzjizzjizz欧美| 国产精品视频看| 国产成人在线视频网址| 久久久久国产精品人| 久久99精品国产麻豆不卡| 777久久久精品| 日韩高清在线观看| 久久国内精品自在自线400部| 欧美日本一区二区三区四区| 亚洲国产色一区| 欧美日韩免费高清一区色橹橹 | 久久老女人爱爱| 精品亚洲porn| 中文字幕+乱码+中文字幕一区| 久久99精品国产麻豆婷婷| 日韩一区二区精品| 美女精品自拍一二三四| 精品美女一区二区三区| 国产精品资源在线| 欧美国产综合一区二区| www.亚洲国产| 亚洲一区二区偷拍精品| 欧美另类高清zo欧美| 青青草原综合久久大伊人精品优势 | 综合久久久久久| 91在线国产福利| 亚洲一区二区在线视频| 日韩一区二区高清| 国产成人精品免费在线| 亚洲三级电影全部在线观看高清| 欧美美女bb生活片| 国产资源在线一区| 国产精品理论片在线观看| 色综合天天综合网天天狠天天| 亚洲成人动漫在线观看| 欧美成人aa大片| 色综合久久天天| 奇米影视在线99精品| 国产农村妇女精品| 欧美在线观看视频一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久综合色鬼综合色| 成人免费毛片片v| 亚洲一区二区在线免费观看视频 | 国产日韩影视精品| 在线精品国精品国产尤物884a| 青青草国产成人99久久| 中文字幕一区二区三区在线观看| 欧美在线观看一区| 成人午夜精品一区二区三区| 亚洲高清久久久| 国产欧美日韩中文久久| 欧美日韩午夜影院| 成人动漫精品一区二区| 日本欧美一区二区在线观看| 中文字幕日韩欧美一区二区三区| 91麻豆精品国产| 一本色道久久综合狠狠躁的推荐 | 菠萝蜜视频在线观看一区| 日韩av中文字幕一区二区| 一区在线播放视频| 精品三级av在线| 欧美午夜精品理论片a级按摩| 国产在线国偷精品产拍免费yy| 亚洲香肠在线观看| 综合久久给合久久狠狠狠97色| 精品久久久久久久久久久久久久久 | 日韩精品专区在线影院重磅| 欧美男人的天堂一二区| 中文在线一区二区| 国产成人在线视频播放| 亚洲h精品动漫在线观看| 青青草97国产精品免费观看| 国产精品久久精品日日| www日韩大片| 日韩精品在线一区二区| 欧美乱妇23p| 欧美日韩一区高清| 日本道在线观看一区二区| 成人免费视频视频在线观看免费| 国内精品视频666| 经典一区二区三区| 久久超级碰视频| 蜜桃av一区二区三区电影| 青青草原综合久久大伊人精品优势| 亚洲国产wwwccc36天堂| 亚洲综合在线视频| 亚洲小少妇裸体bbw| 亚洲一二三区视频在线观看| 亚洲一区二区五区| 午夜日韩在线电影| 日韩国产在线一| 日韩精品久久久久久| 五月天久久比比资源色| 首页综合国产亚洲丝袜| 亚洲va中文字幕| 蜜桃精品视频在线| 亚洲一区二区影院| 欧美视频一区二区| 欧美性受极品xxxx喷水| 欧美唯美清纯偷拍| 亚洲精品国产一区二区精华液| 国产在线不卡一区| 亚洲黄色小说网站| 亚洲男女毛片无遮挡| 亚洲福利视频导航| 日韩国产精品久久久久久亚洲| 免费一级片91| 另类欧美日韩国产在线| 成人激情图片网| 色激情天天射综合网| 欧美精品日日鲁夜夜添| 欧美成人伊人久久综合网| 国产嫩草影院久久久久| 亚洲一卡二卡三卡四卡无卡久久| 日本欧美一区二区三区乱码| 国产乱码精品1区2区3区| 91性感美女视频| 69成人精品免费视频| 久久综合九色综合欧美98| 亚洲视频中文字幕| 日韩av一区二区三区四区| 黑人精品欧美一区二区蜜桃 | 国产综合一区二区| 欧美综合亚洲图片综合区| 日韩视频一区在线观看| 久久午夜羞羞影院免费观看| 亚洲欧美电影一区二区|