📄 touchpanel.lst
字号:
C51 COMPILER V7.10 TOUCHPANEL 08/29/2005 13:02:30 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE TOUCHPANEL
OBJECT MODULE PLACED IN .\out\TOUCHPANEL.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE c\TOUCHPANEL.C BROWSE INTVECTOR(0XC000) DEBUG OBJECTEXTEND PR
-INT(.\lst\TOUCHPANEL.lst) OBJECT(.\out\TOUCHPANEL.obj)
line level source
1 /*
2 [文件名] Touch.c
3 [功 能] 8051单片机驱动ADS7846/ADS7843芯片
4 [简 介] ADS7846/7843芯片 适合用在4线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,当
5 触摸屏被按下时(即有触摸事件发生)则ADS7846向CPU发中断请求,CPU接到请求后,应延时一下再响应
6 其请求,目的是为了消除抖动使得采样更准确。如果一次采样不准确。
7 [原作者] 鞠春阳
8 [版 本] v1.1b
9 [最后修改时间] 2004年3月31日 9:11
10 [版 权] 哈尔滨众邦龙科技开发有限公司 单片机坐标网:www.mcuzb.com
11 */
12
13
14 #include "..\h\globle.h"
15 #include "intrins.h"
16 #include "..\h\touchpanel.h"
17
18 extern void Delay100uS(word);
19
20
21 void start() //SPI开始
22 {
23 1 DCLK=0;
24 1 CS=1;//???????
25 1 DIN=1;
26 1 DCLK=1;
27 1 CS=0;
28 1 }
29
30 WriteCharTo7843(byte num) //SPI写数据
31 {
32 1 byte count=0;
33 1 DCLK=0;
34 1 for(count=0;count<8;count++)
35 1 {
36 2 num<<=1;
37 2 DIN=CY;
38 2 DCLK=0; _nop_();_nop_();_nop_(); //上升沿有效
39 2 DCLK=1; _nop_();_nop_();_nop_();
40 2 }
41 1 }
42
43
44 ReadFromCharFrom7843() //SPI 读数据
45 {
46 1 byte count=0;
47 1 word Num=0;
48 1 for(count=0;count<12;count++)
49 1 {
50 2 Num<<=1;
51 2 DCLK=1; _nop_();_nop_();_nop_(); //下降沿有效
52 2 DCLK=0; _nop_();_nop_();_nop_();
53 2 if(DOUT) Num++;
54 2 }
C51 COMPILER V7.10 TOUCHPANEL 08/29/2005 13:02:30 PAGE 2
55 1 return(Num);
56 1 }
57
58 void ZhongDuan() interrupt 0 //外部中断0 用来接受键盘发来的数据
59 {
60 1 word X=0,Y=0;
61 1 //delay(10000); //中断后延时以消除抖动,使得采样数据更准确
62 1 Delay100uS(10000);
63 1 start(); //启动SPI
64 1 // while(BUSY); //如果BUSY信号不好使可以删除不用
65 1 //delay(2);
66 1 Delay100uS(100);
67 1 WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
68 1 // while(BUSY); //如果BUSY信号不好使可以删除不用
69 1 //delay(2);
70 1 Delay100uS(100);
71 1 DCLK=1; _nop_();_nop_();_nop_();_nop_();
72 1 DCLK=0; _nop_();_nop_();_nop_();_nop_();
73 1 X=ReadFromCharFrom7843();
74 1 WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
75 1 DCLK=1; _nop_();_nop_();_nop_();_nop_();
76 1 DCLK=0; _nop_();_nop_();_nop_();_nop_();
77 1 Y=ReadFromCharFrom7843();
78 1 CS=1;
79 1 }
80
81 /*
82 main()
83 {
84 TMOD=0x11; // 记数器0 计数器1 都以 16 位 记数
85 TCON=0x00;
86 IE=0x83; //1000 0001 EA=1中断允许,
87 IP=0x01;
88 while(1);
89 }
90
91 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 193 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
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 + -