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

📄 task.lst

📁 ucos2 程序代码!!!!!可用与51单片机
💻 LST
字号:
C51 COMPILER V7.06   TASK                                                                  03/22/2009 20:21:29 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TASK
OBJECT MODULE PLACED IN task.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE task.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /*  延时函数                                                       */
   4          /*                                                                 */
   5          /*******************************************************************/
   6          #include<reg51.h>
   7          #include <intrins.h>
   8          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
   9          sbit LCD_RS  =  P3^5;            //寄存器选择输入 
  10          sbit LCD_RW  =  P3^6;            //液晶读/写控制
  11          sbit LCD_EN  =  P3^4;            //液晶使能控制
  12          sbit LCD_PSB =  P3^7;            //串/并方式控制
  13          sbit wela    =  P2^6;
  14          sbit dula    =  P2^7;
  15          #define uchar unsigned char
  16          #define uint  unsigned int
  17          void delay(int ms)
  18          {
  19   1          while(ms--)
  20   1              {
  21   2            unsigned char i;
  22   2                for(i=0;i<250;i++)  
  23   2                 {
  24   3                  _nop_();                       
  25   3                      _nop_();
  26   3                      _nop_();
  27   3                      _nop_();
  28   3                 }
  29   2              }
  30   1      }               
  31          /*******************************************************************/
  32          /*                                                                 */
  33          /*检查LCD忙状态                                                    */
  34          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
  35          /*                                                                 */
  36          /*******************************************************************/
  37          bit lcd_busy()
  38           {                          
  39   1          bit result;
  40   1          LCD_RS = 0;
  41   1          LCD_RW = 1;
  42   1          LCD_EN = 1;
  43   1          result = (bit)(P0&0x80);
  44   1          LCD_EN = 0;
  45   1          return(0); 
  46   1       }
  47          /*******************************************************************/
  48          /*                                                                 */
  49          /*写指令数据到LCD                                                  */
  50          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
  51          /*                                                                 */
  52          /*******************************************************************/
  53          void lcd_wcmd(unsigned char cmd)
  54          {                          
  55   1         while(lcd_busy());
C51 COMPILER V7.06   TASK                                                                  03/22/2009 20:21:29 PAGE 2   

  56   1          LCD_RS = 0;
  57   1          LCD_RW = 0;
  58   1          LCD_EN = 0;
  59   1          _nop_();
  60   1          _nop_(); 
  61   1          P0 = cmd;
  62   1          delayNOP();
  63   1          LCD_EN = 1;
  64   1          delayNOP();
  65   1          LCD_EN = 0;  
  66   1      }
  67          /*******************************************************************/
  68          /*                                                                 */
  69          /*写显示数据到LCD                                                  */
  70          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
  71          /*                                                                 */
  72          /*******************************************************************/
  73          void lcd_wdat(unsigned char dat)
  74          {                          
  75   1         while(lcd_busy());
  76   1          LCD_RS = 1;
  77   1          LCD_RW = 0;
  78   1          LCD_EN = 0;
  79   1          P0 = dat;
  80   1          delayNOP();
  81   1          LCD_EN = 1;
  82   1          delayNOP();
  83   1          LCD_EN = 0; 
  84   1      }
  85          /*******************************************************************/
  86          /*                                                                 */
  87          /*  LCD初始化设定                                                  */
  88          /*                                                                 */
  89          /*******************************************************************/
  90          void lcd_init()
  91          { 
  92   1      
  93   1          LCD_PSB = 1;         //并口方式
  94   1          
  95   1          lcd_wcmd(0x34);      //扩充指令操作
  96   1          delay(5);
  97   1          lcd_wcmd(0x30);      //基本指令操作
  98   1          delay(5);
  99   1          lcd_wcmd(0x0C);      //显示开,关光标
 100   1          delay(5);
 101   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 102   1          delay(5);
 103   1      }
 104          void delay0(uchar x)    //x*0.14MS
 105          {
 106   1        uchar i;
 107   1        while(x--)
 108   1       {
 109   2        for (i = 0; i<13; i++) {}
 110   2       }
 111   1      }
 112          /*********************************************************/
 113          /*                                                       */
 114          /* 设定显示位置                                          */
 115          /*                                                       */
 116          /*********************************************************/
 117          void lcd_pos(uchar X,uchar Y)
C51 COMPILER V7.06   TASK                                                                  03/22/2009 20:21:29 PAGE 3   

 118          {                          
 119   1         uchar  pos;
 120   1         if (X==0)
 121   1           {X=0x80;}
 122   1         else if (X==1)
 123   1           {X=0x90;}
 124   1         else if (X==2)
 125   1           {X=0x88;}
 126   1         else if (X==3)
 127   1           {X=0x98;}
 128   1         pos = X+Y ;  
 129   1         lcd_wcmd(pos);     //显示地址
 130   1      }
 131          
 132          
 133          void Draw_PM(const unsigned char *ptr)
 134          {
 135   1          uchar i,j,k;
 136   1          
 137   1              lcd_wcmd(0x34);        //打开扩展指令集
 138   1              i = 0x80;            
 139   1              for(j = 0;j < 32;j++)
 140   1              {
 141   2              lcd_wcmd(i++);
 142   2              lcd_wcmd(0x80);
 143   2                      for(k = 0;k < 16;k++)
 144   2                      {
 145   3                          lcd_wdat(*ptr++);
 146   3                      }
 147   2              }
 148   1              i = 0x80;
 149   1              for(j = 0;j < 32;j++)
 150   1              {
 151   2                  lcd_wcmd(i++);
 152   2              lcd_wcmd(0x88);    
 153   2                      for(k = 0;k < 16;k++)
 154   2                      {
 155   3                          lcd_wdat(*ptr++);
 156   3                      } 
 157   2              }  
 158   1          lcd_wcmd(0x36);        //打开绘图显示
 159   1              lcd_wcmd(0x30);        //回到基本指令集
 160   1      
 161   1      }
 162          
 163          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    297    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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