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

📄 ex1.lst

📁 keil下单片机C8051F020的源程序
💻 LST
字号:
C51 COMPILER V7.50   EX1                                                                   12/12/2007 17:07:02 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN ex1.OBJ
COMPILER INVOKED BY: C:\Keil_c51\C51\BIN\C51.EXE ex1.c LARGE BROWSE INCDIR(F:\software\KEIL\;C:\keil\C51\) DEBUG OBJECTE
                    -XTEND

line level    source

   1          #include <includes.h>
   2          #include <cygnalcon.h>
   3          #include "intrins.h"
   4          
   5          
   6          
   7          void TaskA(void*) reentrant;
   8          void TaskB(void*) reentrant;
   9          void TaskC(void*) reentrant;
  10          void TaskD(void*) reentrant;
  11          
  12          OS_STK TaskStartStkA[MaxStkSize];//注意:在ASM文件中设置?STACK空间为40H即64。
  13          OS_STK TaskStartStkB[MaxStkSize];
  14          OS_STK TaskStartStkC[MaxStkSize];
  15          OS_STK TaskStartStkD[MaxStkSize];
  16          
  17          INT8U xdata LED[6]={0,0,0,0,0,0};
  18          
  19          void ch451_write(unsigned int command);
  20          void delay1ms(unsigned char x) reentrant;
  21          void delay1us(unsigned char y) reentrant;
  22          
  23          sbit CLK   = P3^0;
  24          sbit DIN   = P3^1;
  25          sbit LOAD  = P3^2;
  26          sbit DOUT  = P3^3;
  27          
  28          sbit KEY0  = P2^0;
  29          sbit KEY1  = P2^1;
  30          sbit KEY2  = P2^2;
  31          
  32          sbit OSWTM = P3^4;//osw translate master
  33          sbit OSWTS = P3^5;//osw translate Protect
  34          sbit OSWRM = P3^6;//osw receive master
  35          sbit OSWRS = P3^7;//osw receive Protect
  36          #define SwitchToMasterT         OSWTM=1;OSWTS=0;//OSW_T  打到主线路 东   东主
  37          #define SwitchToMasterR         OSWRM=1;OSWRS=0;//OSW_R  打到主线路 西   西主
  38          #define SwitchToProtectT        OSWTM=0;OSWTS=1;//OSW_T  打到备线路 东   东旁  
  39          #define SwitchToProtectR        OSWRM=0;OSWRS=1;//OSW_R  打到备线路 西   西旁
  40          
  41          /*************************************************************************
  42                      数码管函数 define
  43          *************************************************************************/
  44          #define CH451_RESET     0x0201             //复位
  45          #define CH451_LEFTMOV   0x0300             //设置移动方式-作移
  46          #define CH451_LEFTCYC   0x0301             //设置移动方式-左循
  47          #define CH451_RIGHTMOV  0x0302             //设置移动方式-右移
  48          #define CH451_RIGHTCYC  0x0303             //设置移动方式-右循 
  49          #define CH451_SYSOFF    0x0400             //关显示、键盘、看门狗
  50          #define CH451_SYSON1    0x0401             //开显示
  51          #define CH451_SYSON2    0x0403             //开显示、键盘
  52          #define CH451_SYSON3    0x0407             //开显示、键盘、看门狗功能
  53          #define CH451_DSP       0x0500             //设置默认显示方式
  54          #define CH451_BCD       0x0580             //设置BCD译码方式
C51 COMPILER V7.50   EX1                                                                   12/12/2007 17:07:02 PAGE 2   

  55          #define CH451_TWINKLE   0x0600             //设置闪烁控制
  56          #define CH451_DIG0      0x0800             //数码管位0显示
  57          #define CH451_DIG1      0x0900             //数码管位1显示 
  58          #define CH451_DIG2      0x0a00             //数码管位2显示
  59          #define CH451_DIG3      0x0b00             //数码管位3显示
  60          #define CH451_DIG4      0x0c00             //数码管位4显示
  61          #define CH451_DIG5      0x0d00             //数码管位5显示 
  62          #define CH451_DIG6      0x0e00             //数码管位6显示 
  63          #define CH451_DIG7      0x0f00             //数码管位7显示
  64          
  65          void main(void)
  66          {                               
  67   1              config();
  68   1      
  69   1          OSInit(); 
  70   1          
  71   1          ch451_write(CH451_RESET);    //复位
  72   1              ch451_write(CH451_SYSON1);       //开显示
  73   1              ch451_write(CH451_DSP);          //设置默认显示方式
  74   1              ch451_write(CH451_BCD);          //设置BCD译码方式
  75   1          
  76   1          OSTaskCreate(TaskA, (void *)0, TaskStartStkA,2);
  77   1          OSTaskCreate(TaskB, (void *)0, TaskStartStkB,3);
  78   1          OSTaskCreate(TaskC, (void *)0, TaskStartStkC,4);
  79   1              OSTaskCreate(TaskD, (void *)0, TaskStartStkD,5);     
  80   1              InitTimer0();
  81   1          OSStart();
  82   1              
  83   1      }
  84          
  85          
  86          void TaskA(void *pdat) reentrant
  87                  {
  88   1      
  89   1              pdat=pdat;
  90   1      
  91   1                      for(;;){
  92   2                                      INT8U sz=0;
  93   2                                      INT8U d[10]={63,6,91,79,102,109,124,7,127,103};
  94   2                                      //for( sz=0;sz<10;sz++)
  95   2                                      //      {
  96   2                                              //      P3=d[sz];
  97   2                                                 LED[0]=LED[0]+1;
  98   2                                                 if(LED[0]>=10)LED[0]=0;
  99   2                                                 ch451_write(CH451_DIG0+LED[0]);
 100   2                              //             ch451_write(CH451_DIG1+LED[1]);
 101   2                              //             ch451_write(CH451_DIG2+LED[2]);
 102   2                                                 if(OSWTM==0)
 103   2                                                 {
 104   3                                                 delay1ms(200);
 105   3                                                 delay1ms(200);
 106   3                                                 delay1ms(200);
 107   3                                                 delay1ms(200);
 108   3                                                 delay1ms(200);
 109   3                                                 SwitchToMasterT
 110   3                                                 SwitchToMasterR
 111   3                                                 }                                                                                    
 112   2                                                 OSTimeDly(2*OS_TICKS_PER_SEC); 
 113   2      
 114   2                                      //      }
 115   2                      
 116   2                              }    
C51 COMPILER V7.50   EX1                                                                   12/12/2007 17:07:02 PAGE 3   

 117   1              }
 118          
 119          void TaskB(void *pdat) reentrant
 120                  {
 121   1              pdat=pdat; 
 122   1              
 123   1              for(;;){
 124   2      
 125   2                                      //P1=~P1;
 126   2                                                 LED[1]=LED[1]+1; 
 127   2                                                 if(LED[1]>=10)LED[1]=0;
 128   2                                      //         ch451_write(CH451_DIG0+LED[0]);
 129   2                                             ch451_write(CH451_DIG1+LED[1]);
 130   2                                      //     ch451_write(CH451_DIG2+LED[2]);
 131   2                                             if(OSWTM==1)
 132   2                                                 {
 133   3                                                 delay1ms(200);
 134   3                                                 delay1ms(200);
 135   3                                                 delay1ms(200);
 136   3                                                 delay1ms(200);
 137   3                                                 delay1ms(200);
 138   3                                                 SwitchToProtectT
 139   3                                                 SwitchToProtectR
 140   3                                                 }  
 141   2                                     OSTimeDly(2*OS_TICKS_PER_SEC); 
 142   2       
 143   2                              }    
 144   1              }
 145          
 146          void TaskC(void *pdat) reentrant
 147                  {
 148   1              pdat=pdat; 
 149   1      
 150   1              for(;;){
 151   2      
 152   2                                      LED[2]=LED[2]+1;
 153   2                                  if(LED[2]>=10)LED[2]=0;
 154   2                                      ch451_write(CH451_DIG2+LED[2]);
 155   2                              OSTimeDly(2*OS_TICKS_PER_SEC);    
 156   2                              }    
 157   1              }
 158          
 159          void TaskD(void *pdat) reentrant
 160                  {       
 161   1      
 162   1                      INT8U sx;
 163   1                      INT8U e[10]={103,127,7,124,109,102,79,91,6,63};
 164   1      
 165   1                      pdat=pdat;
 166   1         
 167   1                      for(;;){
 168   2                              
 169   2                                      for( sx=0;sx<10;sx++)
 170   2                                              {
 171   3                                                      P2=e[sx];
 172   3                                                      OSTimeDly(3*OS_TICKS_PER_SEC);
 173   3                                              }
 174   2                                                      
 175   2                              }
 176   1         
 177   1              }
 178          
C51 COMPILER V7.50   EX1                                                                   12/12/2007 17:07:02 PAGE 4   

 179          void ch451_write(unsigned int command)
 180          {
 181   1         unsigned char i;
 182   1         LOAD=0; //命令开始 
 183   1         delay1us(10);
 184   1         for(i=0;i<12;i++ )
 185   1         { //送入12位数据,低位在前
 186   2            DIN=command&0x01; 
 187   2            CLK=0;
 188   2            command>>=1;
 189   2            CLK=1; //上升沿有效
 190   2         delay1us(2);
 191   2         }
 192   1         LOAD=1; //加载数据
 193   1      }
 194          
 195          void delay1ms(unsigned char x) reentrant
 196          {
 197   1              unsigned char xdata delayk;
 198   1              unsigned int xdata delayi;
 199   1              for(delayk=0;delayk<x;delayk++)
 200   1              for(delayi=0;delayi<335;delayi++)//1ms
 201   1              {
 202   2                       delayi++;
 203   2                       delayi--;
 204   2              }
 205   1      }
 206          
 207          void delay1us(unsigned char y) reentrant
 208          {
 209   1          unsigned int xdata delayj;
 210   1              for(delayj=0;delayj<y;delayj++){
 211   2      //              delayj++;delayj--;
 212   2                      _nop_();
 213   2                      _nop_();
 214   2                      _nop_();
 215   2                      _nop_();
 216   2              }
 217   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1011    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =    406       3
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -