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

📄 ocmj815b.lst

📁 OCMJ815触摸屏使用范例
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0078) 		write(0xf9,27,112);
(0079) 		   send(0x47);      //G
(0080) 		   
(0081) 	//send(0xf5);              //上移一个点阵
(0082) 	*/
(0083)   if(!(intt))
    0347 99B6      SBIC	0x16,6
    0348 C00B      RJMP	0x0354
(0084)      {
(0085)        delay_nus(10000);
    0349 E100      LDI	R16,0x10
    034A E217      LDI	R17,0x27
    034B DF79      RCALL	_delay_nus
(0086)         if(!(intt))                   
    034C 99B6      SBIC	0x16,6
    034D C006      RJMP	0x0354
(0087)            {
(0088)                DDRB=0X5e;      //ip=1;
    034E E58E      LDI	R24,0x5E
    034F BB87      OUT	0x17,R24
(0089)                int_set;        //而非clr;
    0350 9AC6      SBI	0x18,6
(0090)                DDRB=0X1e;
    0351 E18E      LDI	R24,0x1E
    0352 BB87      OUT	0x17,R24
(0091)                bang();
    0353 D003      RCALL	_bang
    0354 CFCA      RJMP	0x031F
    0355 9621      ADIW	R28,1
    0356 9508      RET
_bang:
  Y                    --> R22
  X                    --> R20
    0357 940E044D  CALL	push_gset2
(0092)            }
(0093)      }   
(0094)   }
(0095) }
(0096) /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
(0097) /*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
(0098) //函数名:         bang()
(0099) //功能:           有触摸的时候,显示触摸处的X,Y值并执行触摸操作
(0100) //输入:          条件int=0
(0101) //输出:           无
(0102) //By:             李 平 2007.7.11
(0103) //备注:
(0104) void bang(void)
(0105) {
(0106) unsigned int X=0,Y=0;
    0359 2744      CLR	R20
    035A 2755      CLR	R21
    035B 2766      CLR	R22
    035C 2777      CLR	R23
(0107) //delay(10000);
(0108) //中断后延时以消除抖动,使得采样数据更准确
(0109)      spi_start(); //启动SPI
    035D DEE3      RCALL	_spi_start
(0110)          delay_nus(2);
    035E E002      LDI	R16,2
    035F E010      LDI	R17,0
    0360 DF64      RCALL	_delay_nus
(0111)      WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
    0361 E900      LDI	R16,0x90
    0362 DEE4      RCALL	_WriteCharTo7843
(0112)          delay_nus(2);
    0363 E002      LDI	R16,2
    0364 E010      LDI	R17,0
    0365 DF5F      RCALL	_delay_nus
(0113)      clk_set;
    0366 9AC2      SBI	0x18,2
(0114) 			asm("nop");
    0367 0000      NOP
(0115) 			asm("nop");
    0368 0000      NOP
(0116) 			asm("nop");
    0369 0000      NOP
(0117)      clk_clr;
    036A 98C2      CBI	0x18,2
(0118) 			asm("nop");
    036B 0000      NOP
(0119) 			asm("nop");
    036C 0000      NOP
(0120) 			asm("nop");
    036D 0000      NOP
(0121)      X=ReadFromCharFrom7843();  //读X轴坐标
    036E DEF1      RCALL	_ReadFromCharFrom7843
    036F 01A8      MOVW	R20,R16
(0122)      WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
    0370 ED00      LDI	R16,0xD0
    0371 DED5      RCALL	_WriteCharTo7843
(0123)      clk_set;
    0372 9AC2      SBI	0x18,2
(0124) 			asm("nop");
    0373 0000      NOP
(0125) 			asm("nop");
    0374 0000      NOP
(0126) 			asm("nop");
    0375 0000      NOP
(0127)      clk_clr;
    0376 98C2      CBI	0x18,2
(0128) 			asm("nop");
    0377 0000      NOP
(0129) 			asm("nop");
    0378 0000      NOP
(0130) 			asm("nop");
    0379 0000      NOP
(0131)      Y=ReadFromCharFrom7843();  //读Y轴坐标
    037A DEE5      RCALL	_ReadFromCharFrom7843
    037B 01B8      MOVW	R22,R16
(0132)      cs_set;
    037C 9AC3      SBI	0x18,3
(0133)          DDRB=0X5e;    //ip=1;
    037D E58E      LDI	R24,0x5E
    037E BB87      OUT	0x17,R24
(0134)          int_set;
    037F 9AC6      SBI	0x18,6
(0135)          DDRB=0x1e;
    0380 E18E      LDI	R24,0x1E
    0381 BB87      OUT	0x17,R24
(0136)     tabx[0]=(X/1000);
    0382 EE28      LDI	R18,0xE8
    0383 E033      LDI	R19,3
    0384 018A      MOVW	R16,R20
    0385 940E0417  CALL	div16u
    0387 930002AD  STS	tabx,R16
(0137)     tabx[1]=(X-tabx[0]*1000)/100;
    0389 2F20      MOV	R18,R16
    038A 2733      CLR	R19
    038B EE08      LDI	R16,0xE8
    038C E013      LDI	R17,3
    038D 940E0431  CALL	empy16s
    038F 0118      MOVW	R2,R16
    0390 018A      MOVW	R16,R20
    0391 1902      SUB	R16,R2
    0392 0913      SBC	R17,R3
    0393 E624      LDI	R18,0x64
    0394 E030      LDI	R19,0
    0395 940E0417  CALL	div16u
    0397 930002AE  STS	tabx+1,R16
(0138)     tabx[2]=(X-tabx[0]*1000-tabx[1]*100)/10;
    0399 912002AD  LDS	R18,tabx
    039B 2733      CLR	R19
    039C EE08      LDI	R16,0xE8
    039D E013      LDI	R17,3
    039E 940E0431  CALL	empy16s
    03A0 0118      MOVW	R2,R16
    03A1 018A      MOVW	R16,R20
    03A2 1902      SUB	R16,R2
    03A3 0913      SBC	R17,R3
    03A4 902002AE  LDS	R2,tabx+1
    03A6 E684      LDI	R24,0x64
    03A7 9D82      MUL	R24,R2
    03A8 1900      SUB	R16,R0
    03A9 0911      SBC	R17,R1
    03AA E02A      LDI	R18,0xA
    03AB E030      LDI	R19,0
    03AC 940E0417  CALL	div16u
    03AE 930002AF  STS	tabx+2,R16
(0139)     tabx[3]=(X-tabx[0]*1000-tabx[1]*100-tabx[2]*10);
    03B0 912002AD  LDS	R18,tabx
    03B2 2733      CLR	R19
    03B3 EE08      LDI	R16,0xE8
    03B4 E013      LDI	R17,3
    03B5 940E0431  CALL	empy16s
    03B7 011A      MOVW	R2,R20
    03B8 1A20      SUB	R2,R16
    03B9 0A31      SBC	R3,R17
    03BA 904002AE  LDS	R4,tabx+1
    03BC E684      LDI	R24,0x64
    03BD 9D84      MUL	R24,R4
    03BE 1820      SUB	R2,R0
    03BF 0831      SBC	R3,R1
    03C0 904002AF  LDS	R4,tabx+2
    03C2 E08A      LDI	R24,0xA
    03C3 9D84      MUL	R24,R4
    03C4 1820      SUB	R2,R0
    03C5 0831      SBC	R3,R1
    03C6 922002B0  STS	tabx+3,R2
(0140)     taby[0]=(Y/1000);
    03C8 EE28      LDI	R18,0xE8
    03C9 E033      LDI	R19,3
    03CA 018B      MOVW	R16,R22
    03CB 940E0417  CALL	div16u
    03CD 930002A9  STS	taby,R16
(0141)     taby[1]=(Y-taby[0]*1000)/100;
    03CF 2F20      MOV	R18,R16
    03D0 2733      CLR	R19
    03D1 EE08      LDI	R16,0xE8
    03D2 E013      LDI	R17,3
    03D3 940E0431  CALL	empy16s
    03D5 0118      MOVW	R2,R16
    03D6 018B      MOVW	R16,R22
    03D7 1902      SUB	R16,R2
    03D8 0913      SBC	R17,R3
    03D9 E624      LDI	R18,0x64
    03DA E030      LDI	R19,0
    03DB 940E0417  CALL	div16u
    03DD 930002AA  STS	taby+1,R16
(0142)     taby[2]=(Y-taby[0]*1000-taby[1]*100)/10;
    03DF 912002A9  LDS	R18,taby
    03E1 2733      CLR	R19
    03E2 EE08      LDI	R16,0xE8
    03E3 E013      LDI	R17,3
    03E4 940E0431  CALL	empy16s
    03E6 0118      MOVW	R2,R16
    03E7 018B      MOVW	R16,R22
    03E8 1902      SUB	R16,R2
    03E9 0913      SBC	R17,R3
    03EA 902002AA  LDS	R2,taby+1
    03EC E684      LDI	R24,0x64
    03ED 9D82      MUL	R24,R2
    03EE 1900      SUB	R16,R0
    03EF 0911      SBC	R17,R1
    03F0 E02A      LDI	R18,0xA
    03F1 E030      LDI	R19,0
    03F2 940E0417  CALL	div16u
    03F4 930002AB  STS	taby+2,R16
(0143)     taby[3]=(Y-taby[0]*1000-taby[1]*100-taby[2]*10);
    03F6 912002A9  LDS	R18,taby
    03F8 2733      CLR	R19
    03F9 EE08      LDI	R16,0xE8
    03FA E013      LDI	R17,3
    03FB 940E0431  CALL	empy16s
    03FD 011B      MOVW	R2,R22
    03FE 1A20      SUB	R2,R16
    03FF 0A31      SBC	R3,R17
    0400 904002AA  LDS	R4,taby+1
    0402 E684      LDI	R24,0x64
    0403 9D84      MUL	R24,R4
    0404 1820      SUB	R2,R0
    0405 0831      SBC	R3,R1
    0406 904002AB  LDS	R4,taby+2
    0408 E08A      LDI	R24,0xA
    0409 9D84      MUL	R24,R4
    040A 1820      SUB	R2,R0
    040B 0831      SBC	R3,R1
    040C 922002AC  STS	taby+3,R2
(0144)    /*   if(X>3000)
(0145)         if(Y>2600)
(0146)           disp2lines(code1);
(0147)       if(X<2500)
(0148)         if(X>1600)
(0149)            if(Y>2600)
(0150)               disp_img(img);
(0151)       if(X<1600)
(0152)         if(Y>2600)
(0153)            disp1line(code2);
(0154)       if(Y<2600)
(0155)         send(0xf4);
(0156) 	*/
(0157) 	
(0158) 	/*
(0159) 	if(X>3000)
(0160) 	  if(Y>3000)
(0161) 	   {
(0162) 	    write(0xf1,2,20);
(0163) 		send(0x31);      //1
(0164) 	   }
(0165) 	 if(X>2000&&X<3000)
(0166) 	   if(Y>3000)
(0167) 	     {
(0168) 	       write(0xf1,2,52);
(0169) 		   send(0x32);      //2
(0170) 		 }
(0171) 	 if(X>1000&&X<2000)
(0172) 	   if(Y>3000)
(0173) 	     {
(0174) 	       write(0xf1,2,84);
(0175) 		   send(0x33);      //3
(0176) 		 }
(0177) 	 if(X>0&&X<1000)
(0178) 	   if(Y>3000)
(0179) 	     {
(0180) 	       write(0xf1,2,116);
(0181) 		   send(0x34);      //4
(0182) 		 }		 
(0183) 		 
(0184) 		 
(0185) 	if(X>3000)
(0186) 	  if(Y<3000&&Y>2000)
(0187) 	   {
(0188) 	    write(0xf1,9,20);
(0189) 		send(0x35);      //5
(0190) 	   }
(0191) 	 if(X>2000&&X<3000)
(0192) 	  if(Y<3000&&Y>2000)
(0193) 	     {
(0194) 	       write(0xf1,9,52);
(0195) 		   send(0x36);      //6
(0196) 		 }
(0197) 	 if(X>1000&&X<2000)
(0198) 	  if(Y<3000&&Y>2000)
(0199) 	     {
(0200) 	       write(0xf1,9,84);
(0201) 		   send(0x37);      //7
(0202) 		 }
(0203) 	 if(X>0&&X<1000)
(0204) 	  if(Y<3000&&Y>2000)
(0205) 	     {
(0206) 	       write(0xf1,9,116);
(0207) 		   send(0x38);      //8
(0208) 		 }		
(0209) 		 
(0210) 	if(X>3000)
(0211) 	  if(Y<2000&&Y>1000)
(0212) 	   {
(0213) 	    write(0xf1,17,20);
(0214) 		send(0x39);      //9
(0215) 	   }
(0216) 	 if(X>2000&&X<3000)
(0217) 	  if(Y<2000&&Y>1000)
(0218) 	     {
(0219) 	       write(0xf1,17,52);
(0220) 		   send(0x41);      //A
(0221) 		 }
(0222) 	 if(X>1000&&X<2000)
(0223) 	  if(Y<2000&&Y>1000)
(0224) 	     {
(0225) 	       write(0xf1,17,84);
(0226) 		   send(0x42);      //B
(0227) 		 }
(0228) 	 if(X>0&&X<1000)
(0229) 	  if(Y<2000&&Y>1000)
(0230) 	     {
(0231) 	       write(0xf1,17,116);
(0232) 		   send(0x43);      //C
(0233) 		 }		
(0234) 
(0235) 	/*if(X>3000)
(0236) 	  if(Y<1000&&Y>0)
(0237) 	   {
(0238) 	    write(0xf1,24,20);
(0239) 		send(0x44);      //d
(0240) 	   }
(0241) 	
(0242) 	 if(X>2000&&X<3000)
(0243) 	  if(Y<1000&&Y>0)
(0244) 	     {
(0245) 	       write(0xf1,24,52);
(0246) 		   send(0x45);      //e
(0247) 		 }
(0248) 	 if(X>1000&&X<2000)
(0249) 	   if(Y<1000&&Y>0)
(0250) 	     {
(0251) 	       write(0xf1,24,84);
(0252) 		   send(0x46);      //f
(0253) 		 }
(0254) 	 if(X>0&&X<1000)
(0255) 	  if(Y<1000&&Y>0)
(0256) 	     {
(0257) 	       write(0xf1,24,116);
(0258) 		   send(0x47);      //g
(0259) 		 }
(0260)   */
(0261)     disptouch();
    040E DE03      RCALL	_disptouch
(0262) 	disp_ciclr(X,Y);
FILE: <library>
    040F 019B      MOVW	R18,R22
    0410 018A      MOVW	R16,R20
    0411 DE64      RCALL	_disp_ciclr
    0412 940E0441  CALL	pop_gset2
    0414 9508      RET
mod16u:
    0415 9468      BSET	6
    0416 C001      RJMP	xdiv16u
div16u:
    0417 94E8      BCLR	6
xdiv16u:
    0418 92EA      ST	R14,-Y
    0419 92FA      ST	R15,-Y
    041A 938A      ST	R24,-Y
    041B 24EE      CLR	R14
    041C 24FF      CLR	R15
    041D E180      LDI	R24,0x10
    041E 0F00      LSL	R16
    041F 1F11      ROL	R17
    0420 1CEE      ROL	R14
    0421 1CFF      ROL	R15
    0422 16E2      CP	R14,R18
    0423 06F3      CPC	R15,R19
    0424 F018      BCS	0x0428
    0425 1AE2      SUB	R14,R18
    0426 0AF3      SBC	R15,R19
    0427 9503      INC	R16
    0428 958A      DEC	R24
    0429 F7A1      BNE	0x041E
    042A F416      BRTC	0x042D
    042B 2D0E      MOV	R16,R14
    042C 2D1F      MOV	R17,R15
    042D 9189      LD	R24,Y+
    042E 90F9      LD	R15,Y+
    042F 90E9      LD	R14,Y+
    0430 9508      RET
empy16s:
    0431 920A      ST	R0,-Y
    0432 921A      ST	R1,-Y
    0433 938A      ST	R24,-Y
    0434 939A      ST	R25,-Y
    0435 9F02      MUL	R16,R18
    0436 01C0      MOVW	R24,R0
    0437 9F12      MUL	R17,R18
    0438 0D90      ADD	R25,R0
    0439 9F03      MUL	R16,R19
    043A 0D90      ADD	R25,R0
    043B 018C      MOVW	R16,R24
    043C 9199      LD	R25,Y+
    043D 9189      LD	R24,Y+
    043E 9019      LD	R1,Y+
    043F 9009      LD	R0,Y+
    0440 9508      RET
pop_gset2:
    0441 E0E2      LDI	R30,2
    0442 940C0453  JMP	pop
pop_gset3:
    0444 E0E4      LDI	R30,4
    0445 940C0453  JMP	pop
push_gset5:
    0447 92FA      ST	R15,-Y
    0448 92EA      ST	R14,-Y
push_gset4:
    0449 92DA      ST	R13,-Y
    044A 92CA      ST	R12,-Y
push_gset3:
    044B 92BA      ST	R11,-Y
    044C 92AA      ST	R10,-Y
push_gset2:
    044D 937A      ST	R23,-Y
    044E 936A      ST	R22,-Y
push_gset1:
    044F 935A      ST	R21,-Y
    0450 934A      ST	R20,-Y
    0451 9508      RET
pop_gset1:
    0452 E0E1      LDI	R30,1
pop:
    0453 9149      LD	R20,Y+
    0454 9159      LD	R21,Y+
    0455 FDE0      SBRC	R30,0
    0456 9508      RET
    0457 9169      LD	R22,Y+
    0458 9179      LD	R23,Y+
    0459 FDE1      SBRC	R30,1
    045A 9508      RET
    045B 90A9      LD	R10,Y+
    045C 90B9      LD	R11,Y+
    045D FDE2      SBRC	R30,2
    045E 9508      RET
    045F 90C9      LD	R12,Y+
    0460 90D9      LD	R13,Y+
    0461 FDE3      SBRC	R30,3
    0462 9508      RET
    0463 90E9      LD	R14,Y+
    0464 90F9      LD	R15,Y+
    0465 9508      RET
lsr16:
    0466 2322      TST	R18
    0467 F021      BEQ	0x046C
    0468 9516      LSR	R17
    0469 9507      ROR	R16
    046A 952A      DEC	R18
    046B CFFA      RJMP	lsr16
    046C 9508      RET

⌨️ 快捷键说明

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