📄 touch.lis
字号:
.module touch.c
.area data(ram, con, rel)
0000 _touch_count::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile F:\Relations\sf6_system\measure\LCDtest\touch.c
0001 .dbsym e touch_count _touch_count c
0001 _touch_flag::
0001 .blkb 1
.area idata
0001 01 .byte 1
.area data(ram, con, rel)
0002 .dbfile F:\Relations\sf6_system\measure\LCDtest\touch.c
0002 .dbsym e touch_flag _touch_flag c
.area text(rom, con, rel)
0000 .dbfile F:\Relations\sf6_system\measure\LCDtest\touch.c
0000 .dbfunc e Init_Touch _Init_Touch fV
.even
0000 _Init_Touch::
0000 .dbline -1
0000 .dbline 24
0000 ; #include <iom128v.h>
0000 ; #include "touch.h"
0000 ; #include <macros.h>
0000 ; #include "display.h"
0000 ; #include "lcd.h"
0000 ;
0000 ; #define DELAY_TOUCH 20
0000 ; struct Touch cursor;
0000 ;
0000 ; /*
0000 ; mega128单片机驱动ADS7846/ADS7843芯片
0000 ; ADS7846/7843芯片 适合用在4线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,当
0000 ; 触摸屏被按下时(即有触摸事件发生)则ADS7846向CPU发中断请求,CPU接到请求后,应延时一下再响应其请求,目的是为了消除抖动使得采样更准确。如果一次采样不准确。
0000 ; ADS7846 触摸屏中断 外部中断6(INT6)
0000 ; DCLK PD4
0000 ; DIN PD5
0000 ; READY PD6
0000 ; DOUT PD7
0000 ;
0000 ; */
0000 ; unsigned char touch_count = 0;
0000 ; unsigned char touch_flag = 1; //显示屏关闭时为0,打开时为1
0000 ; void Init_Touch(void)
0000 ; {
0000 .dbline 25
0000 ; DDRD |= 0x70;
0000 81B3 in R24,0x11
0002 8067 ori R24,112
0004 81BB out 0x11,R24
0006 .dbline 26
0006 ; T_CS_1;
0006 969A sbi 0x12,6
0008 .dbline 26
0008 .dbline 27
0008 ; DDRD &=~0x80;
0008 8F98 cbi 0x11,7
000A .dbline 28
000A ; PIND &= ~0x60;
000A 80B3 in R24,0x10
000C 8F79 andi R24,159
000E 80BB out 0x10,R24
0010 .dbline 29
0010 ; EIFR |= 0x40;
0010 88B7 in R24,0x38
0012 8064 ori R24,64
0014 88BF out 0x38,R24
0016 .dbline 33
0016 ; //EICRB = 0x02;
0016 ; //DDRE &= ~0x40;
0016 ; //PORTE |= 0x40;
0016 ; Touch_Int_ON;
0016 89B7 in R24,0x39
0018 8064 ori R24,64
001A 89BF out 0x39,R24
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e start _start fV
.even
001E _start::
001E .dbline -1
001E .dbline 38
001E ; //WriteCharTo7843(0x98);
001E ;
001E ; }
001E ; void start(void)
001E ; {
001E .dbline 39
001E ; DCLK_0;
001E 9498 cbi 0x12,4
0020 .dbline 40
0020 ; T_CS_1;
0020 969A sbi 0x12,6
0022 .dbline 40
0022 .dbline 41
0022 ; DIN_1;
0022 959A sbi 0x12,5
0024 .dbline 42
0024 ; DCLK_1;
0024 949A sbi 0x12,4
0026 .dbline 43
0026 ; T_CS_0;
0026 9698 cbi 0x12,6
0028 .dbline 43
0028 .dbline -2
0028 L2:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e delay _delay fV
002A ; i -> R16
.even
002A _delay::
002A .dbline -1
002A .dbline 46
002A ; }
002A ; void delay(unsigned char i)
002A ; {
002A L4:
002A .dbline 47
002A L5:
002A .dbline 47
002A ; while(i--);
002A 202E mov R2,R16
002C 3324 clr R3
002E 0150 subi R16,1
0030 2220 tst R2
0032 D9F7 brne L4
0034 .dbline -2
0034 L3:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 c
0036 .dbend
0036 .dbfunc e Delayx10ms _Delayx10ms fV
0036 ; i -> R20,R21
0036 ; j -> R22,R23
0036 ; k -> R10,R11
0036 ; count -> R16,R17
.even
0036 _Delayx10ms::
0036 0E940000 xcall push_gset3
003A .dbline -1
003A .dbline 50
003A ; }
003A ; void Delayx10ms(unsigned int count)
003A ; { unsigned int i,j,k;
003A .dbline 51
003A ; for(i=0;i<count;i++)
003A 4427 clr R20
003C 5527 clr R21
003E 16C0 xjmp L11
0040 L8:
0040 .dbline 52
0040 ; for (j=0;j<1950;j++)
0040 6627 clr R22
0042 7727 clr R23
0044 0DC0 xjmp L15
0046 L12:
0046 .dbline 53
0046 ; for (k=0;k<10;k++)
0046 AA24 clr R10
0048 BB24 clr R11
004A 03C0 xjmp L19
004C L16:
004C .dbline 54
004C L17:
004C .dbline 53
004C C501 movw R24,R10
004E 0196 adiw R24,1
0050 5C01 movw R10,R24
0052 L19:
0052 .dbline 53
0052 C501 movw R24,R10
0054 8A30 cpi R24,10
0056 E0E0 ldi R30,0
0058 9E07 cpc R25,R30
005A C0F3 brlo L16
005C L13:
005C .dbline 52
005C 6F5F subi R22,255 ; offset = 1
005E 7F4F sbci R23,255
0060 L15:
0060 .dbline 52
0060 6E39 cpi R22,158
0062 E7E0 ldi R30,7
0064 7E07 cpc R23,R30
0066 78F3 brlo L12
0068 L9:
0068 .dbline 51
0068 4F5F subi R20,255 ; offset = 1
006A 5F4F sbci R21,255
006C L11:
006C .dbline 51
006C 4017 cp R20,R16
006E 5107 cpc R21,R17
0070 38F3 brlo L8
0072 .dbline -2
0072 L7:
0072 0E940000 xcall pop_gset3
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbsym r i 20 i
0078 .dbsym r j 22 i
0078 .dbsym r k 10 i
0078 .dbsym r count 16 i
0078 .dbend
0078 .dbfunc e WriteCharTo7843 _WriteCharTo7843 fV
0078 ; count -> R20
0078 ; num -> R22
.even
0078 _WriteCharTo7843::
0078 0E940000 xcall push_gset2
007C 602F mov R22,R16
007E .dbline -1
007E .dbline 57
007E ; ;
007E ; }
007E ; void WriteCharTo7843(unsigned char num) //SPI写数据
007E ; {
007E .dbline 58
007E ; unsigned char count=0;
007E 4427 clr R20
0080 .dbline 59
0080 ; DCLK_0;
0080 9498 cbi 0x12,4
0082 .dbline 60
0082 ; delay(DELAY_TOUCH);
0082 04E1 ldi R16,20
0084 D2DF xcall _delay
0086 .dbline 61
0086 ; for(count=0;count<8;count++)
0086 0FC0 xjmp L24
0088 L21:
0088 .dbline 62
0088 ; {
0088 .dbline 63
0088 ; if(num&0x80)
0088 67FF sbrs R22,7
008A 02C0 rjmp L25
008C .dbline 64
008C ; {
008C .dbline 65
008C ; DIN_1;
008C 959A sbi 0x12,5
008E .dbline 66
008E ; }
008E 01C0 xjmp L26
0090 L25:
0090 .dbline 68
0090 ; else
0090 ; { DIN_0;
0090 .dbline 68
0090 9598 cbi 0x12,5
0092 .dbline 69
0092 ; }
0092 L26:
0092 .dbline 70
0092 660F lsl R22
0094 .dbline 71
0094 04E1 ldi R16,20
0096 C9DF xcall _delay
0098 .dbline 72
0098 949A sbi 0x12,4
009A .dbline 73
009A 04E1 ldi R16,20
009C C6DF xcall _delay
009E .dbline 74
009E 9498 cbi 0x12,4
00A0 .dbline 75
00A0 04E1 ldi R16,20
00A2 C3DF xcall _delay
00A4 .dbline 77
00A4 L22:
00A4 .dbline 61
00A4 4395 inc R20
00A6 L24:
00A6 .dbline 61
00A6 4830 cpi R20,8
00A8 78F3 brlo L21
00AA .dbline 78
00AA ; num<<=1;
00AA ; delay(DELAY_TOUCH);
00AA ; DCLK_1;
00AA ; delay(DELAY_TOUCH); //上升沿有效
00AA ; DCLK_0;
00AA ; delay(DELAY_TOUCH);
00AA ;
00AA ; }
00AA ; DIN_0;
00AA 9598 cbi 0x12,5
00AC .dbline -2
00AC L20:
00AC 0E940000 xcall pop_gset2
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbsym r count 20 c
00B2 .dbsym r num 22 c
00B2 .dbend
00B2 .dbfunc e ReadFromCharFrom7843 _ReadFromCharFrom7843 fi
00B2 ; Num -> R20,R21
00B2 ; count -> R22
.even
00B2 _ReadFromCharFrom7843::
00B2 0E940000 xcall push_gset2
00B6 .dbline -1
00B6 .dbline 83
00B6 ; }
00B6 ;
00B6 ;
00B6 ; unsigned int ReadFromCharFrom7843(void) //SPI 读数据
00B6 ; {
00B6 .dbline 84
00B6 ; unsigned char count=0;
00B6 6627 clr R22
00B8 .dbline 85
00B8 ; unsigned int Num=0;
00B8 4427 clr R20
00BA 5527 clr R21
00BC .dbline 86
00BC ; for(count=0;count<8;count++)
00BC 10C0 xjmp L31
00BE L28:
00BE .dbline 87
00BE ; {
00BE .dbline 88
00BE ; Num<<=1;
00BE 440F lsl R20
00C0 551F rol R21
00C2 .dbline 89
00C2 ; DCLK_0;
00C2 9498 cbi 0x12,4
00C4 .dbline 90
00C4 ; delay(DELAY_TOUCH); //下降沿有效
00C4 04E1 ldi R16,20
00C6 B1DF xcall _delay
00C8 .dbline 91
00C8 ; DCLK_1;
00C8 949A sbi 0x12,4
00CA .dbline 92
00CA ; delay(DELAY_TOUCH);
00CA 04E1 ldi R16,20
00CC AEDF xcall _delay
00CE .dbline 93
00CE ; if(DOUT) Num++;
00CE 80B3 in R24,0x10
00D0 8078 andi R24,128
00D2 80BB out 0x10,R24
00D4 8823 tst R24
00D6 11F0 breq L32
00D8 .dbline 93
00D8 4F5F subi R20,255 ; offset = 1
00DA 5F4F sbci R21,255
00DC L32:
00DC .dbline 94
00DC L29:
00DC .dbline 86
00DC 6395 inc R22
00DE L31:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -