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

📄 main.lst

📁 《增强型8051单片机实用开发技术》例程代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.18   MAIN                                                                  11/30/2009 13:35:23 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\OutPut\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\main.c LARGE OPTIMIZE(SIZE) DEBUG OBJECTEXTEND PRINT(.\OutPut\main.l
                    -st) OBJECT(.\OutPut\main.obj)

line level    source

   1          /* 本例程uCOS-II 版本为2.51*/  
   2          #include "includes.h"
   3          
   4          sbit POSITIVE=P2^5;
   5          sbit NEGATIVE=P2^4;
   6          sbit RUN=P2^0;
   7          sbit ALARM=P2^3;
   8          sbit BITR=P2^7;
   9          sbit SEGR=P2^6;
  10          sbit BITG=P2^1;
  11          sbit SEGG=P2^2;
  12          sbit KEY1=P0^0;
  13          sbit KEY2=P0^1;
  14          sbit KEY3=P0^2;
  15          sbit KEY4=P0^3;
  16          
  17          OS_STK Task1Stk[MaxStkSize+1];  //任务堆栈
  18          OS_STK Task2Stk[MaxStkSize+1];
  19          OS_STK Task3Stk[MaxStkSize+1];
  20          OS_STK Task4Stk[MaxStkSize+1];
  21          OS_STK Task5Stk[MaxStkSize+1];
  22          
  23          INT8U code LED[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//LED编码表
  24          INT8U code g[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                         //位码控制表
  25          INT8U xdata flashbit=0;
  26          INT8U xdata flash=0;
  27          INT8U xdata adcr;
  28          INT16U xdata sec=0;
  29          INT8U xdata key_last0=1,key_last1=1,key_last2=1,key_last3=1,key_num=0xff;
  30          INT8U xdata sec0,sec1,minute0,minute1;
  31          INT8U xdata dispressure=0;
  32          INT8U xdata HIlimit=80,LOWlimit=20;
  33          INT8U err;
  34          
  35          //----------------------- AD转换值的刷新 -----------------//
  36          unsigned char Get_data(void) reentrant            
  37          {
  38   1              unsigned int xdata adc_res0,adc_res1;              
  39   1          
  40   1              ADC_CONTR|=0x08;                        //启动A/D转换
  41   1              while((ADC_CONTR&0x10)==0);             //等待A/D转换结束        
  42   1              ADC_CONTR&=0xE7;
  43   1              adc_res0=ADC_RES;
  44   1              adc_res1=adc_res0*39/100;                       //进行相应的工程变换
  45   1              return((unsigned char)(adc_res1));      //BCD编码
  46   1      }
  47          //--------------------- 显示数据发送 ---------------------//
  48          void sendspi(unsigned char spidata,unsigned char isBit) reentrant
  49          {   
  50   1              unsigned char xdata t,spi1_status=0;
  51   1              //EA=0;                                 //关中断, 为了避免传输数据过程中被中断而显示乱码
  52   1              SPDAT=spidata;
  53   1              while(spi1_status==0)           //等传输完毕
  54   1              {
C51 COMPILER V8.18   MAIN                                                                  11/30/2009 13:35:23 PAGE 2   

  55   2                      spi1_status=SPSTAT;
  56   2                      spi1_status=spi1_status&0x80;
  57   2              }
  58   1              if (isBit==1)
  59   1              {
  60   2                      BITR=1;
  61   2                      for(t=0;t<15;t++);
  62   2                      BITR=0;                         //位锁存信号输出
  63   2              }
  64   1              else
  65   1              {
  66   2                      SEGR=1;
  67   2                      for(t=0;t<15;t++);
  68   2                      SEGR=0;                 //段锁存信号输出
  69   2              }
  70   1              SPSTAT=0xC0;                    //写1清SPIF标志位
  71   1              //EA=1;                         //开中断
  72   1      }
  73          //--------------------- 显示数据子程序--------------------//
  74          void displayLED(unsigned char* disbuf,unsigned char flashbit) reentrant
  75          {
  76   1              unsigned char xdata i;
  77   1              
  78   1              for(i=0;i<8;i++) 
  79   1              {
  80   2                      SEGG=1;
  81   2                      sendspi(g[i],1);
  82   2                      sendspi(disbuf[i],0);
  83   2                      if(i+1==flashbit) SEGG=flash; 
  84   2                      else SEGG=0;
  85   2                      OSTimeDlyHMSM(0,0,0,2);
  86   2              }
  87   1      }
  88          //----------------------- 获取按键 -----------------------//
  89          void getkey(void) reentrant
  90          {
  91   1              if(KEY1==0&&key_last0==1)
  92   1              {
  93   2                      OSTimeDlyHMSM(0,0,0,20);
  94   2                      if(KEY1==0&&key_last0==1)       
  95   2                      {
  96   3                               key_num=0;
  97   3                               key_last0=0;
  98   3                      }
  99   2                  else if(KEY1==1) key_last0=1;
 100   2          }
 101   1              else if(KEY1==1) key_last0=1;
 102   1              
 103   1              if(KEY2==0&&key_last1==1)
 104   1              {
 105   2                      OSTimeDlyHMSM(0,0,0,20);
 106   2                      if(KEY2==0&&key_last1==1)       
 107   2                      {
 108   3                               key_num=1;
 109   3                               key_last1=0;
 110   3                      }
 111   2                  else if(KEY2==1) key_last1=1;
 112   2          }
 113   1              else if(KEY2==1) key_last1=1;
 114   1          
 115   1              if(KEY3==0&&key_last2==1)
 116   1              {
C51 COMPILER V8.18   MAIN                                                                  11/30/2009 13:35:23 PAGE 3   

 117   2                      OSTimeDlyHMSM(0,0,0,20);
 118   2                      if(KEY3==0&&key_last2==1)       
 119   2                      {
 120   3                               key_num=2;
 121   3                               key_last2=0;
 122   3                      }
 123   2                  else if(KEY3==1) key_last2=1;
 124   2          }
 125   1              else if(KEY3==1) key_last2=1;
 126   1              
 127   1              if(KEY4==0&&key_last3==1)
 128   1              {
 129   2                      OSTimeDlyHMSM(0,0,0,20);
 130   2                      if(KEY4==0&&key_last3==1)       
 131   2                      {
 132   3                               key_num=3;
 133   3                               key_last3=0;
 134   3                      }
 135   2                  else if(KEY4==1) key_last3=1;
 136   2          }
 137   1              else if(KEY4==1) key_last3=1;   
 138   1      }
 139          //----------------------按键处理子程序 -------------------//
 140          void keyhandle(void) reentrant
 141          {  
 142   1              unsigned char xdata low0,low1,hi0,hi1;
 143   1              
 144   1              low0=LOWlimit%10;
 145   1              low1=LOWlimit/10;
 146   1              hi0=HIlimit%10;
 147   1              hi1=HIlimit/10;
 148   1              switch(key_num)
 149   1              {
 150   2                      case 0:
 151   2                              if(flashbit==8) flashbit=0;
 152   2                              flashbit++;
 153   2                              dispressure=1;
 154   2                              break;
 155   2                      case 1: 
 156   2                              if(flashbit==1)
 157   2                              {
 158   3                                      low0++;
 159   3                                      if(low0==10) low0=0;
 160   3                              }
 161   2                              if(flashbit==2)
 162   2                              {
 163   3                                      low1++;
 164   3                                      if(low1==10) low1=0;
 165   3                              }
 166   2                              if(flashbit==3)
 167   2                              {
 168   3                                      hi0++;
 169   3                                      if(hi0==10) hi0=0;
 170   3                              }
 171   2                              if(flashbit==4)
 172   2                              {
 173   3                                      hi1++;
 174   3                                      if(hi1==10) hi1=0;
 175   3                              }
 176   2                              if(flashbit==5)
 177   2                              {
 178   3                                      sec0++;
C51 COMPILER V8.18   MAIN                                                                  11/30/2009 13:35:23 PAGE 4   

 179   3                                      if(sec0==10) sec0=0;
 180   3                              }
 181   2                              if(flashbit==6)
 182   2                              {
 183   3                                      sec1++;
 184   3                                      if(sec1==6) sec1=0;
 185   3                              }
 186   2                              if(flashbit==7)
 187   2                              {
 188   3                                      minute0++;
 189   3                                      if(minute0==10) minute0=0;
 190   3                              }
 191   2                              if(flashbit==8)
 192   2                              {
 193   3                                      minute1++;
 194   3                                      if(minute1==6) minute1=0;
 195   3                              }
 196   2                              break;
 197   2                      case 2:
 198   2                              if(flashbit==1)
 199   2                              {
 200   3                                      if(low0==0) low0=10;
 201   3                                      low0--;
 202   3                              }

⌨️ 快捷键说明

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