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

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

?? jtag_flash_f02x.c

?? c8051F00x的pca的使用
?? C
?? 第 1 頁 / 共 2 頁
字號:
//------------------------------------------------------------------------------------
// JTAG_Flash_F02x.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 C8051F02x 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
//------------------------------------------------------------------------------------
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

// 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 SYSCLK_Init (void);
void PORT_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;
   
   WDTCN = 0xde;                               // disable watchdog timer
   WDTCN = 0xad;
   
   PORT_Init ();                               // initialize crossbar and GPIO
   SYSCLK_Init ();                             // initialize oscillator
 

   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
//------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// 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
}

//------------------------------------------------------------------------------------
// 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线一区| 一本色道久久综合精品竹菊| 亚洲国产成人av| 一区二区三区在线免费观看| 亚洲精品乱码久久久久久黑人 | 欧美一级生活片| 欧美日韩国产综合久久| 欧美日韩性生活| 日韩三级在线免费观看| 欧美mv日韩mv亚洲| 国产午夜精品理论片a级大结局| 久久亚洲综合色| 国产精品久久午夜夜伦鲁鲁| 最近日韩中文字幕| 亚洲国产成人91porn| 青青国产91久久久久久| 精品亚洲国内自在自线福利| 国产自产高清不卡| 不卡在线视频中文字幕| 欧洲一区二区三区在线| 欧美日韩一卡二卡| 亚洲在线视频网站| 日韩精品久久久久久| 国内精品国产三级国产a久久| 国产成人精品三级| 欧洲色大大久久| 久久99精品国产.久久久久久| 国产成人av福利| 在线观看亚洲精品| 精品少妇一区二区三区在线视频 | av不卡一区二区三区| 在线免费观看不卡av| 日韩一级成人av| 国产精品传媒视频| 日韩经典中文字幕一区| 成人三级在线视频| 69堂亚洲精品首页| ...av二区三区久久精品| 日韩激情在线观看| 99久久精品国产毛片| 欧美精品在线观看播放| 国产精品全国免费观看高清 | 精品国产伦一区二区三区观看方式| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲高清中文字幕| 成人精品国产福利| 日韩欧美一级精品久久| 亚洲激情中文1区| 蜜桃视频一区二区三区在线观看| 99在线热播精品免费| 欧美tk—视频vk| 午夜精品久久一牛影视| 成人黄色软件下载| 久久99热99| 欧美美女网站色| 一区二区三区四区在线| 懂色一区二区三区免费观看 | 国产精品亚洲人在线观看| 欧美乱熟臀69xxxxxx| 亚洲色大成网站www久久九九| 国产美女一区二区| 欧美大片在线观看| 亚洲国产成人av好男人在线观看| 中文字幕av一区二区三区高| 老司机免费视频一区二区三区| 在线免费不卡视频| 自拍偷拍亚洲综合| 99v久久综合狠狠综合久久| 久久久精品免费免费| 免费在线观看一区| 日韩情涩欧美日韩视频| 一区二区三区在线观看动漫| jiyouzz国产精品久久| 国产日韩欧美不卡在线| voyeur盗摄精品| 国产乱码精品1区2区3区| 成人精品电影在线观看| 国产一区二区福利| 欧美一区二区二区| 亚洲福利视频一区二区| 欧美视频在线观看一区| 亚洲综合视频在线观看| 色婷婷综合久久久久中文一区二区 | 日产国产欧美视频一区精品| 69久久99精品久久久久婷婷| 日韩国产精品久久久| 日韩影院免费视频| 这里只有精品视频在线观看| 奇米综合一区二区三区精品视频 | 精品一区二区免费看| 日韩免费电影一区| 国产成人av资源| 亚洲视频一二三| 欧美福利视频导航| 精品一区二区在线播放| 国产亚洲一区字幕| av在线不卡网| 亚洲国产精品一区二区www在线| 亚洲成人高清在线| 日韩午夜在线播放| 风间由美一区二区三区在线观看| 中文字幕一区二区三区不卡在线| 日本韩国欧美一区| 久久爱www久久做| 中文字幕不卡三区| 欧美丝袜第三区| 国产一区激情在线| 夜夜精品浪潮av一区二区三区| 欧美日韩久久一区二区| 国产一区二区精品久久91| 中文字幕视频一区二区三区久| 亚洲女性喷水在线观看一区| 欧美在线不卡视频| 韩国毛片一区二区三区| 亚洲精品水蜜桃| 欧美tickling挠脚心丨vk| 91免费看片在线观看| 人人爽香蕉精品| 亚洲日本在线视频观看| 欧美成人bangbros| 欧美在线观看视频在线| 国产精品亚洲专一区二区三区 | 精品久久久久一区| 欧美综合一区二区| 国产69精品久久久久毛片| 天堂久久一区二区三区| 国产精品久久久久久久久免费樱桃| 欧美电影一区二区| 99精品国产91久久久久久| 极品美女销魂一区二区三区免费| 伊人开心综合网| 亚洲国产成人在线| 精品99999| 欧美一区二区国产| 欧美日韩第一区日日骚| 91丨porny丨最新| 国产不卡在线一区| 国产在线看一区| 免费av网站大全久久| 亚洲成人黄色小说| 亚洲一区二区在线观看视频| 中文字幕亚洲一区二区av在线| 久久久久久久久久久99999| 日韩一级黄色片| 欧美一级久久久| 欧美一区二区在线免费观看| 欧美日韩精品一区二区天天拍小说 | 亚洲h精品动漫在线观看| 99精品在线免费| 成人av免费在线观看| 成人h动漫精品| 不卡大黄网站免费看| 成人免费黄色大片| 中文久久乱码一区二区| 欧美激情一区二区| 中文字幕av不卡| 亚洲欧洲精品一区二区三区| 国产精品视频yy9299一区| 欧美—级在线免费片| 国产精品久久久久影院老司| 国产精品久久影院| 一区二区久久久| 三级成人在线视频| 老司机免费视频一区二区 | 国产成人在线观看| 国产成人精品一区二区三区四区 | 成人精品国产免费网站| 99热精品一区二区| 在线视频一区二区免费| 69久久99精品久久久久婷婷| 精品国产91久久久久久久妲己 | 久久嫩草精品久久久精品一| 精品一二三四区| 99精品国产一区二区三区不卡| 欧美性xxxxxxxx| 日韩午夜电影在线观看| 国产日本欧洲亚洲| 一区二区三区欧美日韩| 日韩精品亚洲一区二区三区免费| 久久99精品久久久久婷婷| 不卡的av电影| 91精品国产丝袜白色高跟鞋| 久久一日本道色综合| 亚洲日本丝袜连裤袜办公室| 日韩av在线免费观看不卡| 国产麻豆视频一区| 在线视频观看一区| 26uuu亚洲| 亚洲成av人片在线| 国产精品一区二区三区乱码 | 午夜精品福利久久久| 国产伦精品一区二区三区视频青涩 | 欧美日韩一区二区三区四区| 精品99一区二区| 亚洲午夜av在线| 福利一区福利二区| 欧美一级黄色大片| 综合亚洲深深色噜噜狠狠网站| 日韩av电影天堂| 色综合久久久久|