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

📄 第二方案中断.lst

📁 一个超声测距程序
💻 LST
字号:
C51 COMPILER V8.02   第二方案中断                                                          09/02/2007 21:01:14 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 第二方案中断
OBJECT MODULE PLACED IN 第二方案中断.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE 第二方案中断.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          
   6          sbit dula=P2^7;
   7          sbit wela=P2^6;    //数码管段,位定义
   8          sbit send=P1^0;    //发送端定义
   9          
  10          
  11          uint count=0,js,L,a,b;
  12          uchar a1,a2,a3;
  13          
  14          void display(uchar,uchar,uchar);
  15          void delay(uchar);
  16          
  17          uchar code table[]={
  18          0x3f,0x06,0x5b,0x4f,
  19          0x66,0x6d,0x7d,0x07,
  20          0x7f,0x6f,0x77,0x7c,
  21          0x39,0x5e,0x79,0x71};     //段码数组
  22          
  23          void main()
  24          {                
  25   1       EA=0;
  26   1       send=0;
  27   1       delay(100);
  28   1       
  29   1       TH0=0x1F;
  30   1       TL0=0xF4;  //T0设初值刚好驱动探头
  31   1       TH1=0x00;
  32   1       TL1=0x00;  //T1计数设初值
  33   1       TMOD=0x10;        //T0为模式0,13位计数; T1为模式1,16位计数
  34   1      
  35   1       TR0=1;     //开启T0
  36   1       /*TR1=1;*/             //开启T1
  37   1      
  38   1       EA=1;
  39   1       ET0=1;
  40   1       PT0=1;     //开启T0中断,并设高优先级
  41   1      
  42   1       ET1=1;   //开启T1中断,用于溢出显示无效
  43   1       PX1=1;            //该不该设?
  44   1      
  45   1       IT0=1;    // 低电平触发方式
  46   1       EX0=1;   //开启外部中断0
  47   1       IE=0x83;
  48   1      
  49   1      }
  50          
  51          
  52          void display(uchar bai,uchar shi,uchar ge)                       //显示子函数
  53          {
  54   1       for(;;)
  55   1       {
C51 COMPILER V8.02   第二方案中断                                                          09/02/2007 21:01:14 PAGE 2   

  56   2        dula=1;
  57   2        P0=table[bai];
  58   2        dula=0;
  59   2        wela=1;
  60   2        P0=0x0d;
  61   2        wela=0;
  62   2        delay(1);
  63   2      
  64   2        dula=1;
  65   2        P0=table[shi];
  66   2        dula=0;
  67   2        wela=1;
  68   2        P0=0x0b;
  69   2        wela=0;
  70   2        delay(1);
  71   2      
  72   2        dula=1;
  73   2        P0=table[ge];
  74   2        dula=0;
  75   2        wela=1;
  76   2        P0=0x07;
  77   2        wela=0;
  78   2        delay(1);
  79   2       }                                                                       
  80   1      } 
  81          
  82          
  83          void delay(uchar x5ms)            //延时5ms子函数
  84          {
  85   1       for(b=x5ms;b>0;b--)
  86   1        for(a=532;a>0;a--);
  87   1      }
  88                  
  89          
  90          void time0_int(void) interrupt 1            //T0溢出中断,P1.0口连续发40KHz脉冲
  91          {
  92   1       count++;
  93   1       send=!send;                              
  94   1       TH0=0x1F;
  95   1       TL0=0xF4;
  96   1       /*if(count==17)
  97   1       {
  98   1        count=0;
  99   1        TR0=0;
 100   1        ET0=0;
 101   1        TH0=0x00;
 102   1        TL0=0x00;
 103   1       }*/    
 104   1      } 
 105          
 106           void rec(void) interrupt 0         //外部中断0,接收信号并处理
 107          {
 108   1        TR0=0;
 109   1        js=TH0*256+TL0;
 110   1        if(js<300);
 111   1        if(js>=300) 
 112   1       {
 113   2         L=(17*js)/1000;
 114   2         a1=L/100;
 115   2         a2=L%100/10;
 116   2         a3=L%100%10;
 117   2         display(a1,a2,a3);
C51 COMPILER V8.02   第二方案中断                                                          09/02/2007 21:01:14 PAGE 3   

 118   2       }
 119   1      }  
 120          
 121          void time1_over(void) interrupt 3        //T1溢出则无效测量,显示FFF
 122          { ET1=0;
 123   1       a1=table[15];                             
 124   1       a2=table[15];
 125   1       a3=table[15];
 126   1       display(a1,a2,a3);
 127   1       ET1=1;
 128   1      }         
 129             
 130          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    423    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13       3
   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 + -