📄 touch.lis
字号:
00DE .dbline 86
00DE 6830 cpi R22,8
00E0 70F3 brlo L28
00E2 .dbline 95
00E2 ; }
00E2 ; return(Num);
00E2 8A01 movw R16,R20
00E4 .dbline -2
00E4 L27:
00E4 0E940000 xcall pop_gset2
00E8 .dbline 0 ; func end
00E8 0895 ret
00EA .dbsym r Num 20 i
00EA .dbsym r count 22 c
00EA .dbend
.area vector(rom, abs)
.org 28
001C 0C947500 jmp _Touch
.area text(rom, con, rel)
00EA .dbfile F:\Relations\sf6_system\measure\LCDtest\touch.c
00EA .dbfunc e Touch _Touch fV
00EA ; i -> <dead>
00EA ; max -> R10,R11
00EA ; min -> R10,R11
00EA ; temp -> y+0
.even
00EA _Touch::
00EA 0E940000 xcall push_lset
00EE 0E940000 xcall push_gset3
00F2 2497 sbiw R28,4
00F4 .dbline -1
00F4 .dbline 99
00F4 ; }
00F4 ; #pragma interrupt_handler Touch:8
00F4 ; void Touch(void)//外部中断0 用来接受键盘发来的数据
00F4 ; {
00F4 .dbline 100
00F4 ; unsigned long temp = 0;
00F4 40E0 ldi R20,0
00F6 50E0 ldi R21,0
00F8 60E0 ldi R22,0
00FA 70E0 ldi R23,0
00FC FE01 movw R30,R28
00FE 4083 std z+0,R20
0100 5183 std z+1,R21
0102 6283 std z+2,R22
0104 7383 std z+3,R23
0106 .dbline 101
0106 ; unsigned int min=0xffff,max=0;
0106 .dbline 101
0106 AA24 clr R10
0108 BB24 clr R11
010A .dbline 103
010A ; unsigned char i;
010A ; BEEPON;
010A 80916200 lds R24,98
010E 877F andi R24,247
0110 80936200 sts 98,R24
0114 .dbline 104
0114 ; cursor.old_x = cursor.x;
0114 20900000 lds R2,_cursor
0118 30900100 lds R3,_cursor+1
011C 30920400 sts _cursor+3+1,R3
0120 20920300 sts _cursor+3,R2
0124 .dbline 105
0124 ; cursor.old_y = cursor.y;
0124 20900200 lds R2,_cursor+2
0128 20920500 sts _cursor+5,R2
012C .dbline 106
012C ; delay(100);
012C 04E6 ldi R16,100
012E 7DDF xcall _delay
0130 .dbline 107
0130 ; start();
0130 76DF xcall _start
0132 .dbline 109
0132 ; //T_CS_0;
0132 ; delay(20);
0132 04E1 ldi R16,20
0134 7ADF xcall _delay
0136 .dbline 110
0136 ; WriteCharTo7843(0x98); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
0136 08E9 ldi R16,152
0138 9FDF xcall _WriteCharTo7843
013A .dbline 111
013A ; delay(20);
013A 04E1 ldi R16,20
013C 76DF xcall _delay
013E .dbline 112
013E ; DCLK_1;
013E 949A sbi 0x12,4
0140 .dbline 113
0140 ; delay(DELAY_TOUCH);
0140 04E1 ldi R16,20
0142 73DF xcall _delay
0144 .dbline 114
0144 ; DCLK_0;
0144 9498 cbi 0x12,4
0146 .dbline 115
0146 ; delay(DELAY_TOUCH);
0146 04E1 ldi R16,20
0148 70DF xcall _delay
014A .dbline 116
014A ; cursor.y= ReadFromCharFrom7843();
014A B3DF xcall _ReadFromCharFrom7843
014C 00930200 sts _cursor+2,R16
0150 .dbline 118
0150 ;
0150 ; WriteCharTo7843(0xD8);
0150 08ED ldi R16,216
0152 92DF xcall _WriteCharTo7843
0154 .dbline 119
0154 ; DCLK_1;
0154 949A sbi 0x12,4
0156 .dbline 120
0156 ; delay(DELAY_TOUCH);
0156 04E1 ldi R16,20
0158 68DF xcall _delay
015A .dbline 121
015A ; DCLK_0;
015A 9498 cbi 0x12,4
015C .dbline 122
015C ; delay(DELAY_TOUCH);
015C 04E1 ldi R16,20
015E 65DF xcall _delay
0160 .dbline 123
0160 ; cursor.x = ReadFromCharFrom7843();
0160 A8DF xcall _ReadFromCharFrom7843
0162 10930100 sts _cursor+1,R17
0166 00930000 sts _cursor,R16
016A .dbline 127
016A ;
016A ;
016A ;
016A ; temp = 0;
016A 40E0 ldi R20,0
016C 50E0 ldi R21,0
016E 60E0 ldi R22,0
0170 70E0 ldi R23,0
0172 FE01 movw R30,R28
0174 4083 std z+0,R20
0176 5183 std z+1,R21
0178 6283 std z+2,R22
017A 7383 std z+3,R23
017C .dbline 128
017C ; Delayx10ms(8);
017C 08E0 ldi R16,8
017E 10E0 ldi R17,0
0180 5ADF xcall _Delayx10ms
0182 .dbline 129
0182 ; if(cursor.x>=15)
0182 80910000 lds R24,_cursor
0186 90910100 lds R25,_cursor+1
018A 8F30 cpi R24,15
018C E0E0 ldi R30,0
018E 9E07 cpc R25,R30
0190 50F0 brlo L39
0192 .dbline 130
0192 ; {
0192 .dbline 131
0192 ; temp = cursor.x-15;
0192 0F97 sbiw R24,15
0194 1C01 movw R2,R24
0196 4424 clr R4
0198 5524 clr R5
019A FE01 movw R30,R28
019C 2082 std z+0,R2
019E 3182 std z+1,R3
01A0 4282 std z+2,R4
01A2 5382 std z+3,R5
01A4 .dbline 132
01A4 ; }
01A4 09C0 xjmp L40
01A6 L39:
01A6 .dbline 134
01A6 ; else
01A6 ; {
01A6 .dbline 135
01A6 ; temp = 0;
01A6 40E0 ldi R20,0
01A8 50E0 ldi R21,0
01AA 60E0 ldi R22,0
01AC 70E0 ldi R23,0
01AE FE01 movw R30,R28
01B0 4083 std z+0,R20
01B2 5183 std z+1,R21
01B4 6283 std z+2,R22
01B6 7383 std z+3,R23
01B8 .dbline 136
01B8 ; }
01B8 L40:
01B8 .dbline 137
01B8 ; cursor.x = temp*320/224;
01B8 FE01 movw R30,R28
01BA 2080 ldd R2,z+0
01BC 3180 ldd R3,z+1
01BE 4280 ldd R4,z+2
01C0 5380 ldd R5,z+3
01C2 40E4 ldi R20,64
01C4 51E0 ldi R21,1
01C6 60E0 ldi R22,0
01C8 70E0 ldi R23,0
01CA 5A92 st -y,R5
01CC 4A92 st -y,R4
01CE 3A92 st -y,R3
01D0 2A92 st -y,R2
01D2 8A01 movw R16,R20
01D4 9B01 movw R18,R22
01D6 0E940000 xcall empy32u
01DA 40EE ldi R20,224
01DC 50E0 ldi R21,0
01DE 60E0 ldi R22,0
01E0 70E0 ldi R23,0
01E2 7A93 st -y,R23
01E4 6A93 st -y,R22
01E6 5A93 st -y,R21
01E8 4A93 st -y,R20
01EA 0E940000 xcall div32u
01EE 10930100 sts _cursor+1,R17
01F2 00930000 sts _cursor,R16
01F6 .dbline 138
01F6 ; if(cursor.x>320)
01F6 80E4 ldi R24,320
01F8 91E0 ldi R25,1
01FA 8017 cp R24,R16
01FC 9107 cpc R25,R17
01FE 20F4 brsh L41
0200 .dbline 139
0200 ; {
0200 .dbline 140
0200 ; cursor.x = 320;
0200 90930100 sts _cursor+1,R25
0204 80930000 sts _cursor,R24
0208 .dbline 141
0208 ; }
0208 L41:
0208 .dbline 142
0208 ; if(cursor.y>= 15)
0208 80910200 lds R24,_cursor+2
020C 8F30 cpi R24,15
020E 78F0 brlo L43
0210 .dbline 143
0210 ; {
0210 .dbline 144
0210 ; temp = cursor.y-15;
0210 9927 clr R25
0212 0F97 sbiw R24,15
0214 1C01 movw R2,R24
0216 4424 clr R4
0218 37FC sbrc R3,7
021A 4094 com R4
021C 5524 clr R5
021E 47FC sbrc R4,7
0220 5094 com R5
0222 FE01 movw R30,R28
0224 2082 std z+0,R2
0226 3182 std z+1,R3
0228 4282 std z+2,R4
022A 5382 std z+3,R5
022C .dbline 145
022C ; }
022C 09C0 xjmp L44
022E L43:
022E .dbline 147
022E ; else
022E ; {
022E .dbline 148
022E ; temp = 0;
022E 40E0 ldi R20,0
0230 50E0 ldi R21,0
0232 60E0 ldi R22,0
0234 70E0 ldi R23,0
0236 FE01 movw R30,R28
0238 4083 std z+0,R20
023A 5183 std z+1,R21
023C 6283 std z+2,R22
023E 7383 std z+3,R23
0240 .dbline 149
0240 ; }
0240 L44:
0240 .dbline 150
0240 ; cursor.y = temp*240/221;
0240 FE01 movw R30,R28
0242 2080 ldd R2,z+0
0244 3180 ldd R3,z+1
0246 4280 ldd R4,z+2
0248 5380 ldd R5,z+3
024A 40EF ldi R20,240
024C 50E0 ldi R21,0
024E 60E0 ldi R22,0
0250 70E0 ldi R23,0
0252 5A92 st -y,R5
0254 4A92 st -y,R4
0256 3A92 st -y,R3
0258 2A92 st -y,R2
025A 8A01 movw R16,R20
025C 9B01 movw R18,R22
025E 0E940000 xcall empy32u
0262 4DED ldi R20,221
0264 50E0 ldi R21,0
0266 60E0 ldi R22,0
0268 70E0 ldi R23,0
026A 7A93 st -y,R23
026C 6A93 st -y,R22
026E 5A93 st -y,R21
0270 4A93 st -y,R20
0272 0E940000 xcall div32u
0276 00930200 sts _cursor+2,R16
027A .dbline 151
027A ; if(cursor.y > 240)
027A 80EF ldi R24,240
027C 8017 cp R24,R16
027E 10F4 brsh L48
0280 .dbline 152
0280 ; {
0280 .dbline 153
0280 ; cursor.y = 240;
0280 80930200 sts _cursor+2,R24
0284 .dbline 154
0284 ; }
0284 L48:
0284 .dbline 155
0284 ; cursor.flag = 1;
0284 81E0 ldi R24,1
0286 80930600 sts _cursor+6,R24
028A .dbline 156
028A ; BEEPOFF;
028A 80916200 lds R24,98
028E 8860 ori R24,8
0290 80936200 sts 98,R24
0294 .dbline 157
0294 ; EIFR |= 0x40;
0294 88B7 in R24,0x38
0296 8064 ori R24,64
0298 88BF out 0x38,R24
029A .dbline 158
029A ; T_CS_1;
029A 969A sbi 0x12,6
029C .dbline 158
029C .dbline -2
029C L34:
029C 2496 adiw R28,4
029E 0E940000 xcall pop_gset3
02A2 0E940000 xcall pop_lset
02A6 .dbline 0 ; func end
02A6 1895 reti
02A8 .dbsym l i 1 c
02A8 .dbsym r max 10 i
02A8 .dbsym r min 10 i
02A8 .dbsym l temp 0 l
02A8 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\Relations\sf6_system\measure\LCDtest\touch.c
0000 _cursor::
0000 .blkb 7
0007 .dbstruct 0 7 Touch
0007 .dbfield 0 x i
0007 .dbfield 2 y c
0007 .dbfield 3 old_x i
0007 .dbfield 5 old_y c
0007 .dbfield 6 flag c
0007 .dbend
0007 .dbsym e cursor _cursor S[Touch]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -