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

📄 touch.lst

📁 制袋机程序.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.09   TOUCH                                                                 04/21/2010 21:14:13 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE TOUCH
OBJECT MODULE PLACED IN E:\项目\制袋机\程序\制袋机~1\TOUCH.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\项目\制袋机\程序\制袋机~1\TOUCH.C DB SB OE

line level    source

   1          /***************************************
   2          * 文件名:TOUCH.c
   3          * 描述:
   4          * 最后修改时间:2010.4.7
   5          ****************************************/
   6          
   7          #include "includes.h"
   8          
   9          #define XZERO 160
  10          #define YZERO 263
  11          #define XFULL 3919
  12          #define YFULL 3764
  13          
  14          static uint xdata temp_x[10];
  15          static uint xdata temp_y[10];
  16          
  17          
  18          //====================================================================================
  19          //函数名称:uint average(uint* a,uchar len)
  20          //函数功能:数据处理程序,采集len次的数据,去掉最大值,去掉最小值,然后求平均
  21          //入口参数:数组首地址
  22          //出口参数:平均值
  23          //====================================================================================
  24          uint average(uint * a,uchar len)
  25          {
  26   1        uint max,min,i,ave=0;
  27   1        ulong sum=0;
  28   1        max=a[0];
  29   1        min=a[0];
  30   1        for(i=0;i<len;i++)
  31   1        {
  32   2          if(max<a[i])
  33   2            max=a[i];
  34   2          if(min>a[i])
  35   2            min=a[i];
  36   2            sum+=a[i];
  37   2        }
  38   1        ave=(sum-min-max)/(len-2);
  39   1        return ave;
  40   1      }
  41          
  42          bool TOUCH_IsReleased()
  43          {
  44   1        PENIRQ = 1;
  45   1        if(PENIRQ)
  46   1          return true;
  47   1        else
  48   1          return false;
  49   1      }
  50          
  51          void Update_TouchPoint()
  52          {
  53   1        uint temp;
  54   1        temp = average(temp_x, 10);
  55   1        g_Status.x  = (uint)((float)temp *0.21075 - 31.296);
C51 COMPILER V8.09   TOUCH                                                                 04/21/2010 21:14:13 PAGE 2   

  56   1        temp = average(temp_y, 10);
  57   1        g_Status.y  = (uint)((float)temp*0.17346 - 59.41);
  58   1      }
  59          
  60          //====================================================================================
  61          //函数名称:void ADS7843_start(void)
  62          //函数功能:ADS7843启动
  63          //入口参数:无
  64          //出口参数:无
  65          //====================================================================================
  66          void ADS7843_start(void)
  67          {
  68   1        DCLK=0;
  69   1        CS=1;
  70   1        DIN=1;
  71   1        DCLK=1;
  72   1        CS=0;
  73   1      }
  74          
  75          //====================================================================================
  76          //函数名称:void ADS7843_wr(uchar dat)
  77          //函数功能:写ADS7843
  78          //入口参数:dat 写入的数据
  79          //出口参数:无
  80          //====================================================================================
  81          void ADS7843_wr(uchar dat)
  82          {
  83   1        bit temp;
  84   1        uchar i;
  85   1        DCLK=0;
  86   1        for(i=0;i<8;i++)
  87   1        {
  88   2          DCLK=0;
  89   2          temp=(bit)((dat) & 0x80);     //DCLK低电平时准备数据
  90   2          dat=dat<<1;
  91   2          DIN=temp;
  92   2          delay_us(2);//_nop_();
  93   2          DCLK=1;
  94   2          delay_us(2);//_nop_();
  95   2        }
  96   1        DCLK=0;
  97   1      }
  98          
  99          //====================================================================================
 100          //函数名称:uint ADS7843_rd(void)
 101          //函数功能:读ADS7843
 102          //入口参数:无
 103          //出口参数:读回的坐标值
 104          //====================================================================================
 105          uint ADS7843_rd(void)
 106          {
 107   1        uchar i;
 108   1        uint dat=0;
 109   1        for(i=0;i<16;i++)
 110   1        {
 111   2          DCLK=1;
 112   2          delay_us(3);//下降沿有效
 113   2          DCLK=0;
 114   2          delay_us(3);
 115   2          DOUT=1;
 116   2          if(DOUT)
 117   2            dat++;
C51 COMPILER V8.09   TOUCH                                                                 04/21/2010 21:14:13 PAGE 3   

 118   2          if(i<15)
 119   2            dat<<=1;
 120   2          //delay_us(2);
 121   2        }
 122   1        dat=(dat&0xFFF0)>>4;
 123   1        return dat;
 124   1      }
 125          //====================================================================================
 126          
 127          void TOUCH_INIT()
 128          {
 129   1        INT0=1;//INT1输出高电平
 130   1        IE0=0;//中断标志位清零
 131   1        IT0=1;//下降沿触发
 132   1        EX0=1;//INT1打开
 133   1      
 134   1        ADS7843_start();
 135   1        ADS7843_wr(0x94);//送控制字 10010000 即用差分方式读X坐标
 136   1        delay_us(200);
 137   1        ADS7843_rd(); //读X轴坐标
 138   1      }
 139          
 140          //====================================================================================
 141          //函数名称:void intr0_ISR()
 142          //函数功能:外中断0中断服务函数
 143          //入口参数:无
 144          //出口参数:无
 145          //====================================================================================
 146          
 147          void intr0_ISR() interrupt 0
 148          {
 149   1        uchar i;
 150   1        EA=0;//关中断

⌨️ 快捷键说明

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