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

📄 main.lst

📁 实现U盘功能的单片机程序,单片机为C8051F340
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  06/23/2008 19:39:42 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.c DB OE

line level    source

   1          
   2          //头文件
   3          /////////////////////////////
   4          #include "c8051F340.h"
   5          #include "stdio.h"
   6          #include "intrins.h"
   7          #include "Usb_FunDec.h"
   8          #include "Usb_Parameter.h"
   9          #include "Usb_Register.h"
  10          #include "Usb_Request.h"
  11          ///////////////////////////////////////////////////////////////////////////////////////
  12          // 16-bit SFR declarations
  13          sfr16 DP       = 0x82;                  // data pointer
  14          sfr16 TMR2RL   = 0xca;                  // Timer2 reload
  15          sfr16 TMR2     = 0xcc;                  // Timer2 counter
  16          sfr16 TMR3     = 0x94;                  // Timer3 counter
  17          sfr16 TMR3RL   = 0x92;                  // Timer3 reload
  18          sfr16 PCA0CP1  = 0xe9;                  // PCA0 Module 1 Capture/Compare
  19          sfr16 PCA0CP2  = 0xeb;                  // PCA0 Module 2 Capture/Compare
  20          sfr16 PCA0CP3  = 0xed;                  // PCA0 Module 3 Capture/Compare
  21          sfr16 PCA0CP4  = 0xfd;                  // PCA0 Module 4 Capture/Compare
  22          sfr16 PCA0CP0  = 0xfb;                  // PCA0 Module 0 Capture/Compare
  23          sfr16 PCA0     = 0xf9;                  // PCA0 counter
  24          ////////////////////////////////////////////////////////////////////////////////////////
  25          //宏定义
  26          #define System_Clock 48000000                   //系统时钟
  27          #define Baud_Rate    9600                               //串口波特率
  28          ////////////////////////////////////////////////////////////////////////////////////////
  29          //位定义
  30          sbit    LED_g                   = P2^4;                         //LED控制脚
  31          ////////////////////////////////////////////////////////////////////////////////////////
  32          //函数申明
  33          void    Init_Device(void);                              //单片机初始化
  34          void    Reset_Sources_Init(void);               //单片机复位源初始化
  35          void    Timer_Init(void);                               //定时器初始化
  36          void    UART_Init(void);                                //串口初始化
  37          void    ADC_Init(void);                                 //AD转换器初始化
  38          void    Voltage_Reference_Init(void);   //电压基准愿初始化
  39          void    Port_IO_Init(void);                             //IO口初始化
  40          void    Oscillator_Init(void);                  //系统时钟初始化
  41          void    Interrupts_Init(void);                  //中断源初始化
  42          void    Time_Delay(unsigned int time);  //延时函数定义,时间为time毫秒
  43          //////////////////////////////////////////////////////////////////////
  44          //外部函数调用
  45          extern  void Flash_Init(void);
  46          extern  void Flash_Format16(void);
  47          extern  void Test_Flash(void);
  48          extern  void Flash_Verify(void);
  49          ///////////////////////////////////////////////////////////////////////////////////////////////////
  50          
  51          //主函数
  52          void main ()
  53          {
  54   1              PCA0MD &= ~0x40;            // 关看门狗
  55   1              Init_Device();                          // 单片机初始化
C51 COMPILER V7.20   MAIN                                                                  06/23/2008 19:39:42 PAGE 2   

  56   1              Flash_Init();                           // FLASH初始化
  57   1              Usb_Init();                                     // USB初始化
  58   1              EA = 1;                                         // 开中断中断
  59   1      
  60   1              while (1)
  61   1              {
  62   2                      Time_Delay(1);
  63   2                      LED_g=1;
  64   2              }
  65   1      }
  66          
  67          
  68          
  69          ////////////////////////////////////////////////////////////////////////////////////////////////////
  70          //单片机初始化
  71          void Init_Device(void)
  72          {
  73   1          Reset_Sources_Init();
  74   1          Timer_Init();
  75   1          UART_Init();
  76   1          ADC_Init();
  77   1          Voltage_Reference_Init();
  78   1          Port_IO_Init();
  79   1          Oscillator_Init();
  80   1          Interrupts_Init();
  81   1      }
  82          
  83          void Reset_Sources_Init()
  84          {
  85   1      }
  86          
  87          //定时器0使用系统时钟,为16位定时器方式;定时器1使用系统时钟的12分频,8位重装载方式,波特率发生器
  88          void Timer_Init()
  89          {
  90   1          TCON      = 0x40;
  91   1          TMOD      = 0x20;
  92   1              TL1             = -System_Clock/12/2/Baud_Rate;
  93   1          TH1     = -System_Clock/12/2/Baud_Rate;
  94   1              TR0=0;
  95   1              TR1=1;
  96   1      }
  97          
  98          //8位方式,1起始位+8数据位+1停止位,接收容许,并且只有停止位为1时才触发接收中断
  99          void UART_Init()
 100          {
 101   1          SCON0     = 0x30;
 102   1              TI0=1;                          //为printf函数做准备
 103   1      }
 104          
 105          void ADC_Init()
 106          {
 107   1      }
 108          
 109          void Voltage_Reference_Init()
 110          {
 111   1      }
 112          
 113          void Port_IO_Init()
 114          {
 115   1          P0MDOUT   = 0x10;
 116   1          XBR0      = 0x01;
 117   1          XBR1      = 0x40;
C51 COMPILER V7.20   MAIN                                                                  06/23/2008 19:39:42 PAGE 3   

 118   1              P4MDOUT   = 0x00;
 119   1              P3MDOUT   = 0xDF;
 120   1              P3=0xff;
 121   1              P4=0xff;
 122   1              VDM0CN    = 0x80;       // Enabal VDD monitor
 123   1              FLSCL     = 0x88;       // 一次读两个字节
 124   1              PFE0CN    = 0x20;       // 指令预取使能
 125   1      }
 126          
 127          //系统使用内部时钟,频率为48MHz,USB工作在全速,时钟为48MHz
 128          void Oscillator_Init()
 129          {
 130   1          int i = 0;
 131   1          OSCICN    = 0x83;
 132   1          CLKMUL    = 0x80;
 133   1          for (i = 0; i < 20; i++);    // Wait 5us for initialization
 134   1          CLKMUL    |= 0xC0;
 135   1          while ((CLKMUL & 0x20) == 0);
 136   1          CLKSEL    = 0x03;
 137   1      }
 138          
 139          void Interrupts_Init()
 140          {
 141   1              EIE1 |= 0x02;                   // 允许USB中断
 142   1      }
 143          //////////////////////////////////////////////////////////////////////////////////////////////////
 144          void Time_Delay(unsigned int time)      
 145          {
 146   1              unsigned int i=0,j=0;
 147   1              for(i=0;i<time;i++)
 148   1              {
 149   2                      for(j=0;j<1200;j++)
 150   2                      {_nop_();}      
 151   2              }
 152   1      }
 153          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    175    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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