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

📄 main1.lst

📁 这是一个简单的单片机实现方波信号产生的程序
💻 LST
字号:
C51 COMPILER V7.06   MAIN1                                                                 01/31/2008 14:34:24 PAGE 1   


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

stmt level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2008,重庆优易特电子
   3          *            All rights reserved.
   4          
   5          * 摘 要:    方波信号发生器:10-200HZ,步长10HZ,P23口输出
   6          
   7          * 文件名称: main.c
   8          * CPU芯片:  STC89C51RC
   9          * 学习板型: Easy51-B 
  10          *  
  11          * 当前版本: 2.0
  12          * 作 者:        cache
  13          * 完成日期: 2008年1月23日
  14          *
  15          *************************************************************************************/
  16          
  17          #include "reg52.h"
  18          
  19          unsigned char  code Duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
  20                    0x6f,0X76,0X3e,0x55,0x37,0x77,0x5e,0x72};
  21          unsigned char  Data_Buffer[4]={0,0,0,0};
  22          
  23          unsigned char PinLV_Out=10;//范围:10-99
  24          
  25          unsigned char th0,tl0;
  26          
  27          sbit P10=P1^0;
  28          sbit P11=P1^1;
  29          sbit P12=P1^2;
  30          sbit P13=P1^3;
  31          
  32          sbit P23=P2^3;
  33          
  34          sbit DOWN=P2^2; //修改频率按键
  35          sbit UP=P2^1;  //修改频率按键
  36          
  37          void Comute_pinlv()
  38          {
  39   1       float t;
  40   1       unsigned int x;
  41   1       t=1000/PinLV_Out/2;//计算高\低宽度时间ms为单位
  42   1       t=t*921.6;  //11.0592MHZ晶振,1ms时间常数宽度为921.6
  43   1       t=65535-t;
  44   1       x=t;
  45   1       th0=x/256;
  46   1       tl0=x%256;   
  47   1       
  48   1       Data_Buffer[0]=0;      //频率值更新显示
  49   1       Data_Buffer[1]=PinLV_Out/100; 
  50   1       Data_Buffer[2]=PinLV_Out/10%10;
  51   1       Data_Buffer[3]=PinLV_Out%10;
  52   1      }
  53          
  54          void main()
  55          {       
C51 COMPILER V7.06   MAIN1                                                                 01/31/2008 14:34:24 PAGE 2   

  56   1          unsigned char Bit=0;
  57   1              bit x=1,y=1;
  58   1      
  59   1              Comute_pinlv();
  60   1              
  61   1              TMOD=0x11;
  62   1              TH0=th0;
  63   1              TL0=tl0;
  64   1              TR0=1;
  65   1              ET0=1;
  66   1              EA=1;   
  67   1      
  68   1          while(1)  
  69   1          {
  70   2             if(UP==1)x=1;
  71   2                 else if(x==1)
  72   2                 {//UP键按下
  73   3                    x=0;
  74   3                              PinLV_Out+=10;
  75   3                              if(PinLV_Out>200)PinLV_Out=200;
  76   3                              Comute_pinlv();
  77   3                 }
  78   2                 
  79   2                 if(DOWN==1)y=1;
  80   2                 else if(y==1)
  81   2                 {//DN键按下
  82   3                    y=0;
  83   3                          if(PinLV_Out>10)
  84   3                                 PinLV_Out-=10;
  85   3                              Comute_pinlv();
  86   3                 }
  87   2                
  88   2      
  89   2              Bit++;//数码管扫描
  90   2                      if(Bit>=4)Bit=0;
  91   2                      P1|=0x0f;
  92   2                      P0=Duan[Data_Buffer[Bit]];
  93   2                      switch(Bit)
  94   2                      {
  95   3                       case 0: P10=0;break;
  96   3                       case 1: P11=0;break;
  97   3                       case 2: P12=0;break;
  98   3                       case 3: P13=0;break;
  99   3                      }
 100   2          }
 101   1      }
 102          
 103          void timer0() interrupt 1
 104          {//定时器0用于产生方波信号,定时器时间常数是由方波频率决定
 105   1       TH0=th0;
 106   1       TL0=tl0;
 107   1      
 108   1       P23=!P23;//方波输出
 109   1      }
 110          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    268    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.06   MAIN1                                                                 01/31/2008 14:34:24 PAGE 3   

   DATA SIZE        =      7       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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