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

📄 touch.lis

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