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

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

?? can_block_receive_f040.c

?? This program configures the external memory interface and CAN to receieve data in a FIFO buffer and
?? C
字號:
//-----------------------------------------------------------------------------
// CAN_block_receive.c
//-----------------------------------------------------------------------------
// Copyright (C) 2004 Silicon Laboratories, Inc.
//
// AUTH: LS
// DATE: 30 APR 02
//
// This program configures the external memory interface and CAN
// to receieve data in a FIFO buffer and store the data in XRAM.
// Meant to receive data from another CAN device.
//
// Program one target board with CAN_block_receive.c and another
// target board with CAN_block_transmit.c.  Connect the boards with
// the CAN cable provided in the development kit.  Run the code on
// both devices and one device will log temperature data, stors the
// data, and then tranfer the data to the other board over the CAN bus.
// The CAN uses the FIFO mode (concantonates message objects with the
// same message ID/Arbitration number).  See page 32 of the Bosch CAN
// User's Guide for more information concerning FIFO buffers.
//
//
// CAN RAM FIFO buffer uses all 32 message objects.
//
// Developed using two C8051F040TB target board's.
//
// Other Target board transmits its die temperature after storing data in
// XRAM.
//
// Target: C8051F04x
// Tool chain: KEIL C51 6.03 / KEIL EVAL C51, Silicon Labs IDE.
//

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

#include <c8051f040.h>                 // SFR declarations
#include <stdio.h>
/////////////////////////////////////////////////////////////////////////////////////
//CAN Protocol Register Index for CAN0ADR, from TABLE 18.1 of the C8051F040 datasheet
/////////////////////////////////////////////////////////////////////////////////////
#define CANCTRL            0x00                 //Control Register
#define CANSTAT            0x01                 //Status register
#define ERRCNT             0x02                 //Error Counter Register
#define BITREG             0x03                 //Bit Timing Register
#define INTREG             0x04                 //Interrupt Low Byte Register
#define CANTEST            0x05                 //Test register
#define BRPEXT             0x06                 //BRP Extension         Register
/////////////////////////////////////////////////////////////////////////////////
//IF1 Interface Registers
/////////////////////////////////////////////////////////////////////////////////
#define IF1CMDRQST         0x08                 //IF1 Command Rest      Register
#define IF1CMDMSK          0x09                 //IF1 Command Mask      Register
#define IF1MSK1            0x0A                 //IF1 Mask1             Register
#define IF1MSK2            0x0B                 //IF1 Mask2             Register
#define IF1ARB1            0x0C                 //IF1 Arbitration 1     Register
#define IF1ARB2            0x0D                 //IF1 Arbitration 2     Register
#define IF1MSGC            0x0E                 //IF1 Message Control   Register
#define IF1DATA1           0x0F                 //IF1 Data A1           Register
#define IF1DATA2           0x10                 //IF1 Data A2           Register
#define IF1DATB1           0x11                 //IF1 Data B1           Register
#define IF1DATB2           0x12                 //IF1 Data B2           Register
/////////////////////////////////////////////////////////////////////////////////
//IF2 Interface Registers
/////////////////////////////////////////////////////////////////////////////////
#define IF2CMDRQST         0x20                 //IF2 Command Rest      Register
#define IF2CMDMSK          0x21                 //IF2 Command Mask      Register
#define IF2MSK1            0x22                 //IF2 Mask1             Register
#define IF2MSK2            0x23                 //IF2 Mask2             Register
#define IF2ARB1            0x24                 //IF2 Arbitration 1     Register
#define IF2ARB2            0x25                 //IF2 Arbitration 2     Register
#define IF2MSGC            0x26                 //IF2 Message Control   Register
#define IF2DATA1           0x27                 //IF2 Data A1           Register
#define IF2DATA2           0x28                 //IF2 Data A2           Register
#define IF2DATB1           0x29                 //IF2 Data B1           Register
#define IF2DATB2           0x2A                 //IF2 Data B2           Register
/////////////////////////////////////////////////////////////////////////////////
//Message Handler Registers
/////////////////////////////////////////////////////////////////////////////////
#define TRANSREQ1          0x40                 //Transmission Rest1 Register
#define TRANSREQ2          0x41                 //Transmission Rest2 Register

#define NEWDAT1            0x48                 //New Data 1            Register
#define NEWDAT2            0x49                 //New Data 2            Register

#define INTPEND1           0x50                 //Interrupt Pending 1   Register
#define INTPEND2           0x51                 //Interrupt Pending 2   Register

#define MSGVAL1            0x58                 //Message Valid 1       Register
#define MSGVAL2            0x59                 //Message Valid 2       Register

/////////////////////////////////////////////////////////////////////////////////
//Global Variables
/////////////////////////////////////////////////////////////////////////////////
   char status;
   int i;
   int StatusCopy;
   int MsgIntNum;
   sbit BUTTON = P3^7;
   sbit LED = P1^6;
   int i=0;
