⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 touch.lis

📁 已经上传的YF-320240-3.5寸彩屏(可由单片机控制)的测试程序。主CPU为MEGA128
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -