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

📄 main.lst

📁 4线电阻触摸屏资料++ADS7843等控制芯片
💻 LST
字号:
C51 COMPILER V8.01   MAIN                                                                  10/10/2008 10:19:48 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          [文件名] Touch.c
   3          [功 能] 8051单片机驱动ADS7846/ADS7843芯片
   4          [简 介] ADS7846/7843芯片 适合用在4线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,
   5          当触摸屏被按下时(即有触摸事件发生)则ADS7846向CPU发中断请求,CPU接到请求后,应延时一下再
   6          响应其请求,目的是为了消除抖动使得采样更准确。如果一次采样不准确。
   7          */
   8          #include"reg51.h"
   9          #include"intrins.h"
  10          #include"math.h"
  11          
  12              sbit DCLK=P1^0;
  13              sbit CS=P1^1;
  14              sbit DIN=P1^2;
  15              sbit DOUT=P1^7;
  16          //    sbit BUSY=P2^5;
  17          
  18          void delay(unsigned char i)
  19          {
  20   1          while(i--);
  21   1      }
  22          
  23          void start() //SPI开始
  24          {
  25   1              DCLK=0;
  26   1          CS=1;
  27   1          DIN=1;
  28   1          DCLK=1;
  29   1          CS=0;
  30   1      }
  31          void WriteCharTo7843(unsigned char num) //SPI写数据
  32          {
  33   1          unsigned char count=0;
  34   1          DCLK=0;
  35   1              for(count=0;count<8;count++)
  36   1              {
  37   2              DCLK=0; _nop_();_nop_();_nop_(); //上升沿有效
  38   2              num<<=1;
  39   2              DIN=CY;
  40   2              DCLK=1; _nop_();_nop_();_nop_();
  41   2          }
  42   1      }
  43          
  44          
  45          unsigned int ReadFromCharFrom7843() //SPI 读数据
  46          {
  47   1          unsigned char count=0;
  48   1          unsigned int Num=0;
  49   1          for(count=0;count<12;count++)
  50   1          {
  51   2              Num<<=1;
  52   2              DCLK=0; _nop_();_nop_();_nop_(); //下降沿有效
  53   2              DCLK=1; _nop_();_nop_();_nop_();
  54   2              if(DOUT) Num++;
  55   2          }
C51 COMPILER V8.01   MAIN                                                                  10/10/2008 10:19:48 PAGE 2   

  56   1          return(Num);
  57   1      }
  58          
  59          void Isr_EX1() interrupt 2  using 1//外部中断0 用来接受键盘发来的数据
  60          {
  61   1          unsigned int X=0,Y=0;
  62   1          delay(10000); //中断后延时以消除抖动,使得采样数据更准确
  63   1          start(); //启动SPI
  64   1          delay(2);
  65   1          WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
  66   1          // while(BUSY); //如果BUSY信号不好使可以删除不用
  67   1          delay(2);
  68   1          DCLK=1; _nop_();_nop_();_nop_();_nop_(); 
  69   1          DCLK=0; _nop_();_nop_();_nop_();_nop_(); 
  70   1          X=ReadFromCharFrom7843();
  71   1          WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
  72   1          // while(BUSY); //如果BUSY信号不好使可以删除不用
  73   1          DCLK=1; _nop_();_nop_();_nop_();_nop_();
  74   1          DCLK=0; _nop_();_nop_();_nop_();_nop_();
  75   1          Y=ReadFromCharFrom7843();
  76   1          CS=1;
  77   1      
  78   1              SBUF = 0xaa;
  79   1              while(!TI);
  80   1              TI = 0 ;
  81   1      /*      if(X>=0x00a6 && X<=0x0140)
  82   1              {
  83   1                      if(Y>=0x00ed && Y<=0x01a0)
  84   1                      {
  85   1                              SBUF = 3;
  86   1                              while(!TI);
  87   1                              TI = 0 ;        
  88   1                      }
  89   1                      else if(Y>=0x02f0 && Y<=0x03d0)
  90   1                      {
  91   1                              SBUF = 2;
  92   1                              while(!TI);
  93   1                              TI = 0 ;                
  94   1                      }
  95   1                      else if(Y>=0x04d0 && Y<=0x05d0)
  96   1                      {
  97   1                              SBUF = 1;
  98   1                              while(!TI);
  99   1                              TI = 0 ;                
 100   1                      }
 101   1      
 102   1              }
 103   1              else if(X>=0x04c0 && X<=0x05f0)
 104   1              {
 105   1                      if(Y>=0x0450 && Y<=0x04d0)
 106   1                      {
 107   1                              SBUF = 4;
 108   1                              while(!TI);
 109   1                              TI = 0 ;        
 110   1                      }
 111   1                      else if(Y>=0x02b0 && Y<=0x03b0)
 112   1                      {
 113   1                              SBUF = 5;
 114   1                              while(!TI);
 115   1                              TI = 0 ;                
 116   1                      }
 117   1                      
C51 COMPILER V8.01   MAIN                                                                  10/10/2008 10:19:48 PAGE 3   

 118   1              }                */
 119   1              SBUF = (unsigned char)(X>>8);
 120   1              while(!TI);
 121   1              TI = 0 ;
 122   1              SBUF = (unsigned char)X;
 123   1              while(!TI);
 124   1              TI = 0 ;
 125   1      
 126   1              SBUF = (unsigned char)(Y>>8);
 127   1              while(!TI);
 128   1              TI = 0 ;
 129   1              SBUF = (unsigned char)Y;
 130   1              while(!TI);
 131   1              TI = 0 ;
 132   1      //      IE1 = 0;        
 133   1      }
 134          /*===================================                            
 135          函数功能:初始化串行通讯                                                         
 136          ====================================*/                           
 137          void iniscon()                                                                           
 138          {
 139   1              TMOD=0X20;                // GATA C/T M1 M0   GATE C/T M1 M0
 140   1      /*                                                                                      |       |       |  |___________模式控制
 141   1                                                                                              |       |       |______________ 
 142   1                                                                                              |       |__________________ 定时、计数方式选择位
 143   1                                                                                              |______________________ 门控位
 144   1                                                        
 145   1                                                        |____________|        |____________|
 146   1                                                          T1方式控制            T0方式控制
 147   1      
 148   1      */
 149   1              SCON=0X50;                // SM0 SM1 SM2 REN  TB8 RB8 TI RI
 150   1              PCON|=0X80;               // SMOD -   -   -       GF1 GF0 PD IDL
 151   1              TH1=TL1=0XFA;     //9600bps@11.0592Mhz
 152   1              TR1=1;
 153   1              TI=0;                   // 清发送完成标志
 154   1              RI=0;                   //清接收完成标志
 155   1      
 156   1              IT1=1;                  //边沿触发
 157   1              IE1=0;                  //
 158   1              EX1=1;                  //外部中断允许
 159   1      
 160   1              EA=1;     //中断控制寄存器        IE:  EA  _  _  ES ET1 EX1 ET0 EX0
 161   1      }
 162          
 163          
 164          main()
 165          {
 166   1              iniscon();   
 167   1              SBUF = 0xa5;
 168   1              while(!TI);
 169   1              TI = 0 ;
 170   1          while(1);
 171   1      }
 172          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    241    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.01   MAIN                                                                  10/10/2008 10:19:48 PAGE 4   

   DATA SIZE        =   ----    ----
   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 + -