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

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

?? nfr401.c

?? nrf401
?? C
字號:
//nrf401實驗c51程序 

/*----------------------------------------------------------------------
nrf401實驗程序
雁塔菜農HotPower@126.com
-----------------------------------------------------------------------*/
#include <AT89X52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <nrf401.h>
#include <hotins.h>

#define T0_8mS -8000
#define T1_8mS -8000
#define T2_1_25mS -576 //-1250*0.9216=1.25MS


/*----------------------------------------------------------------------
        系統函數
-----------------------------------------------------------------------*/
void MainInit(void);//系統初始化
void ClrWdt(void);//喂狗
void nRFInit(void);
void SystemInit(void);//系統初始化
void SystemSetup(void);//系統設置
void SystemIoInit(void);//系統接口初始化
void UserSetup(void);//用戶運行環境設置
void TimeInit(void);
unsigned char crc8r(unsigned char crcbyte);
unsigned int crc16r(unsigned int crcword, unsigned int crc);
unsigned int GetTXBuffWord(unsigned char ledpos);
void SetTXBuffWord(unsigned char ledpos, unsigned int val);
unsigned int GetRXBuffWord(unsigned char ledpos);
void SetRXBuffWord(unsigned char ledpos, unsigned int val);


SystemData SystemBuffers;//申請系統數據結構

SioData SioBuffers;

/*-----------------------------------------
         主程序初始化
-------------------------------------------*/
void MainInit(void)//系統初始化
{
  SystemIoInit();//系統接口初始化
  ClrWdt();//清除看門狗計數器
  if (SystemBuffers.RamTest != 0x55aa) {//內存測試
SystemInit();//系統上電初始化
  }
  SystemSetup();//系統運行環境設置
  UserSetup();//用戶運行環境設置
}

void SystemInit(void)//系統初始化
{
  SystemBuffers.RamTest = 0x55aa;//內存初始化
}

void SystemSetup(void)//系統設置
{
  AUXR = 0x01;//關閉EMI
  nRFInit();
  TimeInit();
  IP = 0x10;//中斷優先級EX1>ET2>ET0>EX0>ES
  IE = 0xb4;//開中斷EA,ET2,ET1,EX1,ET0
}

void UserSetup(void)//用戶運行環境設置
{
}

void SystemIoInit(void)
{
  IE = 0x00;//關閉中斷
  P0 = 0xff;//P0口初始化
  P1 = 0xff;//P1口初始化
  P2 = 0xff;//P2口初始化
  P3 = 0xff;//P3口初始化
}

void TimeInit()
{
  TMOD = 0x21;//定時器0,1為方式1(十六位定時器)
  TCON = 0x55;//啟動定時器TR1EQUTR0EQU1,IT1EQUIT0EQU1
/*----------------------------------
      定時器0定時參數設置
----------------------------------*/
  TL0 = 0;
  TH0 = 0;
  TR0 = 1;//啟動定時器0
/*----------------------------------
      定時器0定時參數設置
----------------------------------*/
  TL1 = SIO_BPS;
  TH1 = SIO_BPS;
  PCON = 0x00;
  TR1 = 1;//啟動定時器1
/*----------------------------------
      定時器2定時參數設置
----------------------------------*/
  TIMEER2 = T2_1_25mS;
  RCAP    = T2_1_25mS;
  TR2     = 1;//啟動定時器2
}

void nRFInit(void)
{
  nRFCS    = 0;//433.92MHz//1//434.33MHz
  nRFTXEN  = 0;//接收
  nRFPWR   = 1;//上電
  SioBuffers.TXMAXCount = 0;
  SioBuffers.TXCount = 0;
//  SioBuffers.RXCount = 0;
  SCON     = 0x50;          /* SCON: mode 2, 9-bit UART, enable rcvr      */
  SioBuffers.RXCount = 16;
}


/*------------------------------------
         外部INT0中斷服務程序
------------------------------------*/
void int0proc() interrupt IE0_VECTOR// using 1
{
}

/*------------------------------------
         定時器T0中斷服務程序
------------------------------------*/
void t0proc() interrupt TF0_VECTOR// using 1
{
}

/*------------------------------------
         外部INT1中斷服務程序
------------------------------------*/
void int1proc() interrupt IE1_VECTOR using 1
{
}

/*------------------------------------
         定時器T1中斷服務程序
------------------------------------*/
void t1proc() interrupt TF1_VECTOR// using 1
{
}

/*------------------------------------
         串口SIO中斷服務程序
------------------------------------*/
void sioproc() interrupt SIO_VECTOR// using 1
{
unsigned char i;
unsigned int crc;
  if (RI) {//接收中斷
    RI = 0;
if (!nRFTXEN && SioBuffers.RXCount) {//每次接收20個數據
      i = SBUF;
      SioBuffers.RXCount --;
      SioBuffers.RXBuffers[19 - SioBuffers.RXCount] = i;
   switch(SioBuffers.RXCount) {
     case 19:
         if (i != 0x55) SioBuffers.RXCount = 20;
           break;
  case 18:
         if (i != 0xaa) SioBuffers.RXCount = 20;
           break;
  case 0:
         crc = 0;
      for (i = 1; i <= 8; i ++) {
                 crc = crc16r(GetRXBuffWord(i + i), crc);
      }
               if (crc != GetRXBuffWord(18))
                 SioBuffers.RXCount = 20;
       else {
                 nRFTXEN = 1;//發送
              for (i = 0; i < 20; i ++) {
             SioBuffers.TXBuffers[i] = SioBuffers.RXBuffers[i];
           }
     SioBuffers.TXMAXCount = TX_MAXCount;
                 SioBuffers.TXCount = TX_Count + 32;
     TI = 1;//接收結束立即轉為發送
      }
         break;
   }
} 
  }
  if (TI) {//發送中斷
    TI = 0;
    if (nRFTXEN && SioBuffers.TXCount) {
      SioBuffers.TXCount --;
      if (SioBuffers.TXCount > 19) {
     SBUF = 0x00;
//        SBUF = 0xff;
      }
      else {
        SBUF = SioBuffers.TXBuffers[19 - SioBuffers.TXCount];
      }
     if (SioBuffers.TXCount == 0) {
     if (SioBuffers.TXMAXCount) {
    SioBuffers.TXMAXCount --;
    SioBuffers.TXCount = TX_Count;
  }
        else {
          nRFTXEN = 0;//發送結束立即轉為接收
          SioBuffers.RXCount = 20;
  }
   }
}
  }
}

/*------------------------------------
         定時器T2中斷服務程序(1.25mS)
------------------------------------*/
void t2proc() interrupt TF2_VECTOR// using 2
{
//unsigned char i;
//unsigned int crc;
  TF2 = 0;
  if (PCON & GF0) {//中斷是從主循環內跳入的才能喂狗
    ClrWdt();//清除看門狗計數器
    PCON &= ~GF0;//清除標志 
  }
  SystemBuffers.T2Count ++; 



//  if (SystemBuffers.T2Count >= 80) {//100mS到
  if (SystemBuffers.T2Count >= 400) {//500mS到
    SystemBuffers.T2Count = 0;
//if (((SystemBuffers.T2Count & 3) == 0) && (SioBuffers.TXCount == 0)) {//10mS
//if (SioBuffers.TXCount == 0) {//10mS
/*
if (!ES && (SioBuffers.TXCount == 0)) {//10mS
  SioBuffers.TXCount = 18;
  crc =GetTXBuffWord(2);
  crc = crc16r(crc);
  SetTXBuffWord(4, crc);
  nRFTXEN = 1;//發送
  TI = 1;
  ES = 1;
}
*/ 
//    SioBuffers.TXCount = 8;
//    nRFTXEN = 1;//發送
// SBUF = SioBuffers.TXBuffers[0];
//    ES = 1;
  }
}

void ClrWdt(void)//喂狗
{
  WDTRST = 0x1e;//89s52內狗
  WDTRST = 0xe1;//89s52內狗
}

unsigned char crc8r(unsigned char crcbyte)
{ 
unsigned char i,crc; 
  crc = 0;
  for(i = 0; i < 8; i++) { 
    if(((crc ^ crcbyte) & 0x01) == 0) crc >>= 1; 
    else{ 
      crc ^= 0x18;//0x18;//CRC=X8+X5+X4+1
      crc >>= 1; 
      crc |= 0x80; 
    } 
    crcbyte >>= 1; 
  }
  return crc; 
}

unsigned int crc16r(unsigned int crcword, unsigned int crc) 
{ 
unsigned char i; 
  for(i = 0; i < 16; i++){ 
    if(((crc ^ crcword ) & 0x0001) == 0) crc >>= 1; 
    else{ 
      crc ^= 0x810;//0x0810;//CRC=X16+X12+X5+1 
      crc >>= 1; 
      crc |= 0x8000; 
    } 
    crcword >>= 1; 
  } 
  return crc; 
} 

unsigned int GetTXBuffWord(unsigned char ledpos)
{
unsigned char val1, val2;
unsigned int val;
  val1 = SioBuffers.TXBuffers[ledpos];
  val2 = SioBuffers.TXBuffers[ledpos + 1];
  val = (val1 << 8) + val2;
  return val; 
}

void SetTXBuffWord(unsigned char ledpos, unsigned int val)
{
  SioBuffers.TXBuffers[ledpos]     = (val >> 8); 
  SioBuffers.TXBuffers[ledpos + 1] = val & 0xff;
}

unsigned int GetRXBuffWord(unsigned char ledpos)
{
unsigned char val1, val2;
unsigned int val;
  val1 = SioBuffers.RXBuffers[ledpos];
  val2 = SioBuffers.RXBuffers[ledpos + 1];
  val = (val1 << 8) + val2;
  return val; 
}

void SetRXBuffWord(unsigned char ledpos, unsigned int val)
{
  SioBuffers.RXBuffers[ledpos]     = (val >> 8); 
  SioBuffers.RXBuffers[ledpos + 1] = val & 0xff;
} 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂成人国产精品一区| 日本女人一区二区三区| 91精品国产91久久久久久一区二区 | 日本丶国产丶欧美色综合| 日本不卡不码高清免费观看| 中文字幕精品在线不卡| 欧美丰满少妇xxxxx高潮对白| 成人黄色综合网站| 免费成人结看片| 亚洲午夜激情av| 中文字幕制服丝袜一区二区三区| 日韩免费视频一区| 欧美午夜一区二区三区| 成人av手机在线观看| 蜜芽一区二区三区| 亚洲国产成人tv| 夜夜精品视频一区二区| 亚洲国产岛国毛片在线| 精品国产免费人成在线观看| 91福利视频网站| 久久99这里只有精品| 丝袜a∨在线一区二区三区不卡| 久久久夜色精品亚洲| 777久久久精品| 国产成人高清在线| 国产精品一区二区无线| 偷窥少妇高潮呻吟av久久免费| 亚洲国产精品传媒在线观看| 日韩三级视频中文字幕| 777奇米成人网| 欧日韩精品视频| 色综合中文字幕| 成人在线一区二区三区| 日韩av网站在线观看| 亚洲国产日韩综合久久精品| 色噜噜狠狠色综合欧洲selulu| 日韩欧美在线网站| 日日摸夜夜添夜夜添亚洲女人| 欧洲精品一区二区三区在线观看| 久久久午夜精品| 亚洲一区在线观看视频| 色婷婷精品大视频在线蜜桃视频| 精品成人免费观看| 成人在线综合网站| 精品一区精品二区高清| 国产一区二区三区四区五区入口| 99久久er热在这里只有精品15| 午夜久久久久久久久| 亚洲成人中文在线| 亚洲三级电影网站| 亚洲欧美在线视频| 亚洲精品日韩专区silk| 国产精品成人一区二区艾草 | 亚洲国产日产av| 国产精品理论在线观看| 久久精品亚洲乱码伦伦中文| 久久色.com| 日本高清不卡一区| 欧美日韩午夜在线| 欧洲中文字幕精品| 91精品国产免费| 欧美成人aa大片| 国产精品视频一二三区| 国产精品久久久久久户外露出| 国产欧美精品区一区二区三区| 久久精品水蜜桃av综合天堂| 国产网站一区二区| 国产精品视频你懂的| 亚洲色图.com| 日本va欧美va瓶| 免费高清在线视频一区·| 懂色av一区二区三区免费看| 成人a区在线观看| 欧美色成人综合| 欧美成人一区二区三区片免费 | 精品国产1区2区3区| 久久在线观看免费| 亚洲三级免费观看| 婷婷久久综合九色综合伊人色| 久久精品国产一区二区三区免费看| 免费在线视频一区| www.成人在线| 欧美日韩亚洲综合在线| 国产成人综合在线| 国产高清精品久久久久| 日本欧美一区二区三区乱码| 美女视频黄久久| 国产一区亚洲一区| 国产一区二区伦理| 成人免费毛片片v| 成人性生交大片免费看视频在线| 国产69精品久久久久777| 懂色av一区二区三区免费看| 99精品在线免费| 欧美色视频在线观看| 日韩欧美国产综合| 久久综合九色综合97婷婷| 国产精品久久久久永久免费观看| 国产精品白丝在线| 亚洲五码中文字幕| 成人爱爱电影网址| 日韩三级在线观看| 全国精品久久少妇| 欧美日韩久久久| 日韩三级在线观看| 欧美午夜精品电影| 精品久久国产老人久久综合| 欧美精品一二三| 图片区小说区国产精品视频| 欧美一级日韩不卡播放免费| 国产91高潮流白浆在线麻豆| 久久成人免费网| 97精品国产97久久久久久久久久久久 | 久久精品国产77777蜜臀| www.爱久久.com| 日韩一区二区三区精品视频| 一区二区免费看| 亚洲一区二区免费视频| a4yy欧美一区二区三区| 欧美疯狂做受xxxx富婆| 亚洲自拍偷拍网站| 99视频一区二区| 国产欧美日韩在线观看| 美腿丝袜亚洲综合| 这里只有精品免费| 一区二区高清在线| 成人免费av在线| 美日韩一级片在线观看| 中文字幕一区二区三区乱码在线| 成人高清视频在线| 在线综合亚洲欧美在线视频| 一区二区三区不卡视频在线观看 | 91麻豆高清视频| 久久久久久久久久久久久夜| 亚洲综合另类小说| 五月婷婷综合在线| 性欧美大战久久久久久久久| 国产在线国偷精品产拍免费yy| 91精品国产综合久久香蕉的特点 | 性感美女久久精品| 成人黄色电影在线 | 欧美写真视频网站| 亚洲精品成人精品456| 色妞www精品视频| 国产精品久久久久久久久免费桃花| 麻豆国产91在线播放| 欧美精品乱码久久久久久按摩| 亚洲一级二级在线| 99精品国产一区二区三区不卡| 亚洲国产电影在线观看| 国产精品中文字幕日韩精品 | 亚洲裸体xxx| 91丝袜国产在线播放| 一区二区三区加勒比av| 91色|porny| 亚洲妇女屁股眼交7| 欧美亚洲国产一区二区三区va | 亚洲一区二区三区免费视频| 欧美日韩精品免费| 日韩中文欧美在线| 久久毛片高清国产| 国产成人av电影在线观看| 国产精品久久久久久妇女6080| av电影在线观看一区| 91精品在线麻豆| 国产一区中文字幕| 欧美国产日韩精品免费观看| 91在线视频在线| 亚洲综合av网| 精品国产一区二区三区久久久蜜月 | 亚洲色图20p| 欧美一区三区四区| 国内欧美视频一区二区| 国产精品每日更新| 91高清视频在线| 狠狠色狠狠色合久久伊人| 国产欧美一区二区精品忘忧草 | 成人黄色软件下载| 一区二区激情视频| 精品久久久网站| 成人激情免费网站| ㊣最新国产の精品bt伙计久久| 欧美精品丝袜中出| 久久99这里只有精品| 亚洲精品国产精品乱码不99| 欧美日韩国产经典色站一区二区三区 | 欧美中文字幕一区二区三区亚洲| 五月激情综合色| 91麻豆精品国产自产在线观看一区| 国产98色在线|日韩| 亚洲精品高清视频在线观看| 久久影院视频免费| 色综合激情久久| 国产精品一二三在| 亚洲一卡二卡三卡四卡| 国产精品人成在线观看免费| 欧美色窝79yyyycom| 99精品国产热久久91蜜凸| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区三区在线高清|