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

📄 ocmj815b.s

📁 OCMJ815触摸屏使用范例
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module OCMJ815B.c
	.area text(rom, con, rel)
	.dbfile F:\项目\电子设计培训计划\MYOWNT~1.12/function.h
	.dbfunc e send _send fV
;            dat -> R16
	.even
_send::
	.dbline -1
	.dbline 53
; /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
; /*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
; //函数名:    main()
; //功能:      主函数,先显示一行字和X=,Y=然后判断INT是否中断,中断了再显示
;               //触摸处内容和触摸处坐标值
; //输入:      无
; //输出:      无
; //By:       李 平 2007.7.11
; //备注:
; #include <iom16v.h>
; #include <macros.h>
; #include "Portini.h"
; #include "function.h"
; #include "Data.h"
; #include "delay.h"
; 
; void main ()
; {
;    uchar j=0	  ;
;     DDRA=0XFF;
;     DDRB=0X1e;
;      req_clr;
;      DDRB=0x1f;    //busy=1;
;        busy_set;
;      DDRB=0x1e;
; while(1)
;  {  
;   disp1line(code0);          //显示一行字
;   write(0xf9,24,0);          //显示X
;     send(0x58);
;   write(0xf9,24,16);         //显示Y
;     send(0x59);
;   write(0xf9,25,0);          //显示‘= ’
;     send(0x3d);
;   write(0xf9,25,16);         //显示‘= ’
;     send(0x3d);
; 	//画横线//
; for(j=0;j<128;j++)
;   {
;        write(0xf2,239,j);
;       // send(1);
;   }
;  // disp_img(img);
;     /*
; 	    write(0xf9,5,16);
; 		   send(0x31);      //1
; 		write(0xf9,5,48);
; 		   send(0x32);      //2
; 		write(0xf9,5,80);
; 		   send(0x33);      //3
; 		write(0xf9,5,112);
; 		   send(0x34);      //4
; 		   
L2:
	.dbline 55
L3:
	.dbline 54
;         write(0xf9,12,16);
	in R2,0x16
	clr R3
	sbrc R2,0
	rjmp L2
	.dbline 56
; 		   send(0x35);      //5
; 		write(0xf9,12,48);
	out 0x1b,R16
	.dbline 57
; 		   send(0x36);      //6
	sbi 0x18,1
L5:
	.dbline 59
L6:
	.dbline 58
; 		write(0xf9,12,80);
	sbis 0x16,0
	rjmp L5
	.dbline 60
; 		   send(0x37);      //7
; 		write(0xf9,12,112);
	cbi 0x18,1
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r dat 16 c
	.dbend
	.dbfunc e write _write fV
;         addr_y -> y+4
;         addr_x -> R20
;           comm -> R22
	.even
_write::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 71
; 		   send(0x38);      //8
; 	
;         write(0xf9,20,16);
; 		   send(0x39);      //9
; 		write(0xf9,20,48);
; 		   send(0x41);      //A
; 		write(0xf9,20,80);
; 		   send(0x42);      //B
; 		write(0xf9,20,112);
; 		   send(0x43);      //C
; 		  
	.dbline 72
;        // write(0xf9,27,16);
	mov R16,R22
	xcall _send
	.dbline 73
; 		  // send(0x44);      //D
	mov R16,R20
	xcall _send
	.dbline 74
; 		write(0xf9,27,48);
	ldd R16,y+4
	xcall _send
	.dbline -2
L8:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l addr_y 4 c
	.dbsym r addr_x 20 c
	.dbsym r comm 22 c
	.dbend
	.dbfunc e disp1line _disp1line fV
;              i -> R20
;            chn -> R22,R23
	.even
_disp1line::
	xcall push_gset2
	movw R22,R16
	sbiw R28,1
	.dbline -1
	.dbline 85
; 		   send(0x45);      //E
; 		write(0xf9,27,80);
; 		   send(0x46);      //F
; 		write(0xf9,27,112);
; 		   send(0x47);      //G
; 		   
; 	//send(0xf5);              //上移一个点阵
; 	*/
;   if(!(intt))
;      {
;        delay_nus(10000);
	.dbline 87
;         if(!(intt))                   
;            {
	ldi R20,2
	xjmp L13
L10:
	.dbline 88
	.dbline 89
	clr R2
	std y+0,R2
	mov R18,R20
	subi R18,2
	ldi R16,240
	xcall _write
	.dbline 90
	ldi R24,2
	mul R24,R20
	movw R30,R0
	sbiw R30,4
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	subi R16,160
	xcall _send
	.dbline 91
	ldi R24,2
	mul R24,R20
	movw R30,R0
	sbiw R30,4
	add R30,R22
	adc R31,R23
	ldd R16,z+1
	subi R16,160
	xcall _send
	.dbline 92
L11:
	.dbline 87
	inc R20
L13:
	.dbline 87
	cpi R20,14
	brlo L10
	.dbline -2
L9:
	adiw R28,1
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r chn 22 pc
	.dbend
	.dbfunc e disp2lines _disp2lines fV
;              i -> R20
;            chn -> R22,R23
	.even
_disp2lines::
	xcall push_gset2
	movw R22,R16
	sbiw R28,1
	.dbline -1
	.dbline 103
;                DDRB=0X5e;      //ip=1;
;                int_set;        //而非clr;
;                DDRB=0X1e;
;                bang();
;            }
;      }   
;   }
; }
; /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
; /*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
; //函数名:         bang()
; //功能:           有触摸的时候,显示触摸处的X,Y值并执行触摸操作
; //输入:          条件int=0
; //输出:           无
; //By:             李 平 2007.7.11
; //备注:
	.dbline 105
; void bang(void)
; {
	ldi R20,2
	xjmp L18
L15:
	.dbline 106
	.dbline 107
	ldi R24,2
	std y+0,R24
	mov R18,R20
	subi R18,2
	ldi R16,240
	xcall _write
	.dbline 108
	ldi R24,2
	mul R24,R20
	movw R30,R0
	sbiw R30,4
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	subi R16,160
	xcall _send
	.dbline 109
	ldi R24,2
	mul R24,R20
	movw R30,R0
	sbiw R30,4
	add R30,R22
	adc R31,R23
	ldd R16,z+1
	subi R16,160
	xcall _send
	.dbline 110
L16:
	.dbline 105
	inc R20
L18:
	.dbline 105
	cpi R20,11
	brlo L15
	.dbline 111
; unsigned int X=0,Y=0;
; //delay(10000);
; //中断后延时以消除抖动,使得采样数据更准确
;      spi_start(); //启动SPI
;          delay_nus(2);
;      WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
	ldi R20,2
	xjmp L22
L19:
	.dbline 112
	.dbline 113
	ldi R24,3
	std y+0,R24
	mov R18,R20
	subi R18,2
	ldi R16,240
	xcall _write
	.dbline 114
	ldi R24,2
	mul R24,R20
	movw R30,R0
	add R30,R22
	adc R31,R23
	ldd R16,z+12
	subi R16,160
	xcall _send
	.dbline 115
	ldi R24,2
	mul R24,R20
	movw R30,R0
	add R30,R22
	adc R31,R23
	ldd R16,z+13
	subi R16,160
	xcall _send
	.dbline 116
L20:
	.dbline 111
	inc R20
L22:
	.dbline 111
	cpi R20,11
	brlo L19
	.dbline -2
L14:
	adiw R28,1
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r chn 22 pc
	.dbend
	.dbfunc e disp_img _disp_img fV
;              j -> R20
;              i -> R10
;            img -> R22,R23
	.even
_disp_img::
	xcall push_gset3
	movw R22,R16
	sbiw R28,1
	.dbline -1
	.dbline 127
;          delay_nus(2);
;      clk_set;
; 			asm("nop");
; 			asm("nop");
; 			asm("nop");
;      clk_clr;
; 			asm("nop");
; 			asm("nop");
; 			asm("nop");
;      X=ReadFromCharFrom7843();  //读X轴坐标
;      WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
;      clk_set;
; 			asm("nop");
; 			asm("nop");
; 			asm("nop");
;      clk_clr;
	.dbline 129
; 			asm("nop");
; 			asm("nop");
	ldi R20,31
	xjmp L27
L24:
	.dbline 130
; 			asm("nop");
	.dbline 131
;      Y=ReadFromCharFrom7843();  //读Y轴坐标
	ldi R24,4
	mov R10,R24
	xjmp L31
L28:
	.dbline 132
	.dbline 133
	std y+0,R20
	mov R18,R10
	ldi R16,243
	xcall _write
	.dbline 134
	ldi R24,16
	mul R24,R20
	movw R30,R0
	subi R30,240
	sbci R31,1
	mov R2,R10
	clr R3
	add R30,R2
	adc R31,R3
	sbiw R30,4
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	xcall _send
	.dbline 135
L29:
	.dbline 131
	inc R10
L31:
	.dbline 131
	mov R24,R10
	cpi R24,20
	brlo L28
	.dbline 136
L25:
	.dbline 129
	inc R20
L27:
	.dbline 129
	cpi R20,64
	brlo L24
	.dbline -2
L23:
	adiw R28,1
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 10 c
	.dbsym r img 22 pc
	.dbend
	.dbfunc e disptouch _disptouch fV
;              r -> R20
	.even
_disptouch::
	xcall push_gset1
	sbiw R28,1
	.dbline -1
	.dbline 147
;      cs_set;
;          DDRB=0X5e;    //ip=1;
;          int_set;
;          DDRB=0x1e;
;     tabx[0]=(X/1000);
;     tabx[1]=(X-tabx[0]*1000)/100;
;     tabx[2]=(X-tabx[0]*1000-tabx[1]*100)/10;
;     tabx[3]=(X-tabx[0]*1000-tabx[1]*100-tabx[2]*10);
;     taby[0]=(Y/1000);
;     taby[1]=(Y-taby[0]*1000)/100;
;     taby[2]=(Y-taby[0]*1000-taby[1]*100)/10;
;     taby[3]=(Y-taby[0]*1000-taby[1]*100-taby[2]*10);
;    /*   if(X>3000)
;         if(Y>2600)
;           disp2lines(code1);
;       if(X<2500)
	.dbline 149
;         if(X>1600)
;            if(Y>2600)
	ldi R20,6
	xjmp L36
L33:
	.dbline 150
	.dbline 151
	clr R2
	std y+0,R2
	mov R18,R20
	subi R18,236    ; addi 20
	ldi R16,249
	xcall _write
	.dbline 152
	ldi R24,<_tabx-6
	ldi R25,>_tabx-6
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,208    ; addi 48
	xcall _send
	.dbline 153
L34:
	.dbline 149
	inc R20
L36:
	.dbline 149
	cpi R20,10
	brlo L33
	.dbline 154
;               disp_img(img);
;       if(X<1600)
;         if(Y>2600)
;            disp1line(code2);
;       if(Y<2600)
	ldi R20,13
	xjmp L41
L38:
	.dbline 155
	.dbline 156
	ldi R24,16
	std y+0,R24
	mov R18,R20
	subi R18,243    ; addi 13
	ldi R16,249
	xcall _write
	.dbline 157
	ldi R24,<_taby-13
	ldi R25,>_taby-13
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	subi R16,208    ; addi 48
	xcall _send
	.dbline 158
L39:
	.dbline 154
	inc R20
L41:
	.dbline 154
	cpi R20,17
	brlo L38
	.dbline -2
L32:
	adiw R28,1
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r r 20 c
	.dbend
	.dbfunc e spi_start _spi_start fV
	.even
_spi_start::
	.dbline -1
	.dbline 169
;         send(0xf4);
; 	*/
; 	
; 	/*
; 	if(X>3000)
; 	  if(Y>3000)
; 	   {
; 	    write(0xf1,2,20);
; 		send(0x31);      //1
; 	   }
; 	 if(X>2000&&X<3000)
; 	   if(Y>3000)
; 	     {
; 	       write(0xf1,2,52);
; 		   send(0x32);      //2
	.dbline 170
; 		 }
	cbi 0x18,2
	.dbline 171
; 	 if(X>1000&&X<2000)
	sbi 0x18,3
	.dbline 172
; 	   if(Y>3000)
	sbi 0x18,4
	.dbline 173
; 	     {
	sbi 0x18,2
	.dbline 174
; 	       write(0xf1,2,84);
	cbi 0x18,3
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e WriteCharTo7843 _WriteCharTo7843 fV
;          count -> R20
;            num -> R16
	.even
_WriteCharTo7843::
	xcall push_gset1
	.dbline -1
	.dbline 185
; 		   send(0x33);      //3
; 		 }
; 	 if(X>0&&X<1000)
; 	   if(Y>3000)
; 	     {
; 	       write(0xf1,2,116);
; 		   send(0x34);      //4
; 		 }		 
; 		 
; 		 
; 	if(X>3000)
	.dbline 186
; 	  if(Y<3000&&Y>2000)
	clr R20
	.dbline 187
; 	   {
	cbi 0x18,2
	.dbline 188
; 	    write(0xf1,9,20);
	xjmp L48
L45:
	.dbline 189
; 		send(0x35);      //5
	.dbline 190
; 	   }
	sbrs R16,7
	rjmp L49
	.dbline 191
; 	 if(X>2000&&X<3000)
	sbi 0x18,4
	xjmp L50
L49:
	.dbline 192
; 	  if(Y<3000&&Y>2000)
	cbi 0x18,4
L50:
	.dbline 193
	lsl R16
	.dbline 194
	cbi 0x18,2
	.dbline 195
	nop
	.dbline 196
	nop
	.dbline 197
	nop
	.dbline 198
	sbi 0x18,2
	.dbline 199
	nop
	.dbline 200
	nop
	.dbline 201
	nop
	.dbline 202
L46:
	.dbline 188
	inc R20
L48:
	.dbline 188
	cpi R20,8
	brlo L45
	.dbline -2
L44:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r count 20 c
	.dbsym r num 16 c
	.dbend
	.dbfunc e ReadFromCharFrom7843 _ReadFromCharFrom7843 fi
;            Num -> R16,R17
;          count -> R18
	.even
_ReadFromCharFrom7843::
	.dbline -1
	.dbline 213
; 	     {
; 	       write(0xf1,9,52);
; 		   send(0x36);      //6
; 		 }
; 	 if(X>1000&&X<2000)
; 	  if(Y<3000&&Y>2000)
; 	     {
; 	       write(0xf1,9,84);
; 		   send(0x37);      //7
; 		 }
; 	 if(X>0&&X<1000)
; 	  if(Y<3000&&Y>2000)
; 	     {
; 	       write(0xf1,9,116);
; 		   send(0x38);      //8
; 		 }		
; 		 
; 	if(X>3000)
; 	  if(Y<2000&&Y>1000)
; 	   {
; 	    write(0xf1,17,20);
	.dbline 214
; 		send(0x39);      //9
	clr R18
	.dbline 215
; 	   }
	clr R16
	clr R17
	.dbline 216
; 	 if(X>2000&&X<3000)
	xjmp L55
L52:
	.dbline 217
; 	  if(Y<2000&&Y>1000)
	.dbline 218
; 	     {
	lsl R16
	rol R17
	.dbline 219
; 	       write(0xf1,17,52);
	sbi 0x18,2
	.dbline 224
; 		   send(0x41);      //A
; 		 }

⌨️ 快捷键说明

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