色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S3C2440之觸摸屏

          S3C2440之觸摸屏

          作者: 時間:2016-11-27 來源:網絡 收藏
          Test_Touchpanel.c實現(xiàn)檢測觸點坐標
          1. #defineREQCNT30
          2. #defineADCPRS9//YH0627
          3. #defineLOOP1
          4. void__irqAdcTsAuto(void);
          5. intcount=0;
          6. volatileintxdata,ydata;
          7. voidTest_Touchpanel(void)
          8. {
          9. rADCDLY=50000;//Normalconversionmodedelayabout(1/3.6864M)*50000=13.56ms
          10. rADCCON=(1<<14)+(ADCPRS<<6);//ADCPRSEn,ADCPRSValue
          11. Uart_Printf("ADCtouchscreentest");
          12. rADCTSC=0xd3;//[0:7]Wfait,XP_PU(在等待中斷模式下,上拉電阻要有效),XP_Dis,XM_Dis,YP_Dis,YM_En
          13. pISR_ADC=(int)AdcTsAuto;
          14. rINTMSK=~BIT_ADC;//ADCTouchScreenMaskbitclear,enableADCint
          15. rINTSUBMSK=~(BIT_SUB_TC);//enablesubADCint
          16. Uart_Printf("Typeanykeytoexit!!!");
          17. Uart_Printf("StylusDown,please......");
          18. Uart_Getch();
          19. rINTSUBMSK|=BIT_SUB_TC;//getakeythenmasksubADCint;exit
          20. rINTMSK|=BIT_ADC;//maskADCint
          21. Uart_Printf("TouchScreenTestisFinished!!!");
          22. }
          23. void__irqAdcTsAuto(void)
          24. {
          25. inti;
          26. U32saveAdcdly;
          27. if(rADCDAT0&0x8000)
          28. {
          29. //Uart_Printf("StylusUp!!");
          30. rADCTSC&=0xff;//Setstylusdowninterruptbit
          31. }
          32. //else
          33. //Uart_Printf("StylusDown!!");
          34. rADCTSC=(1<<3)|(1<<2);//Pull-updisable,(在觸發(fā)中斷后,上拉電阻要無效)Seq.X,Ypostionmeasure.
          35. saveAdcdly=rADCDLY;//saveADCDLY(啟動延時)
          36. rADCDLY=40000;//Normalconversionmodedelayabout(1/50M)*40000=0.8ms
          37. rADCCON|=0x1;//startADC
          38. while(rADCCON&0x1);//checkifEnable_startislow,轉換開啟結束
          39. while(!(rADCCON&0x8000));//checkifEC(EndofConversion)flagishigh,Thislineisnecessary~!!
          40. //conversionover
          41. while(!(rSRCPND&(BIT_ADC)));//checkifADCisfinishedwithinterruptbit,等待中斷清零?
          42. xdata=(rADCDAT0&0x3ff);
          43. ydata=(rADCDAT1&0x3ff);//讀取轉換結果,x軸坐標值放入rADCDAT0,y軸坐標值放入ADCDAT1
          44. //YH0627,TocheckStylusUpInterrupt.
          45. rSUBSRCPND|=BIT_SUB_TC;
          46. ClearPending(BIT_ADC);//清楚中斷標志位
          47. rINTSUBMSK=~(BIT_SUB_TC);//使能中斷?
          48. rINTMSK=~(BIT_ADC);
          49. rADCTSC=0xd3;//Waitingforinterrupt//[0:7]Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En
          50. rADCTSC=rADCTSC|(1<<8);//Detecttylusupsinterruptsignal.檢查觸筆抬起中斷
          51. while(1)//tocheckPen-upstate
          52. {
          53. if(rSUBSRCPND&(BIT_SUB_TC))//checkifADCisfinishedwithinterruptbit
          54. {
          55. //Uart_Printf("StylusUpInterrupt~!");//觸筆抬起!
          56. break;//ifStylusisup(1)state
          57. }
          58. }
          59. Uart_Printf("count=dXP=d,YP=d",count++,xdata,ydata);//X-positionConversiondata
          60. rADCDLY=saveAdcdly;//恢復ADCDLY原值
          61. rADCTSC=rADCTSC&~(1<<8);//DetectstylusDowninterruptsignal.檢查觸筆落下中斷(下一次檢測)
          62. rSUBSRCPND|=BIT_SUB_TC;
          63. rINTSUBMSK=~(BIT_SUB_TC);//Unmasksubinterrupt(TC)//使能中斷
          64. ClearPending(BIT_ADC);
          65. }

          效果圖:

          本文引用地址:http://cafeforensic.com/article/201611/322378.htm
          上一頁 1 2 下一頁

          關鍵詞: S3C2440觸摸

          評論


          相關推薦

          技術專區(qū)

          關閉