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

📄 embed.lst

📁 单片机的一个小系统演示
💻 LST
字号:
C51 COMPILER V8.08   EMBED                                                                 03/03/2008 09:15:00 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE EMBED
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: D:\hardWare\Keil\C51\BIN\C51.EXE embed.c BROWSE DEBUG OBJECTEXTEND SRC(.\embed.SRC)

line level    source

   1          #include <AT89X52.H>
   2          #include "intrins.h"
   3          #include "absacc.h"
   4          
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          
   9          uchar cur_state;
  10          uchar next_state;
  11          
  12          uint Num_Of_Circle;
  13          uint array[6]={1,2,3,4,5,6};   //显示数据存储区
  14          
  15          //阳极段码
  16          uchar code      SEGPOS[34]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xB
             -F,0xFF,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0E};
  17                                                                                                  //"0"           "1"     "2"             "3"     "4"             "5"     "6"             "7"     "8"             "9"     "A"             "B"     "C"             "D"     "E"             "F"     "-"      "空" "0." "1." "
             -2."        "3.""4."   "5.""6."        "7.""8."        "9.""A."        "B.""C."        "D.""E."        "F."    
  18                                                                                                  //带点的比不带点的大18个位置      
  19          //阴极段码                                                                                      
  20          uchar code      SEGNEG[34]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x4
             -0,0x00,0xBF,0x86,0xD4,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0xDE,0xF9,0xF1};
  21          uchar code  CON[6]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};//数据显示的位选信号11111110 到11011111
  22                                                                                                  
  23          
  24          uchar data inkey _at_ 0x30;//按键值
  25          uchar data  key_down _at_ 0x7E;//按键次数
  26          uchar key;
  27          void initial(void)
  28          {
  29   1      /*
  30   1              T2CON=0x34;
  31   1              SCON=0xD0;
  32   1              
  33   1              PCON=0x00;//波特率不加倍
  34   1              RCAP2L=0xC7;
  35   1              RCAP2H=0xFE;//定时器2波特率1200
  36   1              TR2 = 1;
  37   1      //*/    
  38   1      
  39   1              inkey=0;key_down=0;
  40   1              cur_state = 0;
  41   1              next_state =0;
  42   1              Num_Of_Circle=0;
  43   1        
  44   1              TMOD=0x16;//T0 计数(方式2),T1 计时(方式1),T2 波特率             GATE C/~T M1 M0 
  45   1              TH0=0xFF;       TL0=0xFF;
  46   1              TH1=0x3C;       TL1=0xB0;//50ms
  47   1              
  48   1              TR0=1;  TR1=0;
  49   1      
  50   1              ET0=0;  ET1=1;
  51   1              EX0=0;  EX1=0;
  52   1        ES=0;
C51 COMPILER V8.08   EMBED                                                                 03/03/2008 09:15:00 PAGE 2   

  53   1              EA=0;
  54   1      }
  55          
  56          void delay10ms(uint s)//100 == 1second
  57          {
  58   1              uint i;
  59   1              while(s--)
  60   1              {
  61   2                      for(i=0;i<255;i++)
  62   2                      {
  63   3                              _nop_();
  64   3                              _nop_();        
  65   3                              _nop_();
  66   3                              _nop_();
  67   3                              _nop_();
  68   3                              _nop_();
  69   3                              _nop_();
  70   3                              _nop_();
  71   3                              _nop_();
  72   3                              _nop_();
  73   3                              _nop_();
  74   3                              _nop_();
  75   3                              _nop_();
  76   3                              _nop_();
  77   3                              _nop_();
  78   3                              _nop_();
  79   3                              _nop_();
  80   3                              _nop_();
  81   3                              _nop_();
  82   3                              _nop_();
  83   3                              _nop_();
  84   3                              _nop_();
  85   3                              _nop_();
  86   3                              _nop_();
  87   3                              _nop_();
  88   3                              _nop_();
  89   3                              _nop_();
  90   3                      }
  91   2              }
  92   1      }
  93          void getKey()
  94          {
  95   1              P3=P3|0xF0;
  96   1              delay10ms(1);
  97   1              key=P3&0xF0;
  98   1              if(key!=0xF0  && key_down==0)
  99   1                      {
 100   2                              key_down+=1;
 101   2                              switch(key)
 102   2                              {
 103   3                                      case 0x70:
 104   3                                              inkey=1;
 105   3                                              break;
 106   3                                      case 0xB0:
 107   3                                              inkey=2;
 108   3                                              break;
 109   3                                      case 0xD0:
 110   3                                              inkey=3;
 111   3                                              break;
 112   3                                      case 0xE0:
 113   3                                              inkey=4;
 114   3                                              break;
C51 COMPILER V8.08   EMBED                                                                 03/03/2008 09:15:00 PAGE 3   

 115   3                                      default:
 116   3                                              key_down=0;
 117   3                                              break;
 118   3                                      }
 119   2                              }
 120   1              # pragma asm
 121   1              #pragma endasm
 122   1      }
 123          
 124          void show( uint bitCon,uint num)
 125          {
 126   1        uchar seg =SEGPOS[num];
 127   1              P0=seg; 
 128   1              switch(bitCon)
 129   1              {
 130   2              case 0:
 131   2                              P2=CON[0];
 132   2                              break;
 133   2                      case 1:
 134   2                              P2=CON[1];
 135   2                              break;
 136   2                      case 2:
 137   2                              P2=CON[2];
 138   2                              break;
 139   2                      case 3:
 140   2                              P2=CON[3];
 141   2                              break;
 142   2                      case 4:
 143   2                              P2=CON[4];
 144   2                              break;
 145   2                      case 5:
 146   2                              P2=CON[5];
 147   2                              break;
 148   2      
 149   2              }
 150   1      }
 151          
 152          //*驱动蜂鸣器
 153          void Buzzer()
 154          {
 155   1              P2_6 = 1;//buzzer
 156   1              P2_7 = 1;//led
 157   1              delay10ms(100);
 158   1      }
 159          
 160          void clearAlarm()
 161          {
 162   1              P2_6 = 0;//buzzer
 163   1              P2_7 = 0;//led
 164   1      }
 165          
 166          void stateMachine(uchar inkey)
 167          {
 168   1                      switch(inkey )
 169   1                      {
 170   2                              case 1:
 171   2                                      next_state = 0;
 172   2                                      break;
 173   2                              case 2:
 174   2                                      next_state = 1;
 175   2                                      break;
 176   2                              case 3:
C51 COMPILER V8.08   EMBED                                                                 03/03/2008 09:15:00 PAGE 4   

 177   2                                      next_state = 2;
 178   2                                      break;                  
 179   2                      }
 180   1                      cur_state = next_state;
 181   1      }       
 182          
 183          void setplay(uint h2bit ,uint m2bit,uint l2bit)
 184          {
 185   1                      array[5]=h2bit/10%10;
 186   1                      array[4]=h2bit%10+18;
 187   1                      array[3]=m2bit/10;
 188   1                      array[2]=m2bit%10+18;
 189   1                      array[1]=l2bit/10;
 190   1                      array[0]=l2bit%10+18;
 191   1      }
 192          void main()
 193          {
 194   1          uint display=0;
 195   1          uint LED=0xFF7F;
 196   1          initial();
 197   1      
 198   1          while(1)
 199   1          {
 200   2                   getKey();//获得按键输入
 201   2                   if(key_down)
 202   2                   {
 203   3                              key_down=0;
 204   3                              P3_0=!P3_0;
 205   3                   }
 206   2      /*
 207   2      //*/
 208   2      /**设置**
 209   2      //*/            
 210   2      /*            
 211   2                   switch(cur_state)
 212   2                   {
 213   2                      case time_show:
 214   2                                                      setplay(hour,minute,second);
 215   2                                                      break;
 216   2                                      case date_show:
 217   2                                                      setplay(year,month,day);
 218   2                                                      break;
 219   2                                      case second_show:
 220   2                                                      setplay(Cminute,Csecond,Csecond10);
 221   2                                                      break;
 222   2                        }
 223   2      //*/              
 224   2      //动态显示四位数据
 225   2            show(display,array[display]);
 226   2            if(display==5)
 227   2              {
 228   3                      display=0;
 229   3                      
 230   3              }
 231   2                              else
 232   2                                      display +=1;
 233   2                              P1=LED;
 234   2                              LED=LED>>1;
 235   2                delay10ms(100);        //**************
 236   2                              if(LED==0x01FE)
 237   2                              {
 238   3                                      LED=0xFF7F;
C51 COMPILER V8.08   EMBED                                                                 03/03/2008 09:15:00 PAGE 5   

 239   3                              }
 240   2      /*      
 241   2            if(key_down == 1)  //运行状态机   
 242   2              stateMachine(inkey);            
 243   2      //*/
 244   2          }
 245   1      }
 246          
 247          /*/////////////////////////////////////////////////////////////
 248          各中断函数的具体处理
 249          //*/
 250          void TIME0() interrupt 1
 251          {
 252   1              if(Num_Of_Circle==0)
 253   1                      TR1=1;
 254   1              Num_Of_Circle = 0;
 255   1      }
 256          
 257          void TIME1() interrupt 3//T1  计时 50ms
 258          {
 259   1              Num_Of_Circle = Num_Of_Circle==19 ? 0 : Num_Of_Circle + 1;
 260   1      }
 261          
 262          void EX0INT()   interrupt 0
 263          {
 264   1      }
 265          
 266          void EX1INT()   interrupt 2
 267          {
 268   1      }
 269          
 270          void  SERIAL()  interrupt 4
 271          {
 272   1      }
 273          ///////////////////////////////////////////////////////////////
 274          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    564    ----
   CONSTANT SIZE    =     74    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       6
   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 + -