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

📄 ocmj815b.lis

📁 OCMJ815触摸屏使用范例
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module OCMJ815B.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\项目\电子设计培训计划\MYOWNT~1.12/function.h
 0000                   .dbfunc e send _send fV
 0000           ;            dat -> R16
                        .even
 0000           _send::
 0000                   .dbline -1
 0000                   .dbline 53
 0000           ; /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
 0000           ; /*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
 0000           ; //函数名:    main()
 0000           ; //功能:      主函数,先显示一行字和X=,Y=然后判断INT是否中断,中断了再显示
 0000           ;               //触摸处内容和触摸处坐标值
 0000           ; //输入:      无
 0000           ; //输出:      无
 0000           ; //By:       李 平 2007.7.11
 0000           ; //备注:
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "Portini.h"
 0000           ; #include "function.h"
 0000           ; #include "Data.h"
 0000           ; #include "delay.h"
 0000           ; 
 0000           ; void main ()
 0000           ; {
 0000           ;    uchar j=0    ;
 0000           ;     DDRA=0XFF;
 0000           ;     DDRB=0X1e;
 0000           ;      req_clr;
 0000           ;      DDRB=0x1f;    //busy=1;
 0000           ;        busy_set;
 0000           ;      DDRB=0x1e;
 0000           ; while(1)
 0000           ;  {  
 0000           ;   disp1line(code0);          //显示一行字
 0000           ;   write(0xf9,24,0);          //显示X
 0000           ;     send(0x58);
 0000           ;   write(0xf9,24,16);         //显示Y
 0000           ;     send(0x59);
 0000           ;   write(0xf9,25,0);          //显示‘= ’
 0000           ;     send(0x3d);
 0000           ;   write(0xf9,25,16);         //显示‘= ’
 0000           ;     send(0x3d);
 0000           ;       //画横线//
 0000           ; for(j=0;j<128;j++)
 0000           ;   {
 0000           ;        write(0xf2,239,j);
 0000           ;       // send(1);
 0000           ;   }
 0000           ;  // disp_img(img);
 0000           ;     /*
 0000           ;           write(0xf9,5,16);
 0000           ;                  send(0x31);      //1
 0000           ;               write(0xf9,5,48);
 0000           ;                  send(0x32);      //2
 0000           ;               write(0xf9,5,80);
 0000           ;                  send(0x33);      //3
 0000           ;               write(0xf9,5,112);
 0000           ;                  send(0x34);      //4
 0000           ;                  
 0000           L2:
 0000                   .dbline 55
 0000           L3:
 0000                   .dbline 54
 0000           ;         write(0xf9,12,16);
 0000 26B2              in R2,0x16
 0002 3324              clr R3
 0004 20FC              sbrc R2,0
 0006 FCCF              rjmp L2
 0008                   .dbline 56
 0008           ;                  send(0x35);      //5
 0008           ;               write(0xf9,12,48);
 0008 0BBB              out 0x1b,R16
 000A                   .dbline 57
 000A           ;                  send(0x36);      //6
 000A C19A              sbi 0x18,1
 000C           L5:
 000C                   .dbline 59
 000C           L6:
 000C                   .dbline 58
 000C           ;               write(0xf9,12,80);
 000C B09B              sbis 0x16,0
 000E FECF              rjmp L5
 0010                   .dbline 60
 0010           ;                  send(0x37);      //7
 0010           ;               write(0xf9,12,112);
 0010 C198              cbi 0x18,1
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r dat 16 c
 0014                   .dbend
 0014                   .dbfunc e write _write fV
 0014           ;         addr_y -> y+4
 0014           ;         addr_x -> R20
 0014           ;           comm -> R22
                        .even
 0014           _write::
 0014 0E940000          xcall push_gset2
 0018 422F              mov R20,R18
 001A 602F              mov R22,R16
 001C                   .dbline -1
 001C                   .dbline 71
 001C           ;                  send(0x38);      //8
 001C           ;       
 001C           ;         write(0xf9,20,16);
 001C           ;                  send(0x39);      //9
 001C           ;               write(0xf9,20,48);
 001C           ;                  send(0x41);      //A
 001C           ;               write(0xf9,20,80);
 001C           ;                  send(0x42);      //B
 001C           ;               write(0xf9,20,112);
 001C           ;                  send(0x43);      //C
 001C           ;                 
 001C                   .dbline 72
 001C           ;        // write(0xf9,27,16);
 001C 062F              mov R16,R22
 001E F0DF              xcall _send
 0020                   .dbline 73
 0020           ;                 // send(0x44);      //D
 0020 042F              mov R16,R20
 0022 EEDF              xcall _send
 0024                   .dbline 74
 0024           ;               write(0xf9,27,48);
 0024 0C81              ldd R16,y+4
 0026 ECDF              xcall _send
 0028                   .dbline -2
 0028           L8:
 0028 0E940000          xcall pop_gset2
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym l addr_y 4 c
 002E                   .dbsym r addr_x 20 c
 002E                   .dbsym r comm 22 c
 002E                   .dbend
 002E                   .dbfunc e disp1line _disp1line fV
 002E           ;              i -> R20
 002E           ;            chn -> R22,R23
                        .even
 002E           _disp1line::
 002E 0E940000          xcall push_gset2
 0032 B801              movw R22,R16
 0034 2197              sbiw R28,1
 0036                   .dbline -1
 0036                   .dbline 85
 0036           ;                  send(0x45);      //E
 0036           ;               write(0xf9,27,80);
 0036           ;                  send(0x46);      //F
 0036           ;               write(0xf9,27,112);
 0036           ;                  send(0x47);      //G
 0036           ;                  
 0036           ;       //send(0xf5);              //上移一个点阵
 0036           ;       */
 0036           ;   if(!(intt))
 0036           ;      {
 0036           ;        delay_nus(10000);
 0036                   .dbline 87
 0036           ;         if(!(intt))                   
 0036           ;            {
 0036 42E0              ldi R20,2
 0038 19C0              xjmp L13
 003A           L10:
 003A                   .dbline 88
 003A                   .dbline 89
 003A 2224              clr R2
 003C 2882              std y+0,R2
 003E 242F              mov R18,R20
 0040 2250              subi R18,2
 0042 00EF              ldi R16,240
 0044 E7DF              xcall _write
 0046                   .dbline 90
 0046 82E0              ldi R24,2
 0048 849F              mul R24,R20
 004A F001              movw R30,R0
 004C 3497              sbiw R30,4
 004E E60F              add R30,R22
 0050 F71F              adc R31,R23
 0052 0081              ldd R16,z+0
 0054 005A              subi R16,160
 0056 D4DF              xcall _send
 0058                   .dbline 91
 0058 82E0              ldi R24,2
 005A 849F              mul R24,R20
 005C F001              movw R30,R0
 005E 3497              sbiw R30,4
 0060 E60F              add R30,R22
 0062 F71F              adc R31,R23
 0064 0181              ldd R16,z+1
 0066 005A              subi R16,160
 0068 CBDF              xcall _send
 006A                   .dbline 92
 006A           L11:
 006A                   .dbline 87
 006A 4395              inc R20
 006C           L13:
 006C                   .dbline 87
 006C 4E30              cpi R20,14
 006E 28F3              brlo L10
 0070                   .dbline -2
 0070           L9:
 0070 2196              adiw R28,1
 0072 0E940000          xcall pop_gset2
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbsym r i 20 c
 0078                   .dbsym r chn 22 pc
 0078                   .dbend
 0078                   .dbfunc e disp2lines _disp2lines fV
 0078           ;              i -> R20
 0078           ;            chn -> R22,R23
                        .even
 0078           _disp2lines::
 0078 0E940000          xcall push_gset2
 007C B801              movw R22,R16
 007E 2197              sbiw R28,1
 0080                   .dbline -1
 0080                   .dbline 103
 0080           ;                DDRB=0X5e;      //ip=1;
 0080           ;                int_set;        //而非clr;
 0080           ;                DDRB=0X1e;
 0080           ;                bang();
 0080           ;            }
 0080           ;      }   
 0080           ;   }
 0080           ; }
 0080           ; /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
 0080           ; /*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
 0080           ; //函数名:         bang()
 0080           ; //功能:           有触摸的时候,显示触摸处的X,Y值并执行触摸操作
 0080           ; //输入:          条件int=0
 0080           ; //输出:           无
 0080           ; //By:             李 平 2007.7.11
 0080           ; //备注:
 0080                   .dbline 105
 0080           ; void bang(void)
 0080           ; {
 0080 42E0              ldi R20,2
 0082 19C0              xjmp L18
 0084           L15:
 0084                   .dbline 106
 0084                   .dbline 107
 0084 82E0              ldi R24,2
 0086 8883              std y+0,R24
 0088 242F              mov R18,R20
 008A 2250              subi R18,2
 008C 00EF              ldi R16,240
 008E C2DF              xcall _write
 0090                   .dbline 108
 0090 82E0              ldi R24,2
 0092 849F              mul R24,R20
 0094 F001              movw R30,R0
 0096 3497              sbiw R30,4
 0098 E60F              add R30,R22
 009A F71F              adc R31,R23
 009C 0081              ldd R16,z+0
 009E 005A              subi R16,160
 00A0 AFDF              xcall _send
 00A2                   .dbline 109
 00A2 82E0              ldi R24,2
 00A4 849F              mul R24,R20
 00A6 F001              movw R30,R0
 00A8 3497              sbiw R30,4
 00AA E60F              add R30,R22
 00AC F71F              adc R31,R23
 00AE 0181              ldd R16,z+1
 00B0 005A              subi R16,160
 00B2 A6DF              xcall _send
 00B4                   .dbline 110
 00B4           L16:
 00B4                   .dbline 105
 00B4 4395              inc R20
 00B6           L18:
 00B6                   .dbline 105
 00B6 4B30              cpi R20,11
 00B8 28F3              brlo L15
 00BA                   .dbline 111
 00BA           ; unsigned int X=0,Y=0;
 00BA           ; //delay(10000);
 00BA           ; //中断后延时以消除抖动,使得采样数据更准确
 00BA           ;      spi_start(); //启动SPI
 00BA           ;          delay_nus(2);
 00BA           ;      WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
 00BA 42E0              ldi R20,2
 00BC 17C0              xjmp L22
 00BE           L19:
 00BE                   .dbline 112
 00BE                   .dbline 113
 00BE 83E0              ldi R24,3
 00C0 8883              std y+0,R24
 00C2 242F              mov R18,R20
 00C4 2250              subi R18,2
 00C6 00EF              ldi R16,240
 00C8 A5DF              xcall _write
 00CA                   .dbline 114
 00CA 82E0              ldi R24,2
 00CC 849F              mul R24,R20

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -