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

📄 ex1.lst

📁 uc/osII基于51单片机的时钟
💻 LST
字号:
C51 COMPILER V7.06   EX1                                                                   03/04/2005 14:28:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN ex1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "..\uc_os_II\includes.h"
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          
   5          sbit LED1=P1^3;
   6          sbit LED2=P3^2;
   7          sbit LED3=P2^4;
   8          sbit LED4=P2^3;
   9          sbit CLK=P1^4;
  10          sbit DAT=P1^5;
  11          uchar code seg[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19};
  12          uchar disp[6];//显示缓冲区
  13          unsigned char count1;
  14          struct {unsigned char h;
  15                  unsigned char m;
  16                  unsigned char s;
  17                 }run_time={0,0,0};
  18          
  19          OS_STK xdata Task1Stack[CPU_MAX_STK_SIZE];
  20          OS_STK xdata Task2Stack[CPU_MAX_STK_SIZE];
  21          void SendTime(void) reentrant
  22          {TI=0;
  23   1       SBUF=run_time.h;
  24   1       while(TI==0);
  25   1       TI=0;
  26   1       SBUF=run_time.m;
  27   1       while(TI==0);
  28   1       TI=0;
  29   1       SBUF=run_time.s;
  30   1       while(TI==0);
  31   1      
  32   1      }
  33          void delay(int t)//延时子程序
  34          {int i,j;
  35   1       for(i=0;i<t;i++)
  36   1          for (j=0;j<100;j++);    
  37   1      }
  38          
  39          
  40          
  41          void Moni_Send(uchar dsdata) 
  42           {uchar i,temp=0;
  43   1      
  44   1              CLK=0;
  45   1                      for(i=0;i<=7;i++)
  46   1                      {
  47   2                              temp=dsdata&0x01;
  48   2                              dsdata=dsdata>>1;
  49   2                              if(temp==0)
  50   2                                      DAT=0;
  51   2                              else
  52   2                                      DAT=1;   //置数据在端口上
  53   2      
  54   2                              CLK=1;  //发出移位脉冲
  55   2                              CLK=0;
C51 COMPILER V7.06   EX1                                                                   03/04/2005 14:28:22 PAGE 2   

  56   2                      }
  57   1              
  58   1       }
  59          void disp_num(uchar num)
  60          {disp[0]=seg[num%10];  //ge wei
  61   1       disp[1]=seg[num/10];  //shi wei
  62   1       Moni_Send(disp[1]);
  63   1       Moni_Send(disp[0]);
  64   1       
  65   1      }
  66          
  67          void Task1(void xdata * ppdata) reentrant
  68          {
  69   1              ppdata = ppdata;
  70   1              while(1)
  71   1              {
  72   2                      OSTimeDly(50); 
  73   2              count1++;  
  74   2              if(count1>5)
  75   2              {count1=0;     
  76   3               LED4=~LED4;
  77   3              
  78   3              } 
  79   2              if(run_time.s>=59)
  80   2               {run_time.s=0;
  81   3                    if(run_time.m>=59)
  82   3                     {run_time.m=0;
  83   4                         if(run_time.h>=23)run_time.h=0;
  84   4                         else run_time.h++;
  85   4                     }
  86   3                    else
  87   3                    { run_time.m++;
  88   4                    }
  89   3              }
  90   2              else
  91   2              { run_time.s++;
  92   3              }
  93   2      
  94   2             // LED3=~LED3;        
  95   2              disp_num(run_time.h);
  96   2              disp_num(run_time.m);
  97   2              disp_num(run_time.s);
  98   2                      printf("\nTASK1 IS ACTIVE");
  99   2              }
 100   1      }
 101          
 102          void Task2(void xdata * ppdata) reentrant
 103          {
 104   1              ppdata = ppdata;
 105   1              while(1)
 106   1              {
 107   2                      OSTimeDly(50);  
 108   2              OS_ENTER_CRITICAL();
 109   2              SendTime();
 110   2              OS_EXIT_CRITICAL(); 
 111   2              LED1=~LED1;   
 112   2                      printf("\n TASK2 IS ACTIVE");
 113   2              }
 114   1      }
 115          void SerialInitial()
 116          {
 117   1              /* set TI to 1, set TR1 to 1 */
C51 COMPILER V7.06   EX1                                                                   03/04/2005 14:28:22 PAGE 3   

 118   1              SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
 119   1              TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
 120   1              TH1 = 0xE6;     /* TH1=E6 4800bit/s when at 24MHz,TH1=F3,9600bit/s,24MHz */
 121   1              PCON = 0x80;
 122   1              TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
 123   1      }
 124          void InterruptInitial()
 125          {
 126   1              /* set timer. 50ms, THTL = 3caf when cpu at 12MHz */
 127   1              TMOD |= 0x01;
 128   1              TH0 = 0x70;
 129   1              TL0 = 0x00;
 130   1              /* TR0 is set in OSStart() */
 131   1              ET0 = 1;
 132   1      }
 133          main()
 134          {
 135   1              SerialInitial();
 136   1              InterruptInitial();
 137   1          OSInit();
 138   1          printf("\nstart");
 139   1          OSTaskCreate(Task1, (void xdata *)0, &Task1Stack[0],2);
 140   1              OSTaskCreate(Task2, (void xdata *)0, &Task2Stack[0],3);
 141   1          OSStart();
 142   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    378    ----
   CONSTANT SIZE    =     52    ----
   XDATA SIZE       =    496    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   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 + -