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

📄 1602.lst

📁 51单片机测频率的程序
💻 LST
字号:
C51 COMPILER V8.02   1602                                                                  12/24/2008 13:31:28 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include "1602.h"
   3          #define DataPort P2
   4          
   5          sbit RS=P1^3;
   6          sbit RW=P1^4;
   7          sbit EN=P1^5;
   8          uchar i=0;
   9          uchar code meun[2][16]={"Frequency is:   ","00000000 Hz     "};
  10          uchar code m[10]="0123456789";
  11          unsigned char T0count; 
  12          unsigned char timecount; 
  13          bit flag; 
  14          unsigned int x; 
  15          
  16          void delay_ms(uchar t)
  17          {
  18   1              unsigned char i=0;
  19   1              while(t--)for(i=0;i<120;i++);
  20   1      }
  21          
  22          void WriteData(uchar dat)
  23          {
  24   1              EN=0;
  25   1              RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  26   1              RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  27   1              RS=1;
  28   1              RW=0;
  29   1              EN=1;
  30   1              DataPort=dat;
  31   1          EN=0;
  32   1              RS=0;
  33   1              RW=0;
  34   1              for (i=0;i<20;i++);
  35   1      }
  36          
  37          void WriteCmd(uchar cmd)
  38          {
  39   1              EN=0;
  40   1              RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  41   1              RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  42   1              EN=1;
  43   1              DataPort=cmd;
  44   1              RS=0;
  45   1              RW=0;
  46   1              EN=0;
  47   1              for (i=0;i<20;i++);
  48   1      }
  49          
  50          void DisChar(uchar ps,uchar dat)
  51          {
  52   1              WriteCmd((0x80+ps));
  53   1              WriteData(dat);
  54   1      }
  55          
C51 COMPILER V8.02   1602                                                                  12/24/2008 13:31:28 PAGE 2   

  56          void LcdInit(void)
  57          {
  58   1              char pp=0;
  59   1      
  60   1              WriteCmd(0x38);
  61   1          delay_ms(5);
  62   1              WriteCmd(0x38);
  63   1          delay_ms(5);
  64   1              WriteCmd(0x38);
  65   1          delay_ms(5);
  66   1              
  67   1              WriteCmd(0x01);delay_ms(5);
  68   1              WriteCmd(0x06);delay_ms(5);
  69   1              WriteCmd(0x38);
  70   1              WriteCmd(0x0c); 
  71   1              WriteCmd(0x40);
  72   1              
  73   1              for(pp=0;pp<16;pp++)DisChar(pp,*(meun[0]+pp));
  74   1              for(pp=0;pp<16;pp++)DisChar(pp+0x40,*(meun[1]+pp));     
  75   1      }
  76          
  77          void Display(unsigned int x)
  78          {
  79   1              DisChar(7+0x40,m[x%10]);x /= 10;
  80   1              DisChar(6+0x40,m[x%10]);x /= 10;
  81   1              DisChar(5+0x40,m[x%10]);x /= 10;
  82   1              DisChar(4+0x40,m[x%10]);x /= 10;
  83   1              DisChar(3+0x40,m[x%10]);x /= 10;
  84   1              DisChar(2+0x40,m[x%10]);x /= 10;
  85   1              DisChar(1+0x40,m[x%10]);x /= 10;
  86   1              DisChar(0+0x40,m[x%10]);x /= 10;
  87   1              delay_ms(200);
  88   1      }
  89          
  90          void main(void)
  91          {
  92   1              TMOD=0x15; 
  93   1              TH0=0; 
  94   1              TL0=0; 
  95   1              TH1=(65536-49989)/256; 
  96   1              TL1=(65536-49989)%256; 
  97   1              TR1=1;
  98   1              ET0=1; 
  99   1              ET1=1;
 100   1              EA=1;
 101   1              TR0=1;
 102   1              LcdInit();
 103   1      
 104   1              while(1)
 105   1              {
 106   2                      if(flag==1) 
 107   2              { 
 108   3                      flag=0; 
 109   3                      x=(T0count*65536+TH0*256+TL0);
 110   3                      timecount=0; 
 111   3                      T0count=0; 
 112   3                      TH0=0;                                                                                                  
 113   3                      TL0=0; 
 114   3                      TR0=1;
 115   3                              Display(x);
 116   3              } 
 117   2              }
C51 COMPILER V8.02   1602                                                                  12/24/2008 13:31:28 PAGE 3   

 118   1      }
 119          
 120          void t0(void) interrupt 1 using 0       //计脉冲个数
 121          { 
 122   1        T0count++; 
 123   1      } 
 124          
 125          void t1(void) interrupt 3 using 0        //定时1s
 126          { 
 127   1        TH1=(65536-50045)/256; 
 128   1        TL1=(65536-50045)%256; 
 129   1        timecount++; 
 130   1        if(timecount==20) 
 131   1          { 
 132   2            TR0=0;
 133   2            timecount=0; 
 134   2            flag=1;
 135   2          } 
 136   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    648    ----
   CONSTANT SIZE    =     42    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   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 + -