📄 tp.lst
字号:
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TP
OBJECT MODULE PLACED IN .\TP.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\source\TP.C BROWSE DEBUG OBJECTEXTEND LISTINCLUDE PRINT(.\TP.lst) OBJECT
-(.\TP.obj)
stmt level source
1 #include"TP_H.H"
1 =1 #include <reg52.h>
1 =2 /*--------------------------------------------------------------------------
2 =2 REG52.H
3 =2
4 =2 Header file for generic 80C52 and 80C32 microcontroller.
5 =2 Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
6 =2 All rights reserved.
7 =2 --------------------------------------------------------------------------*/
8 =2
9 =2 /* BYTE Registers */
10 =2 sfr P0 = 0x80;
11 =2 sfr P1 = 0x90;
12 =2 sfr P2 = 0xA0;
13 =2 sfr P3 = 0xB0;
14 =2 sfr PSW = 0xD0;
15 =2 sfr ACC = 0xE0;
16 =2 sfr B = 0xF0;
17 =2 sfr SP = 0x81;
18 =2 sfr DPL = 0x82;
19 =2 sfr DPH = 0x83;
20 =2 sfr PCON = 0x87;
21 =2 sfr TCON = 0x88;
22 =2 sfr TMOD = 0x89;
23 =2 sfr TL0 = 0x8A;
24 =2 sfr TL1 = 0x8B;
25 =2 sfr TH0 = 0x8C;
26 =2 sfr TH1 = 0x8D;
27 =2 sfr IE = 0xA8;
28 =2 sfr IP = 0xB8;
29 =2 sfr SCON = 0x98;
30 =2 sfr SBUF = 0x99;
31 =2
32 =2 /* 8052 Extensions */
33 =2 sfr T2CON = 0xC8;
34 =2 sfr RCAP2L = 0xCA;
35 =2 sfr RCAP2H = 0xCB;
36 =2 sfr TL2 = 0xCC;
37 =2 sfr TH2 = 0xCD;
38 =2
39 =2
40 =2 /* BIT Registers */
41 =2 /* PSW */
42 =2 sbit CY = PSW^7;
43 =2 sbit AC = PSW^6;
44 =2 sbit F0 = PSW^5;
45 =2 sbit RS1 = PSW^4;
46 =2 sbit RS0 = PSW^3;
47 =2 sbit OV = PSW^2;
48 =2 sbit P = PSW^0; //8052 only
49 =2
50 =2 /* TCON */
51 =2 sbit TF1 = TCON^7;
52 =2 sbit TR1 = TCON^6;
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 2
53 =2 sbit TF0 = TCON^5;
54 =2 sbit TR0 = TCON^4;
55 =2 sbit IE1 = TCON^3;
56 =2 sbit IT1 = TCON^2;
57 =2 sbit IE0 = TCON^1;
58 =2 sbit IT0 = TCON^0;
59 =2
60 =2 /* IE */
61 =2 sbit EA = IE^7;
62 =2 sbit ET2 = IE^5; //8052 only
63 =2 sbit ES = IE^4;
64 =2 sbit ET1 = IE^3;
65 =2 sbit EX1 = IE^2;
66 =2 sbit ET0 = IE^1;
67 =2 sbit EX0 = IE^0;
68 =2
69 =2 /* IP */
70 =2 sbit PT2 = IP^5;
71 =2 sbit PS = IP^4;
72 =2 sbit PT1 = IP^3;
73 =2 sbit PX1 = IP^2;
74 =2 sbit PT0 = IP^1;
75 =2 sbit PX0 = IP^0;
76 =2
77 =2 /* P3 */
78 =2 sbit RD = P3^7;
79 =2 sbit WR = P3^6;
80 =2 sbit T1 = P3^5;
81 =2 sbit T0 = P3^4;
82 =2 sbit INT1 = P3^3;
83 =2 sbit INT0 = P3^2;
84 =2 sbit TXD = P3^1;
85 =2 sbit RXD = P3^0;
86 =2
87 =2 /* SCON */
88 =2 sbit SM0 = SCON^7;
89 =2 sbit SM1 = SCON^6;
90 =2 sbit SM2 = SCON^5;
91 =2 sbit REN = SCON^4;
92 =2 sbit TB8 = SCON^3;
93 =2 sbit RB8 = SCON^2;
94 =2 sbit TI = SCON^1;
95 =2 sbit RI = SCON^0;
96 =2
97 =2 /* P1 */
98 =2 sbit T2EX = P1^1; // 8052 only
99 =2 sbit T2 = P1^0; // 8052 only
100 =2
101 =2 /* T2CON */
102 =2 sbit TF2 = T2CON^7;
103 =2 sbit EXF2 = T2CON^6;
104 =2 sbit RCLK = T2CON^5;
105 =2 sbit TCLK = T2CON^4;
106 =2 sbit EXEN2 = T2CON^3;
107 =2 sbit TR2 = T2CON^2;
108 =2 sbit C_T2 = T2CON^1;
109 =2 sbit CP_RL2 = T2CON^0;
2 =1
3 =1 #define uint unsigned int
4 =1 #define ulong unsigned long int
5 =1 #define uchar unsigned char
6 =1
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 3
7 =1 sfr P4 = 0xe8;
8 =1 sbit P40=P4^0;
9 =1 sbit P41=P4^1;
10 =1 sbit P42=P4^2;
11 =1
12 =1 #define TP_MODE 0x80
13 =1
14 =1 sbit TP_DCLK = P1^0;
15 =1 sbit TP_DIN = P1^1;
16 =1 sbit TP_BUSY = P1^5;
17 =1 sbit TP_DOUT = P1^6;
18 =1 sbit TP_INT = P3^2;
19 =1
20 =1 unsigned int TP_X,TP_Y;
21 =1 bit TP_FLAG;
22 =1
23 =1 /*----------------------------------------------------------------
24 =1 TP_SUB program
25 =1 -----------------------------------------------------------------*/
26 =1 uint ReadFromCharFrom7843(void);
27 =1 void WriteCharTo7843(unsigned char num);
28 =1
29 =1 void tp_cs(bit flag);
30 =1 unsigned int tp_read(unsigned char a);
31 =1 uint *TP_XY_READ(void);
32 =1
33 =1 /*----------------------------------------------------------------
34 =1 DELAY program
35 =1 -----------------------------------------------------------------*/
36 =1 extern void delay5us(uint utimes); //5uS*utimes IN 12MHZ
37 =1 extern void delay10ms(uint mtimes); //10MS*mtimes IN 12MHZ
2
3
4 /*------------------------------------------------------------------
5 TP READ USE INT SUB
6
7 ------------------------------------------------------------------*/
8
9 void TP_INIT(void)
10 {
11 1 EA=0;
12 1 EX0=1;
13 1 // IT0=1;
14 1 // IE0=0;
15 1 // IP=0x00;
16 1 EA=1;
17 1 TP_FLAG=1;
18 1 }
19
20
21 void tp_cs(bit flag)
22 { if(flag==0)
23 1 { P40=0;
24 2 P41=1;
25 2 P42=0;
26 2 }
27 1 else
28 1 { P40=1;
29 2 P41=1;
30 2 P42=1;
31 2 }
32 1 }
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 4
33
34 void start(void) //SPI开始
35 {
36 1 TP_DCLK=0;
37 1 TP_DIN=0;
38 1 tp_cs(0);
39 1 delay5us(1);
40 1 TP_DOUT=1;
41 1 }
42
43 void WriteCharTo7843(unsigned char num) //SPI写数据
44 {
45 1 unsigned char count;
46 1 for(count=0;count<8;count++)
47 1 { if(num&0x80)
48 2 { TP_DIN=1;
49 3 }
50 2 else
51 2 { TP_DIN=0;
52 3 }
53 2 TP_DCLK=1; //xia升沿有效
54 2 // delay5us(1);
55 2 TP_DCLK=0;
56 2 // delay5us(1);
57 2 num=num<<1;
58 2 }
59 1 TP_DIN=0;
60 1 TP_DCLK=1;
61 1 TP_DCLK=0;
62 1 }
63
64 uint ReadFromCharFrom7843(void) //SPI 读数据
65 {
66 1 unsigned char count=0;
67 1 unsigned int Num=0;
68 1 for(count=0;count<12;count++)
69 1 {
70 2 Num<<=1;
71 2
72 2
73 2 // delay5us(1);
74 2 if(TP_DOUT) Num++;
75 2 // delay5us(1);
76 2 TP_DCLK=1;
77 2 TP_DCLK=0;
78 2 // delay5us(1);
79 2 }
80 1 for(count=0;count<3;count++)
81 1 { TP_DCLK=1;
82 2 TP_DCLK=0;
83 2 }
84 1 return(Num);
85 1 }
86
87 void TP_ZHONGDUAN() interrupt 0 using 3 //TP_INT SUB PROGRAM INTERFACE:P3.2 EX0 REGISTER:03
88 {
89 1
90 1
91 1 EA=0;
92 1 /*
93 1 TP_X=0;
94 1 TP_Y=0;
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 5
95 1 delay5us(100); //中断后延时以消除抖动,使得采样数据更准确
96 1
97 1 start(); //启动SPI
98 1 WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
99 1 TP_BUSY=1;
100 1 while(TP_BUSY);//wait for TP not busy.
101 1 TP_Y=ReadFromCharFrom7843(); //读X轴坐标
102 1 TP_BUSY=1;
103 1 while(TP_BUSY);
104 1 tp_cs(1);
105 1
106 1 start(); //启动SPI
107 1 WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
108 1 TP_BUSY=1;
109 1 while(TP_BUSY);//wait for TP not busy.
110 1 TP_X=ReadFromCharFrom7843(); //读Y轴坐标
111 1 TP_BUSY=1;
112 1 while(TP_BUSY);
113 1 tp_cs(1);
114 1 */
115 1 TP_FLAG=1;
116 1 EA=1;
117 1 }
118
119
120 uint *TP_XY_READ(void)
121 { uint XY_VALUE[2]={0,0};
122 1 if(TP_FLAG);//等待触摸中断
123 1 { EA=0;
124 2 TP_FLAG=0;
125 2 TP_X=0;
126 2 TP_Y=0;
127 2 delay5us(100); //中断后延时以消除抖动,使得采样数据更准确
128 2
129 2 start(); //启动SPI
130 2 WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
131 2 // TP_BUSY=1;
132 2 // while(TP_BUSY);//wait for TP not busy.
133 2 TP_Y=ReadFromCharFrom7843(); //读y轴坐标
134 2 // TP_BUSY=1;
135 2 // while(TP_BUSY);
136 2 tp_cs(1);
137 2
138 2 start(); //启动SPI
139 2 WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
140 2 // TP_BUSY=1;
141 2 // while(TP_BUSY);//wait for TP not busy.
142 2 TP_X=ReadFromCharFrom7843(); //读x轴坐标
143 2 // TP_BUSY=1;
144 2 // while(TP_BUSY);
145 2 tp_cs(1);
146 2 XY_VALUE[0]=(TP_X-300)/14;
147 2
148 2 XY_VALUE[1]=(TP_Y-300)/10;
149 2
150 2 EA=1;
151 2 }
152 1
153 1 return(XY_VALUE);
154 1 }
155
156
C51 COMPILER V7.01 TP 11/16/2007 15:52:12 PAGE 6
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 250 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 4
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -