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

📄 system.lst

📁 该程序是基于c8051f的红外线发射率的测量程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE SYSTEM
OBJECT MODULE PLACED IN system.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.exe system.c DB OE

stmt level    source

   1          //--------------------------------------------------------------------------------------------------------
             ---------------------------------------------
   2          //文件名:system.c
   3          //作用:用于硬件系统的初始化,以及对存储器,AD,485等的操作
   4          //
   5          //--------------------------------------------------------------------------------------------------------
             ----------------------------------------------
   6          
   7          #include<c8051F120.h>
   8          #include <GAL.h> 
   9          #define AIADDR           0x01  //AI表地址
  10          #define W_CONTROLBYTE    0xA0  //24c01的写地址 A0,A1,A2均为0
  11          #define R_CONTROLBYTE    0xA1  //24c01的读地址 A0,A1,A2均为0
  12          #define FS_SUM           0x00  //文件系统存储sum的地址
  13          #define FS_POINTER       0x01  //存储当前的项目号地址
  14          #define FS_START_ADDR    0x02  //数据起始地址    
  15          //液晶控制口
  16          sbit STB=P3^2;   
  17          sbit Busy=P3^1;
  18          
  19          sbit TR=P3^0;   //控制485总线的方向
  20          sbit SDA=P0^7;//                        *************   I2C             **************
  21          sbit SCL=P0^6;//                        *************   总线    **************
  22          
  23          bit nop=0;  //延时用
  24          unsigned char time=0;
  25          unsigned int emissivity_AD;
  26          unsigned int voltage_AD;
  27          unsigned int current_AD;
  28          
  29          unsigned char xdata AIBUF[10];//518P表的回送数据缓冲寄存器
  30          unsigned char xdata AIDATNUM;//518P表接收数据计数器
  31          bit AIOVERFLG;//518P转换完成标志
  32          bit TIMEFLG;//时间超过标志
  33          unsigned char xdata AITIME;//518P转换时间记录
  34          unsigned char xdata ERRORNUM;//518P错误次数
  35          extern Cstatusbar xdata statusbar;
  36           
  37          //********************************************************************************************************
             -****************************************
  38          //延时us
  39          //********************************************************************************************************
             -****************************************
  40          //delay function
  41          void delay1s(void)
  42          {
  43   1              unsigned char i,j,k;
  44   1              for(i=0;i<214;i++)
  45   1              for(j=0;j<255;j++)
  46   1              for(k=0;k<125;k++)
  47   1              {}
  48   1      }
  49          void delay100us(void)
  50          {
  51   1              unsigned char i,j,k;
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 2   

  52   1              for(i=0;i<200;i++)
  53   1              for(j=0;j<1;j++)
  54   1              for(k=0;k<1;k++)
  55   1              {}
  56   1      }
  57          void delay200ms(void)
  58          {
  59   1              unsigned char i,j,k;
  60   1              for(i=0;i<43;i++)
  61   1              for(j=0;j<255;j++)
  62   1              for(k=0;k<255;k++)
  63   1              {}
  64   1      }
  65          void delay5ms(void)
  66          {
  67   1              unsigned char i,j,k;
  68   1              for(i=0;i<1;i++)
  69   1              for(j=0;j<200;j++)
  70   1              for(k=0;k<100;k++)
  71   1              {}
  72   1      }
  73          void delay4us(void)
  74          {
  75   1              unsigned char i,j,k;
  76   1              for(i=0;i<2;i++)
  77   1              for(j=0;j<1;j++)
  78   1              for(k=0;k<1;k++)
  79   1              {}
  80   1      }
  81          void delay8us(void)
  82          {
  83   1              unsigned char i;
  84   1          for(i=0;i<20;i++)
  85   1               delay4us();
  86   1      }
  87          //********************************************************************************************************
             -******************************************
  88          //初始化系统硬件,并显示系统logo,系统
  89          //********************************************************************************************************
             -*******************************************
  90          void sys_init(void)
  91          {
  92   1          WDTCN=0xDE;//先关看门狗,初始化完成之后再开
  93   1          WDTCN=0xAD;//
  94   1              //*****************************************************************     
  95   1              SFRPAGE=CONFIG_PAGE;  //选择sfr页
  96   1              //OSC Select*******************************************************     
  97   1              OSCICN=0xC3;//使用内部频率24.5MHz,不分频
  98   1              //*****************************************************************
  99   1          //io 定义
 100   1          XBR0=0X04; //select UART0
 101   1              XBR2=0x44; //select UART1 and enable cross switch
 102   1          P0MDOUT=0x45;  //Tx0,Tx1,SCL推挽
 103   1              P2MDOUT=0xff;  //与 lcd通信数据端口,全部推挽
 104   1          P3MDOUT=0x35;  //T/R,STB,CLK,LD 推挽
 105   1          SFRPAGE=LEGACY_PAGE;
 106   1              //*****************************************************************
 107   1              //RSTSRC init******************************************************     
 108   1              RSTSRC=0x06;//选择时钟丢失监测器和VDD监视器为复位源。
 109   1              //*****************************************************************     
 110   1              //电压基准**********************************************************
 111   1              REF0CN=0x03;//内部基准,2.4V,且采用偏置电压
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 3   

 112   1          //配置时钟和UART
 113   1          CKCON=0x00;//define T0 clock is sysclk/12, T1 clock is sysclk/12
 114   1              TMR2CF=0x08;//T2 clock is SYSCLK
 115   1              TMR2H=0xFF;//UART0 BR is 9600
 116   1              TMR2L=0x61;
 117   1              RCAP2H=0xFF;
 118   1              RCAP2L=0x61;
 119   1       
 120   1              SFRPAGE=LEGACY_PAGE;
 121   1              //TMR4CF=0x00;//T4 clock is SYSCLK/12   
 122   1              TMOD=0x21;//Timer0 is in mode 1; Timer1 is in mode 2
 123   1              SCON0=0x40;//UART0 is in the mode 1 and REN0 is close, then UART0 can send but receive data
 124   1              SSTA0=0x05;//UART0 use T2 to be the TX and RX BR generator
 125   1              SFRPAGE=UART1_PAGE;
 126   1              SCON1=0x50;//UART1 is in the 8 bit mode and can receive data
 127   1              SFRPAGE=LEGACY_PAGE;
 128   1              TL0=0x40;
 129   1              TH0=0xB0;//这样T0就在10ms内中断一次
 130   1              TH1=0x96;//UART1 BR is 9600
 131   1              TL1=0x96;
 132   1              TR1=1;//open the UART1 BR
 133   1              TR2=1;//open the UART0 BR       
 134   1      
 135   1              //设置AD的转换
 136   1              ADC0CF=0x58;//加大SAR时钟,1MHz
 137   1          ADC0CN=0x80;  //使能adc0,选择查询模式
 138   1              REF0CN&=0x0f;//AD0VRS=0,ADC0参考电压为VREFA
 139   1              REF0CN|=0x07;//TEMPE=1,内部温度传感器工作
 140   1              //
 141   1              //interrupt define*************************************************
 142   1              IP=0x10;//UART0 is the highest level int
 143   1              //IE=0x07;//INT0 and T0 and INT1 are active
 144   1              IE=0x12;//uart0 and T0 are active
 145   1              //EIE1=0x04;//允许ADC0窗口比较中断
 146   1              EIE1=0x00;
 147   1              EIE2=0x40; //允许UART1中断
 148   1              EIP2=0x40; //UART1中断优先级置高,注意此位一定要置高,否则不能进中断
 149   1              TR0=1;//开始清狗
 150   1              EA=1;//open the interrupt
 151   1              //*****************************************************************
 152   1      }
 153          
 154          void SYSINIT(void)
 155          {
 156   1              //*****************************************************************     
 157   1              SFRPAGE=CONFIG_PAGE;
 158   1              //OSC Select*******************************************************     
 159   1              OSCICN=0xC3;//使用内部频率24.5MHz,不分频
 160   1              //*****************************************************************
 161   1              //I/O define*******************************************************
 162   1              XBR0 = 0x04;//select UART0
 163   1              XBR1 = 0x14;//select INT0 and INT1
 164   1              XBR2 = 0x04;//选择弱上拉,并且选择UART1
 165   1              XBR2 = 0x44;//使能交叉开关
 166   1              //*****************************************************************     
 167   1              P0MDOUT = 0x45; // Output configuration for P0 
 168   1          P1MDOUT = 0x80; // Output configuration for P1 
 169   1          P2MDOUT = 0xFF; // Output configuration for P2 
 170   1          P3MDOUT = 0x61; // Output configuration for P3      
 171   1              SFRPAGE=LEGACY_PAGE;
 172   1              //*****************************************************************
 173   1              //RSTSRC init******************************************************     
C51 COMPILER V7.07   SYSTEM                                                                05/17/2003 11:52:25 PAGE 4   

 174   1              RSTSRC=0x06;//选择时钟丢失监测器和VDD监视器为复位源。
 175   1              //*****************************************************************     
 176   1              //电压基准**********************************************************
 177   1              REF0CN=0x03;//内部基准,2.4V,且采用偏置电压
 178   1              //*****************************************************************     
 179   1              //TCON*************************************************************
 180   1              TCON=0x05;//INT0 and INT1 are active in edge mode
 181   1              //*****************************************************************
 182   1              //UART and Timer n config******************************************
 183   1              CKCON=0x00;//define T0 clock is sysclk/12, T1 clock is sysclk/12
 184   1              TMR2CF=0x08;//T2 clock is SYSCLK
 185   1              TMR2H=0xFF;//UART0 BR is 9600
 186   1              TMR2L=0x61;
 187   1              RCAP2H=0xFF;
 188   1              RCAP2L=0x61;
 189   1              SFRPAGE=TMR3_PAGE;
 190   1              TMR3CF=0x00;//T3 clock is SYSCLK/12
 191   1              TMR3H=0x00;
 192   1              TMR3L=0x00;
 193   1              RCAP3H=0x00;
 194   1              RCAP3L=0x00;
 195   1              SFRPAGE=LEGACY_PAGE;
 196   1              //TMR4CF=0x00;//T4 clock is SYSCLK/12   
 197   1              TMOD=0x21;//Timer0 is in mode 1; Timer1 is in mode 2
 198   1              SCON0=0x40;//UART0 is in the mode 1 and REN0 is close, then UART0 can send but receive data
 199   1              SSTA0=0x05;//UART0 use T2 to be the TX and RX BR generator
 200   1              SFRPAGE=UART1_PAGE;
 201   1              SCON1=0x40;//UART1 is in the 8 bit mode and can't receive data
 202   1              SFRPAGE=LEGACY_PAGE;
 203   1              TL0=0x7F;
 204   1              TH0=0x60;//这样T0就在12ms内中断一次
 205   1              TH1=0x96;//UART1 BR is 9600
 206   1              TL1=0x96;
 207   1              TR1=1;//open the UART1 BR
 208   1              TR2=1;//open the UART0 BR       
 209   1              //*****************************************************************
 210   1              ADC0LTL=0xA0;
 211   1              ADC0LTH=0x02;//上限为4mA报警
 212   1              ADC0CF=0x58;//加大SAR时钟,1MHz
 213   1              ADC0CN=0xC0;//开ADC0并且设置为转换才跟踪方式,设置为向AD0BUSY写1判断AD0INT为1方式启动ADC0
 214   1              //*********************************************************************
 215   1              //interrupt define*************************************************
 216   1              IP=0x10;//UART0 is the highest level int
 217   1              //IE=0x07;//INT0 and T0 and INT1 are active
 218   1              IE=0x03;//INT0 and T0 are active
 219   1              //EIE1=0x04;//允许ADC0窗口比较中断
 220   1              EIE1=0x00;
 221   1              EIE2=0x03;//允许ADC0中断和T3中断
 222   1              TR0=1;//开始清狗
 223   1              EA=1;//open the interrupt
 224   1              //*****************************************************************
 225   1      //      BEEP=0;//close the beep
 226   1      //      MOTORSTOP;//关电机
 227   1              //TPFCOFF;//关二位四通阀        
 228   1              //*****************************************************************
 229   1      }
 230          
 231          
 232          ///////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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