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

📄 main.lst

📁 TS12864液晶驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MAIN                                                                  07/26/2008 19:16:14 PAGE 1   


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

line level    source

   1          #include"main.h"
   2          
   3          
   4          
   5          #define DEPTH 80                                  //存储深度设置
   6          
   7          
   8          /********************************************
   9          函数声明
  10          *********************************************/
  11          void Ext0_Interrupt_Init(void);
  12          void GetChannel(void);
  13          void PlaceWindow(void);
  14          
  15          
  16          
  17          /*********************************************
  18          全局变量定义
  19          *********************************************/
  20          //unsigned char xdata trig_word[8];                       //触发字
  21          //unsigned char trig_ch;                            //3级触发时的触发通道
  22          //unsigned char thresholdW;                          //门限电压
  23          unsigned char xdata buf[8];                             //用作临时存储
  24          unsigned char xdata ch[2];                              //存储触发通道号
  25          unsigned char xdata ADC_data[8];                             
  26          
  27          
  28          
  29          
  30          void main(void)
  31          {
  32   1              unsigned char i;
  33   1      
  34   1              Init_Device();
  35   1              Init_Max7219();
  36   1      
  37   1              Show_Max7219(0000,0000);
  38   1      
  39   1              showScreen();                     //用户接口,读取控制字
  40   1      
  41   1      
  42   1              SFRPAGE   = TIMER01_PAGE;
  43   1          TR0 = 0;                          //关Timer0
  44   1      
  45   1              GetChannel();
  46   1              Set_Threshold(thresholdW);              //设置门限电压
  47   1              FIFO_Init();                      //FIFO初始化
  48   1              Ext0_Interrupt_Init();            //外部中断初始化
  49   1          
  50   1       
  51   1      
  52   1          while(FIFO_length()!=40) {}
  53   1      
  54   1          if(FIFO_length()==40)
  55   1              {
C51 COMPILER V8.02   MAIN                                                                  07/26/2008 19:16:14 PAGE 2   

  56   2                      SFRPAGE = TIMER01_PAGE;
  57   2                      EA = 0;                       //关所有外部中断
  58   2              PlaceWindow();                //放置fifowindow
  59   2              
  60   2                      while((uart_keyboard())==0x0000){}    //等待按键
  61   2              keyW = uart_keyboard();
  62   2                      if(keyW==0x4000)
  63   2                      {
  64   3                              for(i=0;i<8;i++)
  65   3                                      Write_Max7219(8-i,fifowindow[i][time_flag]);
  66   3                              DisplayLogicWave(1);
  67   3                              PlaceWindow();
  68   3                              for(i=0;i<8;i++)
  69   3                                      Write_Max7219(8-i,fifowindow[i][time_flag]);
  70   3                              DisplayLogicWave(65535);
  71   3                      }
  72   2      
  73   2                      else if((keyW==0x2000)||(keyW==0x1000))
  74   2                      {
  75   3                              while(1)
  76   3                              {
  77   4                                      for(i=0;i<8;i++)
  78   4                                              Write_Max7219(8-i,fifowindow[i][time_flag]);
  79   4                                      DisplayLogicWave(1);
  80   4                                      while((uart_keyboard())==0x0000){}    //等待按键
  81   4                                      keyW = uart_keyboard();
  82   4                                      if(keyW==0x1000)
  83   4                                      {
  84   5                                              time_flag++;
  85   5                                              for(i=0;i<8;i++)
  86   5                                                      Write_Max7219(8-i,fifowindow[i][time_flag]);
  87   5                                              DisplayLogicWave(1);
  88   5                                      }
  89   4                                      if(keyW==0x2000)
  90   4                                      {
  91   5                                              time_flag--;
  92   5                                              for(i=0;i<8;i++)
  93   5                                                      Write_Max7219(8-i,fifowindow[i][time_flag]);
  94   5                                              DisplayLogicWave(1);
  95   5                                      }                                       
  96   4                              }
  97   3                      }
  98   2                      else 
  99   2                      {
 100   3                              while(1)
 101   3                              {
 102   4                                      for(i=0;i<8;i++)
 103   4                                              Write_Max7219(8-i,fifowindow[i][time_flag]);                //在数码管上显示
 104   4                                      DisplayLogicWave(65535); 
 105   4                              }          //在示波器上显示
 106   3                      }
 107   2      
 108   2              }
 109   1              
 110   1      
 111   1                                          
 112   1      }
 113          
 114          /******************************************
 115          外部中断初始化
 116          ******************************************/
 117          void Ext0_Interrupt_Init(void)
C51 COMPILER V8.02   MAIN                                                                  07/26/2008 19:16:14 PAGE 3   

 118          {
 119   1         char SFRPAGE_SAVE = SFRPAGE;
 120   1      
 121   1         SFRPAGE = TIMER01_PAGE;
 122   1      
 123   1         TCON = 0x01;                        // /INT 0  are falling edge triggered
 124   1      
 125   1         EX0 = 1;                            // Enable /INT0 interrupts
 126   1      
 127   1         EA  = 1;                            // Enable all interrupts 
 128   1      
 129   1         SFRPAGE = SFRPAGE_SAVE;
 130   1      }
 131          
 132          /*******************************************
 133          将trig_ch转换为ch[2]
 134          *******************************************/
 135          void GetChannel(void)
 136          {
 137   1              unsigned char i,j;
 138   1      
 139   1              j = 0;
 140   1      
 141   1              for(i=0;i<8;i++)
 142   1              {
 143   2                      if((trig_ch>>i)&0x01)
 144   2              {
 145   3                              ch[j] = i;
 146   3                              j++;
 147   3              }
 148   2              }
 149   1      }
 150          
 151          /*******************************************
 152          INT0服务函数,将数据按控制字要求采集到fifo中
 153          ********************************************/
 154          void GetLogic(void) interrupt 0 
 155          {
 156   1          static unsigned char wflag,a;         //写FIFO标志,置1时写FIFO
 157   1      //      static unsigned char jflag = 1;     //判断标志,置1时判断采到的数据是否与触发字相同
 158   1      //  static unsigned char len;           //写入FIFO的数据量 
 159   1              unsigned char i,k = 0,m = 0,h;              //k:始端触发 识别单级触发字时计数
 160   1                                                       //a:识别三级触发字时计数
 161   1                                                           //m:非始端触发 识别单级触发字时计数
 162   1      
 163   1      
 164   1      
 165   1      
 166   1      //采8个通道的逻辑值
 167   1      //////////////////////////////////////////
 168   1      
 169   1              SFRPAGE  = ADC2_PAGE;
 170   1      
 171   1              EIP2|=0x10;
 172   1      
 173   1              AMX2SL = 0;     
 174   1              AD2INT = 0;//清转换中断标志
 175   1              AD2BUSY = 1;//置1启动ADC2
 176   1      
 177   1              for(i=0;i<7;i++)
 178   1      
 179   1      
C51 COMPILER V8.02   MAIN                                                                  07/26/2008 19:16:14 PAGE 4   

 180   1      
 181   1              ADC_data[AMX2SL] = AD2WINT;          //AD2WINT;
 182   1              AD2WINT = 0;
 183   1      
 184   1              do
 185   1              {
 186   2                      AMX2SL++;
 187   2                      AD2INT = 0;//清转换中断标志
 188   2                      AD2BUSY = 1;//置1启动ADC2
 189   2                      for(i=0;i<7;i++)

⌨️ 快捷键说明

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