⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fasong.lst

📁 由NRF905和单片机组成的不停车收费接收模块的发送数据端程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE FASONG
OBJECT MODULE PLACED IN Fasong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Fasong.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <ABSACC.h>
   3          #include <intrins.h>
   4          #include <stdio.h>
   5          #define uint unsigned int
   6          #define uchar unsigned char
   7          #define BYTE_BIT0       0x01
   8          #define BYTE_BIT1       0x02
   9          #define BYTE_BIT2       0x04
  10          #define BYTE_BIT3       0x08
  11          #define BYTE_BIT4       0x10
  12          #define BYTE_BIT5       0x20
  13          #define BYTE_BIT6       0x40
  14          #define BYTE_BIT7       0x80
  15          ////////////SPI指令
  16          #define WC              0x00
  17          #define RC              0x10
  18          #define WTP             0x20
  19          #define RTP             0x21
  20          #define WTA             0x22
  21          #define RTA             0x23
  22          #define RRP             0x24
  23          bdata unsigned  char DATA_BUF;
  24          #define DATA7   ((DATA_BUF&BYTE_BIT7) != 0)
  25          #define DATA0   ((DATA_BUF&BYTE_BIT0) != 0)
  26          sbit    flag    =DATA_BUF^7;
  27          sbit    flag1   =DATA_BUF^0;
  28          #define TxRxBuf_Len 32
  29          unsigned char TxRxBuffer2[TxRxBuf_Len];
  30          unsigned char TxRxBuffer0[TxRxBuf_Len]=
  31          {
  32          
  33          0x43,0x35,0x32,0x30,0x33,//0x06,0x07,0x08,
  34          //0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,
  35          //0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,
  36          //0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,
  37          };
  38          //配置口定义//
  39          sbit    TXEN=P1^0;
  40          sbit    TRX_CE=P3^2;
  41          sbit    PWR=P1^1;
  42          sbit    MISO=P1^6;
  43          sbit    MOSI=P1^5;
  44          sbit    SCK=P1^7;
  45          sbit    CSN=P1^3;
  46          /////////////////////////////////////////////////////
  47          sbit    AM=P1^4;
  48          sbit    DR=P3^3;
  49          sbit    CD=P1^2;
  50          ///////////////////////////////////////////////////////
  51          //sbit      DQ=P3^5       ;
  52          ///////////////////////////////////////////////////////
  53          sbit RS = P3^7;
  54          sbit RW = P3^6;
  55          sbit E  = P3^5;
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 2   

  56          //液晶配置口定义//
  57          
  58          //RF寄存器配置//
  59          unsigned char idata RFConf[11]=
  60          {
  61            0x00,                             //配置命令//
  62            0x4c,                             //CH_NO,配置频段在423MHZ
  63            0x0C,                             //输出功率为10db,不重发,节电为正常模式
  64            0x44,                             //地址宽度设置,为4字节
  65            0x20,0x20,                        //接收发送有效数据长度为32字节
  66            0xCC,0xCC,0xCC,0xCC,              //接收地址
  67            0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
  68          };
  69          bit lcdbit;
  70          code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
  71          //////////////
  72          
  73          ///////////延时/////////////////
  74          static void Delay(uchar n)
  75          {
  76   1              uint i;
  77   1              while(n--)
  78   1              for(i=0;i<80;i++);
  79   1      }
  80          
  81          ///////等待液晶上条指令完成延时////////
  82          void LCDdelay(void)
  83          {       uint i;
  84   1          for(i=0;i<=255;i++)
  85   1                 { }
  86   1      }
  87          /////////LCD写数据////////////////////////////
  88          void LCDwdata(void)
  89          {
  90   1              RS=1;
  91   1              RW=0;
  92   1              E=1;
  93   1              LCDdelay();
  94   1              E=0;
  95   1              LCDdelay();
  96   1              E=1;
  97   1      }
  98          /////////LCD写指令//////////////////////
  99          void enable(void)
 100          { 
 101   1              RS=0;
 102   1              RW=0;
 103   1              E=1;
 104   1          LCDdelay();
 105   1              E=0;
 106   1              LCDdelay();
 107   1              E=1;
 108   1      }
 109          ////////LCD初始化/////////////////
 110          void initLCD(void)
 111          {
 112   1              P0=0x01;
 113   1              enable();
 114   1              P0=0x38;
 115   1              enable();
 116   1              P0=0x0c;
 117   1              enable();
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 3   

 118   1              P0=0x06;
 119   1              enable();
 120   1              P0=0x82;                //初始显示位置
 121   1              enable();
 122   1      }       
 123          void LCD_write(unsigned char a)
 124          {
 125   1              P0=a;
 126   1              LCDwdata();
 127   1      }
 128          /////////模仿SPI时序//////////////
 129          unsigned char SpiRead(void)
 130          {
 131   1              unsigned char i;
 132   1              for (i=0;i<8;i++)
 133   1              {
 134   2                      DATA_BUF=DATA_BUF<<1;
 135   2                      SCK=1;
 136   2                      if (MISO)       //读取最高位,保存至最末尾,通过左移位完成整个字节
 137   2                      {
 138   3                              DATA_BUF|=BYTE_BIT0;
 139   3                      }
 140   2                      else
 141   2                      {
 142   3                              DATA_BUF&=~BYTE_BIT0;
 143   3                      }
 144   2                      SCK=0;
 145   2               }
 146   1               return DATA_BUF;
 147   1      }
 148          
 149          void SpiWrite(unsigned char send)
 150          {
 151   1              unsigned char i;
 152   1              DATA_BUF=send;
 153   1              for (i=0;i<8;i++)
 154   1              {
 155   2                      if (DATA7)      //总是发送最高位
 156   2                      {
 157   3                              MOSI=1;
 158   3                      }
 159   2                      else
 160   2                      {
 161   3                              MOSI=0;
 162   3                      }
 163   2                      SCK=1;
 164   2                      DATA_BUF=DATA_BUF<<1;
 165   2                      SCK=0;
 166   2              }
 167   1      }
 168          ////////////////初始化nRF905///////////////////
 169          void nRF905Init(void)
 170          {
 171   1          CSN=1;                                              // Spi  disable
 172   1              SCK=0;                                          // Spi clock line init low
 173   1              DR=0;                                           // Init DR for input
 174   1              AM=0;                                           // Init AM for input
 175   1              CD=0;                                           // Init CD for input
 176   1              PWR=1;                                  // nRF905 power on
 177   1              TRX_CE=0;                                       // Set nRF905 in standby mode
 178   1              TXEN=0;                                 // set radio in Rx mode
 179   1      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -