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

📄 lcdc_040.lst

📁 新华龙公司的C8051F040的实验板BTF040的实验程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.08   LCDC_040                                                              04/24/2008 15:54:41 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE LCDC_040
OBJECT MODULE PLACED IN lcdc_040.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe lcdc_040.c DB OE

line level    source

   1          
   2          
   3          
   4          ////////////////////////////////////////////////////////////////////////////////
   5          // Includes
   6          ////////////////////////////////////////////////////////////////////////////////
   7          
   8          #include <c8051f040.h>                          // SFR declarations
   9          
  10          // CAN Protocol Register Index for CAN0ADR, from TABLE 18.1 of the C8051F040
  11          // datasheet  212页表18.2 寄存器索引号
  12          ////////////////////////////////////////////////////////////////////////////////
  13          #define CANCTRL            0x00                 //Control Register
  14          #define CANSTAT            0x01                 //Status register
  15          #define ERRCNT             0x02                 //Error Counter Register
  16          #define BITREG             0x03                 //Bit Timing Register
  17          #define INTREG             0x04                 //Interrupt Low Byte Register
  18          #define CANTSTR            0x05                 //Test register
  19          #define BRPEXT             0x06                 //BRP Extension         Register
  20          ////////////////////////////////////////////////////////////////////////////////
  21          //IF1 Interface Registers
  22          ////////////////////////////////////////////////////////////////////////////////
  23          #define IF1CMDRQST         0x08                 //IF1 Command Rest      Register
  24          #define IF1CMDMSK          0x09                 //IF1 Command Mask      Register
  25          #define IF1MSK1            0x0A                 //IF1 Mask1             Register
  26          #define IF1MSK2            0x0B                 //IF1 Mask2             Register
  27          #define IF1ARB1            0x0C                 //IF1 Arbitration 1     Register
  28          #define IF1ARB2            0x0D                 //IF1 Arbitration 2     Register
  29          #define IF1MSGC            0x0E                 //IF1 Message Control   Register
  30          #define IF1DATA1           0x0F                 //IF1 Data A1           Register
  31          #define IF1DATA2           0x10                 //IF1 Data A2           Register
  32          #define IF1DATB1           0x11                 //IF1 Data B1           Register
  33          #define IF1DATB2           0x12                 //IF1 Data B2           Register
  34          ////////////////////////////////////////////////////////////////////////////////
  35          //IF2 Interface Registers
  36          ////////////////////////////////////////////////////////////////////////////////
  37          #define IF2CMDRQST         0x20                 //IF2 Command Rest      Register
  38          #define IF2CMDMSK          0x21                 //IF2 Command Mask      Register
  39          #define IF2MSK1            0x22                 //IF2 Mask1             Register
  40          #define IF2MSK2            0x23                 //IF2 Mask2             Register
  41          #define IF2ARB1            0x24                 //IF2 Arbitration 1     Register
  42          #define IF2ARB2            0x25                 //IF2 Arbitration 2     Register
  43          #define IF2MSGC            0x26                 //IF2 Message Control   Register
  44          #define IF2DATA1           0x27                 //IF2 Data A1           Register
  45          #define IF2DATA2           0x28                 //IF2 Data A2           Register
  46          #define IF2DATB1           0x29                 //IF2 Data B1           Register
  47          #define IF2DATB2           0x2A                 //IF2 Data B2           Register
  48          ////////////////////////////////////////////////////////////////////////////////
  49          //Message Handler Registers
  50          ////////////////////////////////////////////////////////////////////////////////
  51          #define TRANSREQ1          0x40                 //Transmission Rest1 Register
  52          #define TRANSREQ2          0x41                 //Transmission Rest2 Register
  53          
  54          #define NEWDAT1            0x48                 //New Data 1            Register
  55          #define NEWDAT2            0x49                 //New Data 2            Register