//////////////////////////////////////////////////////////////////////////////////
// Function PROTOTYPES
//////////////////////////////////////////////////////////////////////////////////

void SYSCLK_Init (void);
void PORT_Init (void);
void config_CAN_timing (void);
void start_CAN (void);
void stop_CAN (void);
void test_reg_write (char test);
void init_FIFO_Buffer (void);
void init_msg_object_RX (void);
void downloadFIFO (void);

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

//sfr16 DP       = 0x82;                 // data pointer
//sfr16 RCAP2    = 0xCA;                 // Timer2 reload/capture value
//sfr16 RCAP3    = 0xCA;                 // Timer3 reload/capture value
//sfr16 RCAP4    = 0xCA;                 // Timer4 reload/capture value
//sfr16 TMR2     = 0xCC;                 // Timer2 counter/timer
//sfr16 TMR3     = 0xCC;                 // Timer3 counter/timer
//sfr16 TMR4     = 0xCC;                 // Timer4 counter/timer
//sfr16 ADC0     = 0xBE;                 // ADC0 data
//sfr16 ADC0GT   = 0xC4;                 // ADC0 greater than window
//sfr16 ADC0LT   = 0xC6;                 // ADC0 less than window
//sfr16 DAC0     = 0xD2;                 // DAC0 data
//sfr16 DAC1     = 0xD2;                 // DAC1 data
sfr16 CAN0DAT  = 0xD8;                   // CAN data window

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

#define SYSCLK       22118400            // SYSCLK frequency in Hz
#define BAUDRATE     115200              // Baud rate of UART in bps
#define numSamples   1024                // Number of ADC0 samples
#define numBlocks    numSamples/128      // Number of FIFO blocks
#define fifoSize     32                  // Desired number of msg obj's to use in FIFO block
#define firstMsg     1                   // First desired Msg Object's number in FIFO Buffer
#define lastMsg      32                  // Last desired Mg Obj number in FIFO
#define RAM_BANK     0x20;               // bank select bit is P4^5
#define RAM_CS       0x10;               // chip select bit is P4^4



//-----------------------------------------------------------------------------
// Global VARIABLES
//-----------------------------------------------------------------------------
// xram memory array for logging temp samples
   unsigned int xdata templog [numSamples];

//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------

void main (void) {



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

   SYSCLK_Init ();                       // initialize oscillator
   PORT_Init ();                         // initialize crossbar and GPIO
   init_FIFO_Buffer ();                  // initialize CAN FIFO buffer
   init_msg_object_RX ();                // initialize last msg object in FIFO


   SFRPAGE = CONFIG_PAGE;

   EIE2 = 0x20;                          // Enable CAN int's
   EA = 1;                               // Global enable int's

   start_CAN ();                         // start CAN controller

   while (1);
}

//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------

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

   SFRPAGE = CONFIG_PAGE;                // set SFR page for oscillator config

   OSCXCN = 0x67;                        // start external oscillator with
                                         // 22.1184MHz crystal
   for (i=0; i < 256; i++) ;             // wait for oscillator to start
   while (!(OSCXCN & 0x80)) ;            // Wait for crystal osc. to settle
   CLKSEL = 0x01;                        // select external oscillator as SYSCLK
                                         // source and enable missing clock
                                         // detector
}

//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Configure the Crossbar and GPIO ports
//
void PORT_Init (void)
{
   SFRPAGE = CONFIG_PAGE;

   XBR2    |= 0x40;                      // Enable crossbar and weak pull-ups
   XBR3    = 0x80;                       // Configure CAN TX pin (CTX) as push-pull (digital output)
   P1MDOUT |= 0x40;                      // enable LED as push-pull output
}



//////////////////////////////////////////////////////////////////////////////////
//CAN Functions
//////////////////////////////////////////////////////////////////////////////////

//Initialize Message Objects for FIFO Buffer
void init_FIFO_Buffer (void)
{
   char msgNum;
   SFRPAGE = CAN0_PAGE;

      CAN0ADR = IF1CMDMSK;               // Point to Command Mask 1
      CAN0DAT = 0x00B8;                  // Set to WRITE, and alter all Msg Obj except ID MASK bits
      CAN0ADR = IF1ARB1;                 // Point to arbitration1 register
      CAN0DAT = 0x0000;                  // Set arbitration1 ID to highest priority
      CAN0DAT = 0x8000;                  // Autoincrement to Arb2 high byte: no extended ID, Dir = WRITE
      CAN0DAT = 0x0000;//0x0008?                  // Msg Cntrl: DLC = 8, remote frame function not enabled

   for (msgNum=firstMsg; msgNum<fifoSize; msgNum++){

         CAN0ADR = IF1CMDRQST;           // Point to Command Request reg.
         CAN0DATL = msgNum;              // Select Msg Obj passed into function parameter list --initiates write to Msg Obj
                                         // 3-6 CAN clock cycles to move IF reg contents to the Msg Obj in CAN RAM.
      }
}


