📄 ocmj815b.s
字号:
.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 + -