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

📄 020main.lst

📁 cf8020+cp2200(网络)的驱动实现
💻 LST
字号:
C51 COMPILER V7.09   020MAIN                                                               07/04/2007 09:31:20 PAGE 1   


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

line level    source

   1          #include "global.h"
   2          sfr16 DP = 0x82; // 数据指针
   3          sfr16 TMR3RL = 0x92; // 定时器3重装值
   4          sfr16 TMR3 = 0x94; // 定时器3计数器
   5          sfr16 ADC0 = 0xbe; // ADC0数据
   6          sfr16 ADC0GT = 0xc4; // ADC0大于窗口
   7          sfr16 ADC0LT = 0xc6; // ADC0小于窗口
   8          sfr16 RCAP2 = 0xca; // 定时器2捕捉/重装
   9          sfr16 T2 = 0xcc; // 定时器2
  10          sfr16 RCAP4 = 0xe4; // 定时器4捕捉/重装
  11          sfr16 T4 = 0xf4; // 定时器4
  12          sfr16 DAC0 = 0xd2; // DAC0数据
  13          sfr16 DAC1 = 0xd5; // DAC1数据
  14          //-----------------------------------------------------------------------------
  15          // 全局常量
  16          //-----------------------------------------------------------------------------
  17          #define SYSCLK 22118400 // 系统时钟频率Hz
  18          #define BAUDRATE 115200 // UART波特率bps
  19          #define SAMPLERATE0 50000 // ADC0采样频率Hz
  20          #define NUM_SAMPLES 2048 // ADC0采样次数
  21          #define TRUE 1
  22          #define FALSE 0
  23          sbit LED = P1^6; // LED=’1’ 意为开
  24          sbit SW1 = P3^7; // SW1=’0’ 意为按压开关
  25          //-----------------------------------------------------------------------------
  26          // 函数原型
  27          //-----------------------------------------------------------------------------
  28          void SYSCLK_Init (void);
  29          void PORT_Init (void);
  30          void UART0_Init (void);
  31          void ADC0_Init (void);
  32          void Timer3_Init (int counts);
  33          xdata unsigned samples[100]; // 存储ADC0结果数组
  34          char flag = 0;
  35          
  36          sfr16 TMR2RL   = 0xca;                    // Timer2 reload value
  37          sfr16 TMR2     = 0xcc;                    // Timer2 counter
  38          
  39          void main(void)
  40          {
  41   1              long i; // 循环计数器
  42   1              WDTCN = 0xde; // 禁止看门狗定时器
  43   1              WDTCN = 0xad;
  44   1              SYSCLK_Init (); // 初始化振荡器
  45   1              PORT_Init (); // 初始化数据交叉开关和通用IO口
  46   1              UART0_Init (); // 初始化UART0
  47   1              Timer3_Init (SYSCLK/SAMPLERATE0); // 初始化定时器3溢出作为ADC0采样率
  48   1              EA = 1; // 允许全部中断
  49   1              while (1) {
  50   2      //      P0 = P1 = P2 = P3 = P4 = P5  = P6 = P7 = 0XFF;
  51   2                      flag = !flag;
  52   2                      LED = flag; // 在采样过程中点亮LED
  53   2                       wait_ms(100);
  54   2              //      EIE2 |= 0x02; // 允许ADC0中断
  55   2                      //while (ADC0_DONE == FALSE); // 等待采样结果
C51 COMPILER V7.09   020MAIN                                                               07/04/2007 09:31:20 PAGE 2   

  56   2                      // 上传采样值到UART0
  57   2              //      LED = 0; // 上传其间关LED 灭
  58   2              //      for (i = 0; i < NUM_SAMPLES; i++) 
  59   2              //      {
  60   2                      //      printf("%u", samples[i]);
  61   2                              //printf("%u",samples[i]);
  62   2              //      }
  63   2      //              printf ("\n");
  64   2              }
  65   1      
  66   1      }
*** WARNING C280 IN LINE 41 OF 020MAIN.C: 'i': unreferenced local variable
  67          
  68          
  69          void SYSCLK_Init (void)
  70          {
  71   1              int i; // 延时计数器
  72   1              OSCXCN = 0x67; // 开启外部振荡器22.1184MHz晶体
  73   1              for (i=0; i < 256; i++) ; // 等待振荡器启振
  74   1              while (!(OSCXCN & 0x80)) ; // 等待晶体振荡器稳定
  75   1              OSCICN = 0x88; // 选择外部振荡器为系统时钟源并允许丢失时钟检测器
  76   1      }
  77          
  78          void PORT_Init (void)
  79          {
  80   1              XBR0 = 0x04; // 使能UART0
  81   1              XBR1 = 0x00;
  82   1              XBR2 = 0x40; // 使能数据交叉开关和弱上拉
  83   1              P0MDOUT |= 0x01; // 允许TX0为推挽输出
  84   1              P1MDOUT |= 0x40; // 允许P1.6(LED)为推挽输出
  85   1      }
  86          //-----------------------------------------------------------------------------
  87          void UART0_Init (void)
  88          {
  89   1              SCON0 = 0x50; // SCON0: 模式1, 8位UART, 使能RX
  90   1              TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位重装
  91   1              TH1 = -(SYSCLK/BAUDRATE/16); // 根据波特率的值设定定时器1重装值
  92   1              TR1 = 1; // 启动定时器1
  93   1              CKCON |= 0x10; // 定时器1使用系统时钟作为时基
  94   1              PCON |= 0x80; // SMOD00 = 1
  95   1              TI0 = 1; // 表示TX0就绪
  96   1      }
  97          
  98          void Timer3_Init (int counts)
  99          {
 100   1              TMR3CN = 0x02; // 停止定时器3; 清除TF3;
 101   1      // 使用系统时钟作为时基
 102   1              TMR3RL = -counts; // 初始化重装值
 103   1              TMR3 = 0xffff; // 立即开始重装
 104   1              EIE2 &= ~0x01; // 禁止定时器3中断
 105   1              TMR3CN |= 0x04; // 启动定时器3
 106   1      }
 107          
 108          void wait_ms(int ms)
 109          {
 110   1      
 111   1      
 112   1         T2CON = 0x00;                      // Stop Timer2; Clear TF2;
 113   1      
 114   1         RCAP2 = -(SYSCLK/1000/12);         // Timer 2 overflows at 1 kHz
 115   1         TMR2 = RCAP2;
 116   1      
C51 COMPILER V7.09   020MAIN                                                               07/04/2007 09:31:20 PAGE 3   

 117   1         ET2 = 0;                            // Disable Timer 2 interrupts
 118   1      
 119   1         TR2 = 1;                            // Start Timer 2  
 120   1      
 121   1         ms = ms;
 122   1         while(ms){
 123   2         TF2 = 0;
 124   2            while(!TF2);                     // wait until timer overflows
 125   2            ms--;                            // decrement ms
 126   2         }
 127   1      
 128   1         TR2 = 0;                            // Stop Timer 2
 129   1      
 130   1      }


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


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

⌨️ 快捷键说明

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