//Initialize Last Message Object for RX FIFO buffer
void init_msg_object_RX (void)
{
   SFRPAGE = CAN0_PAGE;
   CAN0ADR = IF2CMDMSK;                  // Point to Command Mask 1
   CAN0DAT = 0x00B8;                     // Set to WRITE, and alter all Msg Obj except ID MASK and data bits
   CAN0ADR = IF2ARB1;                    // Point to arbitration1 register
   CAN0DAT = 0x0000;                     // Set arbitration1 ID to "0"
   CAN0DAT = 0x8000;                     // Arb2 high byte:Set MsgVal bit, no extended ID, Dir = RECEIVE
   CAN0DAT = 0x0480;                     // Msg Cntrl: set RX IE, remote frame function not enabled
   CAN0ADR = IF2CMDRQST;                 // Point to Command Request reg.
   CAN0DATL = lastMsg;                   // Select Msg Obj passed into function parameter list --initiates write to Msg Obj
   // 3-6 CAN clock cycles to move IF register contents to the Msg Obj in CAN RAM.
}


//Start CAN
void start_CAN (void)
{
   SFRPAGE = CAN0_PAGE;
   CAN0CN |= 0x02;                       //Enables Int's, status ints
   CAN0CN &= ~0x01;                      //Clear the INIT bit starts state machine
}

//////////////////////////////////////////////////////////////////////////////////
//Interrupt Service Routine
//////////////////////////////////////////////////////////////////////////////////
void ISRname (void) interrupt 19
{

   status = CAN0STA;
   if ((status&0x10) != 0){
      downloadFIFO ();
   }
}

