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

📄 4506_8bit_ok.lst

📁 C8051F单片机应用和液晶显示器编程的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE 4506_8BIT_OK
OBJECT MODULE PLACED IN 4506_8bit_ok.OBJ
COMPILER INVOKED BY: C:\Program Files\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe 4506_8bit_ok.c DB OE

stmt level    source

   1          //-----------------------------------------------------------------------------
   2          // Copyright (C) 2004 Silicon Laboratories, Inc.
   3          //
   4          // AUTH: JS
   5          // DATE: 03 JUL 02
   6          //
   7          // This program flashes the green LED on the C8051F31x target board about 
   8          // five times a second using the interrupt handler for Timer2.
   9          //
  10          // Target: C8051F31x
  11          //
  12          // Tool chain: KEIL Eval 'c'
  13          //
  14          
  15          //-----------------------------------------------------------------------------
  16          // Includes
  17          //-----------------------------------------------------------------------------
  18          //OSC=24.5MHz
  19          /* 
  20          ;                                C8051F310
  21          ;            KEY5    P0.1       1|---=---|32 P0.2 XTAL1
  22          ;            KEY6    P0.0       2|       |31 P0.3 XTAL2
  23          ;            GND                3|       |30 P0.4 KEY1
  24          ;            VDD                4|       |29 P0.5 KEY2
  25          ;            /RST/C2ACK         5|       |28 P0.6 CNVSTR KEY3
  26          ;            KEY7    P3.0(C2D)  6|       |27 P0.7 KEY4
  27          ;            CS2     P3.1       7|       |26 P1.0 D0
  28          ;            CS1     P3.2       8|       |25 P1.1 D1
  29          ;            RD      P3.3       9|       |24 P1.2 D2
  30          ;            WR      P3.4      10|       |23 P1.3 D3
  31          ;            RS      P2.7      11|       |22 P1.4 D4
  32          ;            MR_B    P2.6      12|       |21 P1.5 D5
  33          ;            MWE     P2.5      13|       |20 P1.6 D6
  34          ;            MRE     P2.4      14|       |19 P1.7 D7
  35          ;            MALE    P2.3      15|       |18 P2.0 LP
  36          ;            MCLE    P2.2      16|-------|17 P2.1 MCE
  37          ;              
  38          */
  39          //=============================
  40          #include <c8051f310.h>
  41          
  42          //=============================
  43          
  44          #define uchar unsigned char
  45          #define uint unsigned int
  46          //=============================
  47          uchar xdata buffer[513];     //开辟页缓存数组
  48          uchar *pointer;              //建立数组指针
  49          uchar raddrl; uchar raddrh;  //页寻址的高、低位
  50          uchar mydata;                //数据
  51          //=============================
  52          sbit         KEY3  =P0^6;    //fr
  53          sbit         KEY4  =P0^7;    //-
  54          sbit         KEY2  =P0^5;    //+
  55          sbit         KEY7  =P3^0;    //no step
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 2   

  56          sbit         KEY1  =P0^4;    //step
  57          sbit           RD  =P3^3;
  58          sbit           RS  =P2^7;
  59          sbit           WR  =P3^4;
  60          sbit          MR_B =P2^6;
  61          sbit          MWE  =P2^5;
  62          sbit          MRE  =P2^4;
  63          sbit          MALE =P2^3;
  64          sbit          MCLE =P2^2;
  65          sbit          MCE  =P2^1; 
  66          sbit              CS1  =P3^2; 
  67          //================
  68          sbit    LED  =P0^0;
  69          //=================
  70          uchar autorun0,data_out,data_data;
  71          uint ii,jj,kk,wait_value,aa,bb,cc;
  72          int otp_value;
  73          //========write instruction===========================================
  74          void wr_com8080(uchar x)
  75          {
  76   1        RS=0;RD=1;WR=1;WR=1;WR=1;P1=x;P1=x;P1=x;WR=0;WR=0;WR=0;WR=0;WR=1;WR=1;WR=1;
  77   1        P1=0xff;
  78   1      }
  79          
  80          //=====write display data==================================================
  81          void wr_data8080(uchar x)
  82          {
  83   1       RS=1;WR=1;WR=1;WR=1;RD=1;P1=x;P1=x;P1=x; WR=0; WR=0; WR=0;WR=0;WR=1;WR=1;WR=1;
  84   1       P1=0xff;
  85   1      }
  86          //=========================================================
  87          void coordinate(uchar col,page)
  88          {
  89   1           wr_com8080(0x42);
  90   1           wr_com8080(page);         //page(row)
  91   1           wr_com8080(127);
  92   1           wr_com8080(0x43);
  93   1           wr_com8080(col);          //colomn
  94   1           wr_com8080(127);
  95   1      }
  96          //=========delay without key==========================================
  97          void DelayX1ms(uchar count)
  98          {
  99   1       uchar i,j,k;
 100   1       for(i=0;i<count;i++)
 101   1        for(j=0;j<40;j++)
 102   1         for(k=0;k<120;k++)
 103   1          {
 104   2           ;
 105   2          }
 106   1      }
 107          //=====================================================================
 108          void DelayX10ms(uint count)
 109          {
 110   1       uint i,j,k;
 111   1       for(i=0;i<count;i++)
 112   1        for(j=0;j<10;j++)
 113   1         for(k=0;k<120;k++)
 114   1          {
 115   2           ;
 116   2          }
 117   1      }
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 3   

 118          //====================================================================
 119          void Delay50us(uchar count)
 120          {
 121   1       uchar i,j;
 122   1       for(j=0;j<count;j++)
 123   1         for(i=0;i<6;i++)
 124   1         {
 125   2          ;
 126   2          }
 127   1      }
 128          //=======================================================================
 129          void key_wait(uint count)
 130          {
 131   1       uint i,j,k;
 132   1       if(autorun0==0)
 133   1        {
 134   2         for(i=0;i<count;i++)
 135   2         for(j=0;j<10;j++)
 136   2         for(k=0;k<20;k++)
 137   2          {
 138   3           if(KEY1!=1)
 139   3            {
 140   4              autorun0=1;
 141   4              goto next;
 142   4            }
 143   3           //==========================
 144   3           if(KEY7!=1)
 145   3           {
 146   4            while(KEY7!=1)
 147   4                {
 148   5                 ;
 149   5                }
 150   4            kk=1000;
 151   4            goto next; 
 152   4               }
 153   3          //==========================
 154   3              if(KEY3==0)
 155   3           {
 156   4                while(KEY3==0)
 157   4                {
 158   5                ;
 159   5                }
 160   4                DelayX10ms(25);
 161   4                while(KEY3==0)
 162   4                {
 163   5                ;
 164   5                }
 165   4                if(wait_value==60)
 166   4                 wait_value=90;
 167   4            else if(wait_value==90)
 168   4                 wait_value=130;
 169   4            else if(wait_value==130)
 170   4                 wait_value=200;
 171   4            else 
 172   4                 wait_value=60;
 173   4             
 174   4           }
 175   3          }
 176   2        }
 177   1       else
 178   1        {
 179   2         while(1)
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 4   

 180   2          {
 181   3           if(KEY1!=1)
 182   3            {
 183   4             for(i=0;i<100;i++)
 184   4             for(j=0;j<100;j++)
 185   4               {
 186   5                  ;
 187   5               }
 188   4             goto next;
 189   4             }
 190   3           //==============================
 191   3           if(KEY7!=1)
 192   3           {
 193   4            while(KEY7!=1)
 194   4                {
 195   5                 ;
 196   5                }
 197   4            kk=1000;
 198   4            goto next; 
 199   4               }
 200   3          //==========================
 201   3              DelayX10ms(25);
 202   3           if(KEY2==0)
 203   3           {
 204   4            while(KEY2==0)
 205   4                {
 206   5                ;
 207   5                }
 208   4                wr_com8080(0x2a);
 209   4            otp_value=otp_value+1;
 210   4            if(otp_value==256)
 211   4              otp_value=0xff;
 212   4            wr_com8080(otp_value);
 213   4           }
 214   3          //==========================
 215   3          if(KEY4==0)
 216   3           {
 217   4            while(KEY4==0)
 218   4                {
 219   5                ;
 220   5                }
 221   4                wr_com8080(0x2a);
 222   4            otp_value=otp_value-1;
 223   4            if(otp_value==-1)
 224   4              otp_value=0x00;
 225   4            wr_com8080(otp_value);
 226   4           }
 227   3         }
 228   2        }
 229   1       next:
 230   1       //==========================
 231   1       RS=1;
 232   1       //==========================
 233   1      }
 234          //=======================================================================
 235          void pic_wait(uint count)
 236          {
 237   1       uint i,j,k;
 238   1       if(autorun0==0)
 239   1        {

⌨️ 快捷键说明

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