int01.lst

来自「可以熟悉51单片机中断机制 大大方便学习51单片机」· LST 代码 · 共 176 行

LST
176
字号
C51 COMPILER V7.50   INT01                                                                 02/14/2008 12:16:04 PAGE 1   


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

line level    source

   1          /*******************************************************************************
   2          * INT1+0中断计数 6位数码管显示,6位数码管显示,                                *
   3          *低三位数码管为显示外部中断INT0的计数值                                        *
   4          *高三位数码管为显示外部中断INT1的计数值 硬件: 数码管P0,数码管控制P2           * 
   5          *P3.3接按键,高3位的计数触发, P3.2低三位的计数触发                             *
   6          ********************************************************************************
   7          *  日期:  2008-2-25 硬件: 数码管P0,数码管控制P2                               *
   8          *       P1.4 按键,P1.5按键,为触发方式选择,P3.3接按键,为计数键              *
   9          *  作者:  深圳志博电子有限公司     专业8051单片机教学站                        *
  10          *  邮箱: zty0012001@163.com                                                       *
  11          *  网站: http://www.elecmcu.com     http://www.elecmcu.com    更多例程请登陆网站   *
  12          ********************************************************************************
  13          *  硬件:此程序在本公司志博电子实验仪运行通过                           *
  14          ********************************************************************************
  15          * 【版权】 Copyright(C)深圳志博电子有限公司 www.elecmcu.com  All Rights Reserved *
  16          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
  17          ********************************************************************************/               
  18          #include < reg51.h >
  19          #include <intrins.h>
  20          #define uchar unsigned char
  21          #define uint  unsigned int
  22          uchar const seg[11]={0x7f,0x44,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7,0x00};
  23          uchar dis[8]={0,0,0,0};        //设置显示缓冲存储器
  24          unsigned char count=0 ;
  25          unsigned char count0,count1,temp=0 ;
  26          sbit int_l=P1^4;
  27          sbit int_e=P1^5;
  28          /********************************************************
  29          * 延时函数                                              *
  30          ********************************************************/
  31          void delay(uint ms) 
  32          // 延时子程序
  33          {
  34   1       uchar k;
  35   1       while(ms--)
  36   1       {
  37   2        for(k = 0; k < 100; k++);
  38   2       }
  39   1      }
  40          /********************************************************
  41          *  数据处理与显示函数                                   *
  42          ********************************************************/
  43          void  disp_count()
  44          {
  45   1          char i=0;
  46   1          char k=0;
  47   1          dis[0]=count1/100;
  48   1          dis[1]=(count1%100)/10;
  49   1          dis[2]=count1%10;
  50   1          dis[3]=count0/100;
  51   1          dis[4]=(count0%100)/10;
  52   1          dis[5]=count0%10;
  53   1              for (i = 0; i < 6; i++)
  54   1              {                           //循环显示6位数据
  55   2                  switch (i)
C51 COMPILER V7.50   INT01                                                                 02/14/2008 12:16:04 PAGE 2   

  56   2                  {
  57   3                    case 0:
  58   3                    P0=0Xdf;
  59   3                    P1=P1|0X03;
  60   3                    break;
  61   3                    case 1:
  62   3                    P0=0XBF;
  63   3                    P1=P1|0X03;
  64   3                    break;
  65   3                    case 2:
  66   3                    P0=0X7F;
  67   3                    P1=P1|0X03;
  68   3                    break;
  69   3                    case 3:
  70   3                    P0=0XFF;
  71   3                    P1=0xfe;
  72   3                    break;
  73   3                    case 4:
  74   3                    P0=0XFF;
  75   3                    P1=0XFd;
  76   3                    break;
  77   3                    case 5:
  78   3                    P0=0Xef;
  79   3                    P1=0xff;
  80   3                    break;
  81   3                  }
  82   2                   P2=seg[dis[i]];
  83   2                   delay(1);
  84   2              }
  85   1      }
  86          /********************************************************
  87          * 主程序                                               *
  88          ********************************************************/
  89          void main(void)
  90          {  
  91   1         P0=0xff;
  92   1         P1=0xff;
  93   1         P2=0xff;      
  94   1         IT0=0;          //低电平触发
  95   1      //   IT0=1;        //下降沿触发
  96   1         IT1=0;          //低电平触发
  97   1      //   IT1=1;        //下降沿触发
  98   1         PX0=1;
  99   1         EA=1;
 100   1         EX1=1;
 101   1         EX0=1;
 102   1         while(1)
 103   1         {
 104   2            if(!int_l)//触发方式选择为电平触发
 105   2            {
 106   3              IT0=0;
 107   3              IT1=0;
 108   3            }
 109   2            if(!int_e)//触发方式选择为电平触发
 110   2            {
 111   3               IT0=1;
 112   3               IT1=1;
 113   3            }
 114   2            disp_count();
 115   2         }
 116   1      }
 117          /********************************************************
C51 COMPILER V7.50   INT01                                                                 02/14/2008 12:16:04 PAGE 3   

 118          * INT0中断函数                                          *
 119          ********************************************************/
 120          void  counter0(void) interrupt 0
 121          {
 122   1         uchar  x;
 123   1         EX0=0;
 124   1         count0++;
 125   1          
 126   1         for(x=0;x<10;x++)
 127   1         {
 128   2           disp_count();
 129   2         }
 130   1         EX0=1;
 131   1      }
 132          /********************************************************
 133          * INT1中断函数                                          *
 134          ********************************************************/
 135          void  counter1(void) interrupt 2 
 136          {
 137   1         uchar  x;
 138   1         EX1=0;
 139   1         count1++;
 140   1          
 141   1         for(x=0;x<10;x++)
 142   1         {
 143   2           disp_count();
 144   2         }
 145   1         EX1=1;
 146   1      }
 147          /********************************************************/
 148          


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


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

⌨️ 快捷键说明

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