void downloadFIFO (void){
   static int k = 0;
   char i;
   char MsgNum = firstMsg;
   SFRPAGE = CAN0_PAGE;

   CAN0ADR = IF2CMDMSK;
   CAN0DAT = 0x003F;                     // Read arb,conrol,clear int,clear NewDat, get dataA/B

   for (MsgNum=firstMsg; MsgNum < (fifoSize+1); MsgNum++){
   CAN0ADR = IF2CMDRQST;
   CAN0DATL = MsgNum;                    // transfer Msg Obj to IF2 registers
   CAN0ADR = IF2MSGC;
      if ((CAN0DAT&0x8000)!= 0){         // Is NewDat set?
         CAN0ADR = IF2DATA1;             // NewDat set, so get data from Msg Obj
         for (i=0;i<4;i++){
            templog[k] = CAN0DAT;        // Move four data words into xram data array
            k++;
         }


      }
         else {MsgNum--;}                // NewDat was not set, reload Msg Obj and check again


   }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合久久久久久| 亚洲一区二区三区四区在线观看 | 不卡一区二区中文字幕| 亚洲成年人影院| 国产日韩欧美在线一区| 欧美日韩精品欧美日韩精品| 国产成人精品在线看| 秋霞午夜鲁丝一区二区老狼| 日韩理论片在线| 国产人伦精品一区二区| 91精品国产综合久久精品麻豆 | 懂色一区二区三区免费观看| 午夜精品国产更新| 亚洲日本成人在线观看| 久久精品人人做人人综合| 欧美日本韩国一区二区三区视频 | 91丨porny丨蝌蚪视频| 精品在线免费观看| 婷婷丁香激情综合| 亚洲综合一区二区三区| 成人免费在线播放视频| 国产亚洲欧美在线| 精品处破学生在线二十三| 欧美久久久久久久久中文字幕| 97久久超碰精品国产| 欧美在线看片a免费观看| 国产麻豆视频精品| 久久国产福利国产秒拍| 日韩在线观看一区二区| 亚洲国产wwwccc36天堂| 一区二区欧美国产| 亚洲精品v日韩精品| 成人欧美一区二区三区1314| 国产精品你懂的在线欣赏| 国产午夜精品福利| 国产亲近乱来精品视频| 久久久久9999亚洲精品| 久久久欧美精品sm网站| 精品国产乱子伦一区| 精品久久久久久久久久久院品网 | 国产欧美一区二区三区沐欲| 精品国产一区二区在线观看| 精品日韩一区二区| 精品国产乱码久久久久久牛牛 | 亚洲精品免费在线播放| 亚洲色图一区二区| 一区二区三区四区高清精品免费观看 | 美国十次综合导航| 麻豆一区二区三| 黑人巨大精品欧美一区| 国产九九视频一区二区三区| 国产高清久久久久| 成人免费视频app| 色中色一区二区| 欧美天堂亚洲电影院在线播放| 欧美视频中文一区二区三区在线观看| 欧美日韩一级视频| 日韩一区二区在线看片| 337p粉嫩大胆噜噜噜噜噜91av| 久久久夜色精品亚洲| 国产精品丝袜在线| 亚洲精品综合在线| 日韩电影在线观看一区| 精品中文字幕一区二区| 成人国产精品免费| 欧美午夜精品免费| 欧美成人福利视频| 国产精品久久久久久久久免费樱桃 | 色美美综合视频| 欧美福利电影网| 玉米视频成人免费看| 午夜精品一区在线观看| 精品写真视频在线观看| 成人的网站免费观看| 色www精品视频在线观看| 欧美一区二区免费视频| 久久精品亚洲麻豆av一区二区| 亚洲欧美日韩在线| 免费视频最近日韩| 成人激情小说乱人伦| 欧美亚洲高清一区| 26uuu另类欧美亚洲曰本| 中文字幕综合网| 蜜臀久久99精品久久久久宅男| 岛国精品在线观看| 精品视频色一区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久蜜桃精品| 亚洲国产乱码最新视频| 国产激情一区二区三区四区 | 免费人成精品欧美精品| 成人免费观看视频| 欧美一区二区在线视频| 国产精品久久久久婷婷二区次| 日韩在线卡一卡二| 91美女在线看| 国产亚洲一区二区三区四区| 亚洲午夜羞羞片| 成人h版在线观看| 日韩免费一区二区三区在线播放| 亚洲色图.com| 国产精品综合av一区二区国产馆| 欧美探花视频资源| 国产精品免费免费| 久草精品在线观看| 欧美日韩国产免费一区二区 | 国产婷婷色一区二区三区在线| 亚洲国产精品天堂| 9l国产精品久久久久麻豆| 欧美成人精品3d动漫h| 亚洲国产另类av| 9人人澡人人爽人人精品| 26uuu精品一区二区| 日韩精品一区第一页| 91高清在线观看| 国产精品久久综合| 国产成人免费网站| 欧美成人精品3d动漫h| 日韩成人精品在线| 欧美日韩免费高清一区色橹橹 | 日本一区二区成人| 国产一区二区三区四区五区入口 | 国产精品免费网站在线观看| 国产美女娇喘av呻吟久久| 日韩三级视频中文字幕| 成人免费视频播放| 精品国产免费人成电影在线观看四季 | 欧美二区三区91| 亚洲图片自拍偷拍| 欧洲一区二区av| 亚洲综合色婷婷| 欧美性猛交xxxx黑人交| 亚洲精品高清在线| 欧美专区日韩专区| 亚洲精品亚洲人成人网在线播放| 91亚洲国产成人精品一区二区三| 中国av一区二区三区| 国产成人在线视频网站| 日本一区二区综合亚洲| 国产91精品久久久久久久网曝门| 久久综合色之久久综合| 国模大尺度一区二区三区| 久久免费美女视频| 风间由美中文字幕在线看视频国产欧美| 精品国产凹凸成av人网站| 国产乱妇无码大片在线观看| 亚洲精品一区二区三区精华液 | 在线免费观看视频一区| 亚洲黄色免费电影| 欧美日本一区二区三区| 免费看黄色91| www国产成人免费观看视频 深夜成人网| 久久国产精品一区二区| 久久久美女毛片| 不卡av电影在线播放| 亚洲精品写真福利| 6080yy午夜一二三区久久| 美女一区二区久久| 欧美激情中文字幕一区二区| www.欧美.com| 亚洲一区中文日韩| 日韩欧美的一区| 丁香婷婷深情五月亚洲| 亚洲免费伊人电影| 911精品产国品一二三产区| 久久99精品国产| 中文字幕不卡的av| 欧美视频完全免费看| 久久99这里只有精品| 国产精品全国免费观看高清| 日本精品裸体写真集在线观看| 三级久久三级久久| 国产嫩草影院久久久久| 欧美午夜在线观看| 国产剧情在线观看一区二区 | 精品伊人久久久久7777人| 欧美激情在线看| 欧美午夜不卡视频| 国产精品一区二区视频| 一区二区在线观看不卡| 日韩欧美电影一二三| 99re6这里只有精品视频在线观看| 亚洲午夜av在线| 久久老女人爱爱| 欧美情侣在线播放| 丰满白嫩尤物一区二区| 亚洲va欧美va人人爽午夜| 国产视频一区在线播放| 欧美日韩午夜在线视频| 高清日韩电视剧大全免费| 亚洲不卡av一区二区三区| 久久久国产午夜精品| 欧洲精品视频在线观看| 国产一区二区三区av电影| 一区二区欧美在线观看| 国产目拍亚洲精品99久久精品| 91精品国产综合久久国产大片 | 日本乱人伦一区| 国产成人免费视频网站| 秋霞午夜鲁丝一区二区老狼|