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