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

📄 main.lst

📁 CF8051F040开发板的 timer_test程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MAIN                                                                  01/21/2007 21:09:42 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2004,西安铭朗电子科技有限责任公司
   3          *            All rights reserved.
   4          *
   5          * 文件名称: main.C
   6          * 文件标识: none
   7          * 适用器件: C8051F040
   8          * 
   9          * 摘 要: 本文件是LED灯闪硕实验程序;LED灯每隔1秒亮1秒;将跳线器JP4短接;使用外部
  10          *         22.1184MHz晶振,应用PLL倍频到100MHZ.
  11          *               
  12          * 当前版本:1.2
  13          * 作 者:张宁强
  14          * 完成日期:2006年1月10日
  15          *
  16          * 历史版本:1.0 
  17          * 原作者 : 李林利 卢阳
  18          * 完成日期:2005年6月1日
  19          *************************************************************************************/
  20          /************************************************************************************/
  21          // 引用外部头文件
  22          
  23          #include "c8051f040.h"  
  24          #include "Const.h"               
  25          #include "timer.h"
  26          #include "lcd.h"
  27          /************************************************************************************/
  28          
  29          // CAN Protocol Register Index for CAN0ADR, from TABLE 18.1 of the C8051F040
  30          // datasheet
  31          ////////////////////////////////////////////////////////////////////////////////
  32          #define CANCTRL            0x00                 //Control Register
  33          #define CANSTAT            0x01                 //Status register
  34          #define ERRCNT             0x02                 //Error Counter Register
  35          #define BITREG             0x03                 //Bit Timing Register
  36          #define INTREG             0x04                 //Interrupt Low Byte Register
  37          #define CANTSTR            0x05                 //Test register
  38          #define BRPEXT             0x06                 //BRP Extension         Register
  39          ////////////////////////////////////////////////////////////////////////////////
  40          //IF1 Interface Registers
  41          ////////////////////////////////////////////////////////////////////////////////
  42          #define IF1CMDRQST         0x08                 //IF1 Command Rest      Register
  43          #define IF1CMDMSK          0x09                 //IF1 Command Mask      Register
  44          #define IF1MSK1            0x0A                 //IF1 Mask1             Register
  45          #define IF1MSK2            0x0B                 //IF1 Mask2             Register
  46          #define IF1ARB1            0x0C                 //IF1 Arbitration 1     Register
  47          #define IF1ARB2            0x0D                 //IF1 Arbitration 2     Register
  48          #define IF1MSGC            0x0E                 //IF1 Message Control   Register
  49          #define IF1DATA1           0x0F                 //IF1 Data A1           Register
  50          #define IF1DATA2           0x10                 //IF1 Data A2           Register
  51          #define IF1DATB1           0x11                 //IF1 Data B1           Register
  52          #define IF1DATB2           0x12                 //IF1 Data B2           Register
  53          ////////////////////////////////////////////////////////////////////////////////
  54          //IF2 Interface Registers
  55          ////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.50   MAIN                                                                  01/21/2007 21:09:42 PAGE 2   

  56          #define IF2CMDRQST         0x20                 //IF2 Command Rest      Register
  57          #define IF2CMDMSK          0x21                 //IF2 Command Mask      Register
  58          #define IF2MSK1            0x22                 //IF2 Mask1             Register
  59          #define IF2MSK2            0x23                 //IF2 Mask2             Register
  60          #define IF2ARB1            0x24                 //IF2 Arbitration 1     Register
  61          #define IF2ARB2            0x25                 //IF2 Arbitration 2     Register
  62          #define IF2MSGC            0x26                 //IF2 Message Control   Register
  63          #define IF2DATA1           0x27                 //IF2 Data A1           Register
  64          #define IF2DATA2           0x28                 //IF2 Data A2           Register
  65          #define IF2DATB1           0x29                 //IF2 Data B1           Register
  66          #define IF2DATB2           0x2A                 //IF2 Data B2           Register
  67          ////////////////////////////////////////////////////////////////////////////////
  68          //Message Handler Registers
  69          ////////////////////////////////////////////////////////////////////////////////
  70          #define TRANSREQ1          0x40                 //Transmission Rest1 Register
  71          #define TRANSREQ2          0x41                 //Transmission Rest2 Register
  72          
  73          #define NEWDAT1            0x48                 //New Data 1            Register
  74          #define NEWDAT2            0x49                 //New Data 2            Register
  75          
  76          #define INTPEND1           0x50                 //Interrupt Pending 1   Register
  77          #define INTPEND2           0x51                 //Interrupt Pending 2   Register
  78          
  79          #define MSGVAL1            0x58                 //Message Valid 1       Register
  80          #define MSGVAL2            0x59                 //Message Valid 2       Register
  81          
  82          ////////////////////////////////////////////////////////////////////////////////
  83          
  84          /************************************************************************************
  85          // 常量及全局变量定义
  86          *************************************************************************************/
  87          
  88          sbit LED = P2^3;                       // LED='1' 灯亮
  89          unsigned char flag;
  90          unsigned int i;
  91          
  92          
  93          void clear_msg_objects (void);
  94          void init_msg_object_TX (char MsgNum);
  95          void init_msg_object_RX (char MsgNum);
  96          void start_CAN (void);
  97          void transmit_Byte (char MsgNum);
  98          /************************************************************************************
  99          // 子函数声明
 100          *************************************************************************************/
 101          
 102          void SYSCLK_Init (void);
 103          void PORT_Init (void);
 104          void LED_state(unsigned char flag);
 105          
 106          /************************************************************************************
 107          //  主循环程序
 108          *************************************************************************************/
 109          
 110          void main (void) 
 111          {
 112   1              char data SFRPAGE_SAVE;
 113   1      
 114   1              WDTCN = 0xde;                       //关闭看门狗定时器
 115   1              WDTCN = 0xad;
 116   1              
 117   1              PORT_Init (); 
C51 COMPILER V7.50   MAIN                                                                  01/21/2007 21:09:42 PAGE 3   

 118   1              lcd_init();
 119   1              dis_clr();
 120   1              dis_start0();
 121   1              
 122   1        // Clear CAN RAM
 123   1        clear_msg_objects();
 124   1      
 125   1        // Initialize message object to transmit data
 126   1        init_msg_object_TX (0x02);
 127   1      
 128   1        // Initialize message object to receive data
 129   1        init_msg_object_RX (0x01);
 130   1      
 131   1        // Enable CAN interrupts in CIP-51
 132   1        EIE2 = 0x20;
 133   1      
 134   1        //Function call to start CAN
 135   1        start_CAN();
 136   1      
 137   1        //Global enable 8051 interrupts
 138   1        EA = 1;
 139   1      
 140   1              SYSCLK_Init ();                    //初始化
 141   1      
 142   1              
 143   1      
 144   1              Timer0_init(SYSCLK/20);                         //50ms中断一次
 145   1              i=0;
 146   1              flag=0;
 147   1              SFRPAGE_SAVE = SFRPAGE;    // Save Current SFR page   
 148   1          SFRPAGE = SFR_PAGE_0;                       // set SFR page 0
 149   1      
 150   1              ET0=1;
 151   1                    
 152   1          TR0 = 1;                         // 打开定时器Timer0
 153   1              
 154   1              SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 155   1      
 156   1              while (1)
 157   1              {
 158   2              LED_state(flag);                 // 改变LED状态
 159   2          }
 160   1      }
 161          
 162          /************************************************************************************
 163          //  系统初始化功能子程序
 164          *************************************************************************************/
 165          
 166          /***********************************************************************************
 167          * 函数名称:SYSCLK_Init;
 168          *
 169          * 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源,using the PLL;
 170          *                       This routine initializes the system clock to use an external 22.1184 MHz 
 171          *               crystal oscillator multiplied by a factor of 9/2 using the PLL as its 
 172          *               clock source. The resulting frequency is 22.1184 MHz * 9/2 = 100(99.6) MHz
 173          *              
 174          * 输入参数:none;
 175          *
 176          * 返回数据:none;
 177          *
 178          * 注意:    none;
 179          ************************************************************************************/
C51 COMPILER V7.50   MAIN                                                                  01/21/2007 21:09:42 PAGE 4   

 180          void SYSCLK_Init (void)
 181          {
 182   1         int i;                           // delay counter
 183   1         
 184   1         char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 185   1      
 186   1         SFRPAGE = CONFIG_PAGE;           // set SFR page
 187   1      
 188   1         OSCXCN = 0x67;                   // start external oscillator with
 189   1                                          // 22.1184MHz crystal
 190   1      
 191   1         for (i=0; i < 256; i++) ;        // Wait for osc. to start up
 192   1         
 193   1         while (!(OSCXCN & 0x80)) ;       // Wait for crystal osc. to settle
 194   1      
 195   1         CLKSEL = 0x01;                   // Select the external osc. as
 196   1                                          // the SYSCLK source
 197   1      
 198   1         OSCICN = 0x00;                   // Disable the internal osc.
 199   1         
 200   1      
 201   1         SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 202   1      }
 203          // Switch to external oscillator
 204          void external_osc (void)
 205          {
 206   1        int n;                        // local variable used in delay FOR loop.

⌨️ 快捷键说明

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