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

📄 int0+int1.lst

📁 ME500——51单片机的几个中断程序
💻 LST
字号:
C51 COMPILER V8.02   INT0_INT1                                                             12/13/2006 21:22:31 PAGE 1   


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

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500单片机开发系统演示程序 - INT0 INT1 中断计数                */
   4          /*                                                                 */
   5          /* 6位数码管显示                                                   */
   6          /*                                                                 */
   7          /* 版本: V1.0 (2006/11/20)                                        */
   8          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
   9          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  10          /* 时间: 2006/12/13                                               */
  11          /*                                                                 */
  12          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  13          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  14          /*                                                                 */
  15          /*******************************************************************/
  16                  
  17          #include < reg51.h >
  18          #include <intrins.h>
  19          
  20          #define uchar unsigned char
  21          #define uint  unsigned int
  22          
  23          unsigned char code  LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,
  24                                            0x82,0xF8,0x80,0x90,0xff};
  25                                              
  26          unsigned char data  display[8] = {0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00};
  27          
  28          unsigned char code  scan_bit[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  29          
  30          unsigned char count0,count1,temp=0 ;
  31          
  32          /********************************************************
  33          *                                                       *
  34          * 延时函数                                              *
  35          *                                                       *
  36          ********************************************************/
  37          void delay(uint ms) 
  38          // 延时子程序
  39          {
  40   1       uchar k;
  41   1       while(ms--)
  42   1       {
  43   2        for(k = 0; k < 100; k++);
  44   2       }
  45   1      }
  46          
  47          /********************************************************
  48          *                                                       *
  49          *  数据处理与显示函数                                   *
  50          *                                                       *
  51          ********************************************************/
  52          void  disp_count()
  53          {
  54   1          char n;  
  55   1      
C51 COMPILER V8.02   INT0_INT1                                                             12/13/2006 21:22:31 PAGE 2   

  56   1          temp=count0;
  57   1      
  58   1          display[2]=temp/100;    //数据处理
  59   1          temp=temp%100;
  60   1          display[1]=temp/10;
  61   1          display[0]=temp%10;
  62   1      
  63   1              if(display[2]==0)        //高位为0,不显示 
  64   1              { 
  65   2                display[2]=0x0a;
  66   2                if(display[1]==0)
  67   2                display[1]=0x0a;  
  68   2          } 
  69   1      
  70   1          temp=count1;
  71   1      
  72   1          display[7]=temp/100;    //数据处理
  73   1          temp=temp%100;
  74   1          display[6]=temp/10;
  75   1          display[5]=temp%10;
  76   1      
  77   1              if(display[7]==0)        //高位为0,不显示 
  78   1              { 
  79   2                display[7]=0x0a;
  80   2                if(display[6]==0)
  81   2                display[6]=0x0a;  
  82   2          } 
  83   1           
  84   1          for(n=0;n<8;n++)
  85   1          {    
  86   2            P0 =LEDData[display[n]] ;  //显示段码
  87   2            P2 =scan_bit[n];           //输出位码
  88   2            delay(1);
  89   2                P2 = 0xff;                 //关闭显示
  90   2          } 
  91   1      }
  92          
  93          /********************************************************
  94          *                                                       *
  95          * 主程序                                               *
  96          *                                                       *
  97          ********************************************************/
  98          void main(void)
  99          {  
 100   1         P0=0xff;
 101   1         P1=0xff;
 102   1         P2=0xff;   
 103   1         
 104   1         IT0=0;          //低电平触发
 105   1      //   IT0=1;        //下降沿触发
 106   1         IT1=0;          //低电平触发
 107   1      //   IT1=1;        //下降沿触发
 108   1         PX0=1;
 109   1         EA=1;
 110   1         EX1=1;
 111   1         EX0=1;
 112   1      
 113   1         while(1)
 114   1         {
 115   2            disp_count();
 116   2         }
 117   1      }
C51 COMPILER V8.02   INT0_INT1                                                             12/13/2006 21:22:31 PAGE 3   

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    332    ----
   CONSTANT SIZE    =     19    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   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 + -