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

📄 counter.lst

📁 方波计数器-C编写的称: 外部计数+显示程序 单片机外部输入脉冲信号
💻 LST
字号:
C51 COMPILER V7.06   COUNTER                                                               03/01/2007 12:32:41 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE COUNTER
OBJECT MODULE PLACED IN counter.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE counter.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************************************/ 
   2          /*                                                               */                                       
             -                         
   3          /*名称:                   外部计数+显示程序                     */                                       
             -                                                                                                                        
             -            
   4          /*功能:           单片机外部输入脉冲信号,定时器参与计数        */
   5          /*                   计数值由数码管显示出来。                      */                                     
             -               
   6          /*难度等级:                   中                                */                                       
             -                              
   7          /* 作者:                  zengrenliang                          */
   8          /* 版权:           http://www.51kaifa.com                       */
   9          /*编写日期:        2006.05.19                                   */                                       
             -                                                                                                                        
             -                                              
  10          /*****************************************************************/
  11          
  12          
  13          
  14          #include<reg52.h>
  15          #define  uchar  unsigned char
  16          
  17          
  18          sbit addr0 = P1^4;//系统片选地址线0
  19          sbit addr1 = P1^5;//系统片选地址线1
  20          sbit addr2 = P1^6;//系统片选地址线2
  21          sbit addr3 = P1^7;//系统片选地址线3
  22          
  23          //行扫描数组
  24          uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7
  25          //数码管显示的段码表
  26          uchar code table[18] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//0,1,2,3,4,5
  27                                 0x82,0xf8,0x80,0x90,0x88,0x83,//6,7,8,9,a,b
  28                                 0xc6,0xa1,0x86,0x8e,0xbf,0xff};//c,d,e,f,-,空格
  29          
  30          uchar dispbuf[8]; //显示缓冲区   
  31          unsigned int count;                      
  32          
  33          /*****************************延时函数**************************/
  34          
  35          void delay (unsigned int us)  
  36          {
  37   1        while(us--);
  38   1      }
  39          
  40          void initial()
  41          { uchar j;
  42   1        count=0;//秒清零
  43   1        for(j=0;j<6;j++)
  44   1          dispbuf[j] = 0;//清数码管显示缓冲区
  45   1        TMOD = 0x05;//T0 T1工作于方式1
  46   1        TL0 = 0xff;
  47   1        TH0 = 0xff;//50ms定时初值
  48   1      
C51 COMPILER V7.06   COUNTER                                                               03/01/2007 12:32:41 PAGE 2   

  49   1        ET0 = 1;//允许T1中断
  50   1        PT0 = 1;//T1中断优先级高
  51   1      
  52   1        EA = 1;//开中断
  53   1        TR0 = 1;//T1开始计时
  54   1       }
  55          
  56          
  57          /*************************************填充显示缓冲区****************************/
  58          
  59          void  feedbuffer()
  60          {
  61   1      unsigned int temp;
  62   1       
  63   1       temp = count;
  64   1       dispbuf[5] = temp % 10;//分个位
  65   1       temp = temp / 10;
  66   1       dispbuf[4] = temp % 10;//分十位
  67   1       
  68   1       temp = temp / 10;
  69   1       dispbuf[3] =temp % 10;//时百位
  70   1       temp = temp / 10;
  71   1       dispbuf[2] =temp % 10;//时千位
  72   1      
  73   1       temp = temp / 10;
  74   1       dispbuf[1] =temp % 10;//时万位
  75   1       temp = temp / 10;
  76   1       dispbuf[0] =temp % 10;//时十万位
  77   1      
  78   1      }
  79          
  80          
  81          
  82          
  83          /******************************显示+读键*************************/
  84          
  85          void vLedKey_Scan()
  86          {  unsigned char i,value;  
  87   1      
  88   1          for(i=0;i<8;i++){
  89   2             addr3 = 0;
  90   2             addr0 = 0;
  91   2             addr1 = 1;
  92   2             addr2 = 0;//开发板上U4(74HC574)的片选地址
  93   2             value =table[dispbuf[i]]; //取一行显示数据 
  94   2             P0 = value;
  95   2             addr3 = 1; 
  96   2             addr3 = 0;//在U4的11脚(锁存信号)产生上升沿
  97   2             P2 = scan[i];//取row0--row7行扫描数据
  98   2             delay(50); //延时50us
  99   2             P2 = 0xff;//关显示
 100   2             }
 101   1       }
 102          
 103          /*******************************主函数***********************/
 104          
 105          main()
 106          { 
 107   1        initial();
 108   1        while(1){
 109   2            vLedKey_Scan(); //显示,读键扫描 
 110   2        }
C51 COMPILER V7.06   COUNTER                                                               03/01/2007 12:32:41 PAGE 3   

 111   1      }
 112          
 113          
 114          
 115          //计数中断服务
 116          void  int50ms() interrupt 1
 117          { 
 118   1        TR0=0;//关定时器T0
 119   1        TL0= 0xff;
 120   1        TH0= 0xff;//赋定时初值
 121   1        TR0=1;//开定时器T0
 122   1        count++;//50ms计数加1
 123   1        feedbuffer();
 124   1      }
 125          /********************************结束************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    298    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   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 + -