C51 COMPILER V7.08   LCDC_040                                                              04/24/2008 15:54:41 PAGE 2   

  56          
  57          #define INTPEND1           0x50                 //Interrupt Pending 1   Register
  58          #define INTPEND2           0x51                 //Interrupt Pending 2   Register
  59          
  60          #define MSGVAL1            0x58                 //Message Valid 1       Register
  61          #define MSGVAL2            0x59                 //Message Valid 2       Register
  62          
  63          ////////////////////////////////////////////////////////////////////////////////
  64          //Global Variables
  65          ////////////////////////////////////////////////////////////////////////////////
  66          #define uchar unsigned char
  67          #define uint unsigned int
  68          #define ulong unsigned long 
  69          
  70          
  71          union intchar{
  72           uint tempval;
  73           struct{uchar hi;uchar low;}bytek;
  74          };
  75          
  76          bit isnewdata;
  77          data uchar temppage;
  78          data uchar status;
  79          xdata uchar sdata[8]={0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  80          
  81          
  82          
  83          uchar xdata rdata[8];
  84          
  85          char MsgNum;
  86          
  87          int i;
  88          bit lcdtoken=0;
  89          
  90          sfr16 CAN0DAT = 0xD8;//CAN数据寄存器的低地址
  91          
  92          #define uchar unsigned char
  93          #define uint unsigned int
  94          
  95          uchar xdata virt_port;
  96          bit SPI_BUSY;
  97          
  98          sbit LcdCs=P2^5;
  99          
 100          
 101          
 102          ////////////////////////////////////////////////////////////////////////////////
 103          // Function PROTOTYPES
 104          ////////////////////////////////////////////////////////////////////////////////
 105          
 106          // Initialize Message Object
 107          void clear_msg_objects (void);
 108          void init_msg_object_TX (char MsgNum,uint id);
 109          void init_msg_object_RX (char MsgNum,uint id);
 110          void start_CAN (void);
 111          
 112          void external_osc (void);
 113          void config_IO (void);
 114          
 115          void stop_CAN (void);
 116          void delay(int tim);
 117          void receive_data(uchar MsgNum,char *p,char len);
C51 COMPILER V7.08   LCDC_040                                                              04/24/2008 15:54:41 PAGE 3   

 118          void transmit(char MsgNum,char *p,char len);
 119          
 120          
 121          void spi_init();
 122          void writecode(uchar ins);
 123          void writedata(uchar d);
 124          void lcdchar (void);
 125          void lcdinit();
 126          void writelcd(uchar spi_data);
 127          
 128          
 129          /*void delay(uint d)
 130           {uint i,j;
 131            for(i=0;i<d;i++);
 132                  {
 133                  for(j=10;j>0;j--);
 134                  }
 135          
 136           }
 137          */
 138          
 139          ////////////////////////////////////////////////////////////////////////////////
 140          // MAIN Routine
 141          ////////////////////////////////////////////////////////////////////////////////
 142          #define LEN 8
 143          
 144           main () {
 145   1        //char vid;
 146   1        // disable watchdog timer
 147   1        //xdata uchar ss1[8]={0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18};
 148   1        //xdata uchar ss2[8]={0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28};
 149   1        WDTCN = 0xde;
 150   1        WDTCN = 0xad;
 151   1      
 152   1        //configure Port I/O
 153   1        config_IO();
 154   1      
 155   1        // switch to external oscillator
 156   1        external_osc();
 157   1         spi_init();
 158   1      
 159   1      ////////////////////////////////////////////////////////////////////////////////
 160   1      // Configure CAN communications
 161   1      //
 162   1      // IF1 used for procedures calles by main program
 163   1      // IF2 used for interrupt service procedure receive_data
 164   1      //
 165   1      // Message Object assignments:
 166   1      //  0x02: Used to transmit commands to toggle its LED, arbitration number 1
 167   1      //
 168   1      ////////////////////////////////////////////////////////////////////////////////
 169   1      
 170   1        // Clear CAN RAM
 171   1        clear_msg_objects();
 172   1      
 173   1        // Initialize message object to transmit data
 174   1        init_msg_object_RX (0x04,2);
 175   1      
 176   1        // Initialize message object to receive data
 177   1        init_msg_object_TX (0x02,1);
 178   1      
 179   1        //init_msg_object_TX (0x03,4);
C51 COMPILER V7.08   LCDC_040                                                              04/24/2008 15:54:41 PAGE 4   

 180   1           
 181   1      
 182   1        // Enable CAN interrupts in CIP-51
 183   1        EIE2 = 0x20;
 184   1        EIE1= 0x01;
 185   1       
 186   1        
 187   1        //Function call to start CAN
 188   1        start_CAN();
 189   1      
 190   1        //Global enable 8051 interrupts
 191   1        EA = 1;
 192   1      
 193   1        //Loop and wait for interrupts
 194   1       while (1)
 195   1          {
 196   2                if(lcdtoken==1)
 197   2                {
 198   3                lcdtoken=0;
 199   3                lcdinit();
 200   3                lcdchar();
 201   3                for(i=0;i<1000;i++)
 202   3                   delay(1000);
 203   3                 }
 204   2                                                        
 205   2       // transmit(3,ss2,LEN);
 206   2                    
 207   2              
 208   2          }
 209   1      }
 210          
 211          
 212          ////////////////////////////////////////////////////////////////////////////////
 213          // Set up C8051F040
 214          ////////////////////////////////////////////////////////////////////////////////
 215          
 216          // Switch to external oscillator
 217          void external_osc (void)//晶振初始化
 218          {
 219   1        int n;                        // local variable used in delay FOR loop.

⌨️ 快捷键说明

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