📄 12864.src
字号:
INC k?1075
?C0098:
; }
; SOURCE LINE # 230
INC x?1073
SJMP ?C0047
; }
; SOURCE LINE # 231
?C0046:
INC y?1074
SJMP ?C0044
;
; }
; SOURCE LINE # 233
?C0052:
RET
; END OF _displaybmp
;
;
;
; // 画点的程序
;
; void draw(unsigned char x,unsigned char y)
RSEG ?PR?_draw?12864
_draw:
USING 0
; SOURCE LINE # 239
;---- Variable 'x?1176' assigned to Register 'R6' ----
MOV R6,AR7
;---- Variable 'y?1177' assigned to Register 'R4' ----
MOV R4,AR5
; {
; SOURCE LINE # 240
; unsigned char page,page0;
; page=0x01<<(y%8);
; SOURCE LINE # 242
MOV A,R4
ANL A,#07H
MOV R7,A
MOV A,#01H
MOV R0,AR7
INC R0
SJMP ?C0100
?C0099:
CLR C
RLC A
?C0100:
DJNZ R0,?C0099
;---- Variable 'page?1178' assigned to Register 'R3' ----
MOV R3,A
; if(x<64)
; SOURCE LINE # 243
MOV A,R6
CLR C
SUBB A,#040H
JNC ?C0053
; {
; SOURCE LINE # 244
; CSA12864=1;
; SOURCE LINE # 245
SETB CSA12864
; CSB12864=0;
; SOURCE LINE # 246
CLR CSB12864
; Set_XY((unsigned char)(y/8),x);
; SOURCE LINE # 247
MOV A,R4
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV R5,AR6
; }
; SOURCE LINE # 248
SJMP ?C0103
?C0053:
; else
; {
; SOURCE LINE # 250
; CSA12864=0;
; SOURCE LINE # 251
CLR CSA12864
; CSB12864=1;
; SOURCE LINE # 252
SETB CSB12864
; Set_XY((unsigned char)(y/8),x-64);
; SOURCE LINE # 253
MOV A,R4
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV A,R6
ADD A,#0C0H
MOV R5,A
?C0103:
LCALL _Set_XY
; }
; SOURCE LINE # 254
?C0054:
; page0=Read_12864_Data();
; SOURCE LINE # 255
LCALL Read_12864_Data
;---- Variable 'page0?1179' assigned to Register 'R2' ----
MOV R2,AR7
; page0=Read_12864_Data();
; SOURCE LINE # 256
LCALL Read_12864_Data
MOV R2,AR7
; if(x<64)
; SOURCE LINE # 257
MOV A,R6
CLR C
SUBB A,#040H
JNC ?C0055
; {
; SOURCE LINE # 258
; CSA12864=1;
; SOURCE LINE # 259
SETB CSA12864
; CSB12864=0;
; SOURCE LINE # 260
CLR CSB12864
; Set_XY((unsigned char)(y/8),x);
; SOURCE LINE # 261
MOV A,R4
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV R5,AR6
; }
; SOURCE LINE # 262
SJMP ?C0104
?C0055:
; else
; {
; SOURCE LINE # 264
; CSA12864=0;
; SOURCE LINE # 265
CLR CSA12864
; CSB12864=1;
; SOURCE LINE # 266
SETB CSB12864
; Set_XY((unsigned char)(y/8),x-64);
; SOURCE LINE # 267
MOV A,R4
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV A,R6
ADD A,#0C0H
MOV R5,A
?C0104:
LCALL _Set_XY
; }
; SOURCE LINE # 268
?C0056:
; page=page|page0;
; SOURCE LINE # 269
MOV A,R2
ORL AR3,A
; page=page|page0;
; SOURCE LINE # 270
MOV A,R2
ORL AR3,A
; Write_12864_Data(page);
; SOURCE LINE # 271
MOV R7,AR3
LJMP _Write_12864_Data
; END OF _draw
; }
;
; //开机画面
;
; void screen0(void)
RSEG ?PR?screen0?12864
screen0:
USING 0
; SOURCE LINE # 276
; {
; SOURCE LINE # 277
; unsigned char ix,jx;
; unsigned char press[]={"gl2u for 2006"};
; SOURCE LINE # 279
MOV R0,#LOW (press?1282)
MOV R4,#HIGH (press?1282)
MOV R5,#00H
MOV R3,#0FFH
MOV R2,#HIGH (_?ix1000)
MOV R1,#LOW (_?ix1000)
MOV R6,#00H
MOV R7,#0EH
LCALL ?C?COPY
; cxw=abs(cxw-8);
; SOURCE LINE # 280
MOV A,cxw
ADD A,#0F8H
MOV R7,A
CLR A
ADDC A,#0FFH
MOV R6,A
LCALL _abs
MOV cxw,R7
; cyb=abs(cyb-1);
; SOURCE LINE # 281
MOV A,cyb
ADD A,#0FFH
MOV R7,A
CLR A
ADDC A,#0FFH
MOV R6,A
LCALL _abs
MOV cyb,R7
; for(jx=0;jx<4;jx++)
; SOURCE LINE # 282
;---- Variable 'jx?1281' assigned to Register 'R1' ----
CLR A
MOV R1,A
?C0058:
; {
; SOURCE LINE # 283
; displayasc(cyw,cxw+32+16*jx,'*');
; SOURCE LINE # 284
MOV A,cxw
ADD A,#020H
MOV R7,A
MOV A,R1
SWAP A
ANL A,#0F0H
ADD A,R7
MOV R5,A
MOV R3,#02AH
MOV R7,cyw
LCALL _displayasc
; }
; SOURCE LINE # 285
INC R1
CJNE R1,#04H,?C0058
?C0059:
; for(jx=1;jx<5;jx++)
; SOURCE LINE # 286
MOV R1,#01H
?C0061:
; {
; SOURCE LINE # 287
; displayasc(cyw+5,128-(cxw+24+16*jx),'*');
; SOURCE LINE # 288
MOV A,cyw
ADD A,#05H
MOV R7,A
MOV A,R1
SWAP A
ANL A,#0F0H
ADD A,cxw
MOV R6,A
CLR C
MOV A,#068H
SUBB A,R6
MOV R5,A
MOV R3,#02AH
LCALL _displayasc
; }
; SOURCE LINE # 289
INC R1
CJNE R1,#05H,?C0061
?C0062:
; for(ix=0;ix<2;ix++)
; SOURCE LINE # 290
;---- Variable 'ix?1280' assigned to Register 'R1' ----
CLR A
MOV R1,A
?C0064:
; {
; SOURCE LINE # 291
; displayasc(cyb+2+ix*2,cxb,'*');
; SOURCE LINE # 292
MOV A,cyb
ADD A,#02H
MOV R7,A
MOV A,R1
ADD A,ACC
ADD A,R7
MOV R7,A
MOV R3,#02AH
MOV R5,cxb
LCALL _displayasc
; }
; SOURCE LINE # 293
INC R1
CJNE R1,#02H,?C0064
?C0065:
; for(ix=1;ix<3;ix++)
; SOURCE LINE # 294
MOV R1,#01H
?C0067:
; {
; SOURCE LINE # 295
; displayasc(8-(cyb+1+ix*2),cxb+72,'*');
; SOURCE LINE # 296
MOV A,R1
ADD A,ACC
ADD A,cyb
MOV R7,A
CLR C
MOV A,#07H
SUBB A,R7
MOV R7,A
MOV A,cxb
ADD A,#048H
MOV R5,A
MOV R3,#02AH
LCALL _displayasc
; }
; SOURCE LINE # 297
INC R1
CJNE R1,#03H,?C0067
?C0068:
; displayhz(2,32,24,GB_24);
; SOURCE LINE # 298
MOV ?_displayhz?BYTE+03H,#HIGH (GB_24)
MOV ?_displayhz?BYTE+04H,#LOW (GB_24)
MOV R3,#018H
MOV R5,#020H
MOV R7,#02H
LCALL _displayhz
; displayhz(3,48,24,GB_24+1);
; SOURCE LINE # 299
MOV ?_displayhz?BYTE+03H,#HIGH (GB_24+04AH)
MOV ?_displayhz?BYTE+04H,#LOW (GB_24+04AH)
MOV R3,#018H
MOV R5,#030H
MOV R7,#03H
LCALL _displayhz
; displayhz(2,64,24,GB_24+2);
; SOURCE LINE # 300
MOV ?_displayhz?BYTE+03H,#HIGH (GB_24+094H)
MOV ?_displayhz?BYTE+04H,#LOW (GB_24+094H)
MOV R3,#018H
MOV R5,#040H
MOV R7,#02H
LCALL _displayhz
; displayhz(3,80,24,GB_24+3);
; SOURCE LINE # 301
MOV ?_displayhz?BYTE+03H,#HIGH (GB_24+0DEH)
MOV ?_displayhz?BYTE+04H,#LOW (GB_24+0DEH)
MOV R3,#018H
MOV R5,#050H
MOV R7,#03H
LCALL _displayhz
; displaystr(5,24,press);
; SOURCE LINE # 302
MOV R3,#00H
MOV R2,#HIGH (press?1282)
MOV R1,#LOW (press?1282)
MOV R5,#018H
MOV R7,#05H
LJMP _displaystr
; END OF screen0
; }
;
;
; //一个简单的菜单
; void screen1(unsigned char key)
RSEG ?PR?_screen1?12864
_screen1:
USING 0
; SOURCE LINE # 307
MOV key?1383,R7
; {
; SOURCE LINE # 308
?C0071:
; while(P1&0xf7!=0xf7)
; SOURCE LINE # 309
; switch(key)
; SOURCE LINE # 310
; {
; SOURCE LINE # 311
; case 1:
; SOURCE LINE # 312
?C0072:
; if(pt<4)pt++;else pt=0;
; case 2:
; if(pt>0)pt--;else pt=4;
; }
; displayasc(pt,18,'>');
; SOURCE LINE # 317
MOV R3,#03EH
MOV R5,#012H
MOV R7,pt
LCALL _displayasc
; displayasc(pt,128-18,'<');
; SOURCE LINE # 318
MOV R3,#03CH
MOV R5,#06EH
MOV R7,pt
LCALL _displayasc
; displaystr(1,30,list0);
; SOURCE LINE # 319
MOV R2,#HIGH (list0)
MOV R1,#LOW (list0)
MOV R7,#01H
LCALL L?0107
; displaystr(2,30,list1);
; SOURCE LINE # 320
MOV R2,#HIGH (list1)
MOV R1,#LOW (list1)
MOV R7,#02H
LCALL L?0107
; displaystr(3,30,list2);
; SOURCE LINE # 321
MOV R3,#0FFH
MOV R2,#HIGH (list2)
MOV R1,#LOW (list2)
MOV R5,#01EH
MOV R7,#03H
LCALL _displaystr
; displaystr(4,30,list3);
; SOURCE LINE # 322
MOV R3,#0FFH
MOV R2,#HIGH (list3)
MOV R1,#LOW (list3)
MOV R5,#01EH
MOV R7,#04H
LJMP _displaystr
; END OF _screen1
; }
;
; //显示浮点数(有误差,还有待于研究)
; solve(unsigned char xx,unsigned yy,float num)
RSEG ?PR?_solve?12864
_solve:
USING 0
; SOURCE LINE # 326
MOV xx?1484,R7
MOV yy?1485,R4
MOV yy?1485+01H,R5
; {unsigned char nflag=' ';
; SOURCE LINE # 327
MOV nflag?1487,#020H
; unsigned char x0=xx,i;
; SOURCE LINE # 328
MOV x0?1488,xx?1484
; unsigned int temp1;
; unsigned long temp2;
; if(num>-1&&num<1){displayasc(yy,xx,0x30);xx=xx-7;}
; SOURCE LINE # 331
CLR A
MOV R7,A
MOV R6,A
MOV R5,#080H
MOV R4,#0BFH
MOV R3,num?1486+03H
MOV R2,num?1486+02H
MOV R1,num?1486+01H
MOV R0,num?1486
LCALL ?C?FPCMP3
JZ ?C0081
JC ?C0081
CLR A
MOV R7,A
MOV R6,A
MOV R5,#080H
MOV R4,#03FH
MOV R3,num?1486+03H
MOV R2,num?1486+02H
MOV R1,num?1486+01H
MOV R0,num?1486
LCALL ?C?FPCMP3
JNC ?C0081
MOV R7,yy?1485+01H
MOV R3,#030H
MOV R5,xx?1484
LCALL _displayasc
MOV A,#0F9H
ADD A,xx?1484
MOV xx?1484,A
?C0081:
; if(num<0)
; SOURCE LINE # 332
CLR A
MOV R7,A
MOV R6,A
MOV R5,A
MOV R4,A
MOV R3,num?1486+03H
MOV R2,num?1486+02H
MOV R1,num?1486+01H
MOV R0,num?1486
LCALL ?C?FPCMP3
JNC ?C0082
; {num=-num;
; SOURCE LINE # 333
MOV R7,num?1486+03H
MOV R6,num?1486+02H
MOV R5,num?1486+01H
MOV R4,num?1486
LCALL ?C?FPNEG
MOV num?1486+03H,R7
MOV num?1486+02H,R6
MOV num?1486+01H,R5
MOV num?1486,R4
; nflag='-';}
; SOURCE LINE # 334
MOV nflag?1487,#02DH
?C0082:
; temp1=num;
; SOURCE LINE # 335
MOV R7,num?1486+03H
MOV R6,num?1486+02H
MOV R5,num?1486+01H
MOV R4,num?1486
LCALL ?C?CASTF
MOV temp1?1490,R6
MOV temp1?1490+01H,R7
; temp2=(unsigned long)((num-(long)(num))*100);//100是保留小数的位数(2位)
; SOURCE LINE # 336
MOV R7,num?1486+03H
MOV R6,num?1486+02H
MOV R5,num?1486+01H
MOV R4,num?1486
LCALL ?C?CASTF
MOV A,R4
LCALL ?C?FCASTL
MOV R0,AR4
MOV R1,AR5
MOV R2,AR6
MOV R3,AR7
MOV R7,num?1486+03H
MOV R6,num?1486+02H
MOV R5,num?1486+01H
MOV R4,num?1486
LCALL ?C?FPSUB
CLR A
MOV R3,A
MOV R2,A
MOV R1,#0C8H
MOV R0,#042H
LCALL ?C?FPMUL
LCALL ?C?CASTF
SJMP ?C0105
?C0083:
; while(temp2>=1)
; SOURCE LINE # 337
CLR A
MOV R7,#01H
MOV R6,A
MOV R5,A
MOV R4,A
MOV R3,temp2?1491+03H
MOV R2,temp2?1491+02H
MOV R1,temp2?1491+01H
MOV R0,temp2?1491
CLR C
LCALL ?C?ULCMP
JC ?C0084
; {i++;
; SOURCE LINE # 338
INC i?1489
; {
; SOURCE LINE # 339
; displayasc(yy,xx,temp2%10+0x30);xx=xx-7;
; SOURCE LINE # 340
MOV R7,yy?1485+01H
PUSH AR7
CLR A
MOV R3,#0AH
MOV R2,A
MOV R1,A
MOV R0,A
MOV R7,temp2?1491+03H
MOV R6,temp2?1491+02H
MOV R5,temp2?1491+01H
MOV R4,temp2?1491
LCALL ?C?ULDIV
MOV A,R3
ADD A,#030H
MOV R3,A
POP AR7
MOV R5,xx?1484
LCALL _displayasc
MOV A,#0F9H
ADD A,xx?1484
MOV xx?1484,A
; }
; SOURCE LINE # 341
; temp2=temp2/10;
; SOURCE LINE # 342
MOV R7,temp2?1491+03H
MOV R6,temp2?1491+02H
MOV R5,temp2?1491+01H
MOV R4,temp2?1491
CLR A
MOV R3,#0AH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?ULDIV
?C0105:
MOV temp2?1491+03H,R7
MOV temp2?1491+02H,R6
MOV temp2?1491+01H,R5
MOV temp2?1491,R4
; }
; SOURCE LINE # 343
SJMP ?C0083
?C0084:
; displayasc(yy,xx,'.'); xx=xx-7;
; SOURCE LINE # 344
MOV R7,yy?1485+01H
MOV R3,#02EH
MOV R5,xx?1484
LCALL _displayasc
MOV A,#0F9H
ADD A,xx?1484
MOV xx?1484,A
?C0085:
; while(temp1>=1)
; SOURCE LINE # 345
CLR C
MOV A,temp1?1490+01H
SUBB A,#01H
MOV A,temp1?1490
SUBB A,#00H
JC ?C0086
; {i++;
; SOURCE LINE # 346
INC i?1489
; {
; SOURCE LINE # 347
; displayasc(yy,xx,temp1%10+0x30);xx=xx-7;
; SOURCE LINE # 348
MOV R7,yy?1485+01H
PUSH AR7
MOV R6,temp1?1490
MOV R7,temp1?1490+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
MOV R3,A
POP AR7
MOV R5,xx?1484
LCALL _displayasc
MOV A,#0F9H
ADD A,xx?1484
MOV xx?1484,A
; }
; SOURCE LINE # 349
; temp1=temp1/10;
; SOURCE LINE # 350
MOV R6,temp1?1490
MOV R7,temp1?1490+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV temp1?1490,R6
MOV temp1?1490+01H,R7
; }
; SOURCE LINE # 351
SJMP ?C0085
?C0086:
; displayasc(yy,xx,nflag);
; SOURCE LINE # 352
MOV R7,yy?1485+01H
MOV R3,nflag?1487
MOV R5,xx?1484
LJMP _displayasc
; END OF _solve
; }
; drawline(float x1,float y1,float x2,float y2)
RSEG ?PR?_drawline?12864
_drawline:
USING 0
; SOURCE LINE # 354
MOV x1?1592+03H,R7
MOV x1?1592+02H,R6
MOV x1?1592+01H,R5
MOV x1?1592,R4
; {
; SOURCE LINE # 355
; float x,y;
; for(x=x1;x<x2;x++)
; SOURCE LINE # 357
AJMP ?C0106
?C0088:
MOV R7,x2?1594+03H
MOV R6,x2?1594+02H
MOV R5,x2?1594+01H
MOV R4,x2?1594
MOV R3,x?1596+03H
MOV R2,x?1596+02H
MOV R1,x?1596+01H
MOV R0,x?1596
LCALL ?C?FPCMP3
JC $ + 4H
AJMP ?C0091
; {
; SOURCE LINE # 358
; y=(y2-y1)/(x2-x1)*(x-x1)+y1;
; SOURCE LINE # 359
MOV R3,x1?1592+03H
MOV R2,x1?1592+02H
MOV R1,x1?1592+01H
MOV R0,x1?1592
MOV R7,x2?1594+03H
MOV R6,x2?1594+02H
MOV R5,x2?1594+01H
MOV R4,x2?1594
LCALL ?C?FPSUB
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R3,y1?1593+03H
MOV R2,y1?1593+02H
MOV R1,y1?1593+01H
MOV R0,y1?1593
MOV R7,y2?1595+03H
MOV R6,y2?1595+02H
MOV R5,y2?1595+01H
MOV R4,y2?1595
LCALL ?C?FPSUB
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPDIV
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R3,x1?1592+03H
MOV R2,x1?1592+02H
MOV R1,x1?1592+01H
MOV R0,x1?1592
MOV R7,x?1596+03H
MOV R6,x?1596+02H
MOV R5,x?1596+01H
MOV R4,x?1596
LCALL ?C?FPSUB
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPMUL
MOV R3,y1?1593+03H
MOV R2,y1?1593+02H
MOV R1,y1?1593+01H
MOV R0,y1?1593
LCALL ?C?FPADD
MOV y?1597+03H,R7
MOV y?1597+02H,R6
MOV y?1597+01H,R5
MOV y?1597,R4
; draw((unsigned char)x,(unsigned char)y);
; SOURCE LINE # 360
MOV R7,x?1596+03H
MOV R6,x?1596+02H
MOV R5,x?1596+01H
MOV R4,x?1596
LCALL ?C?CASTF
PUSH AR7
MOV R7,y?1597+03H
MOV R6,y?1597+02H
MOV R5,y?1597+01H
MOV R4,y?1597
LCALL ?C?CASTF
MOV R5,AR7
POP AR7
LCALL _draw
; }
; SOURCE LINE # 361
MOV R7,x?1596+03H
MOV R6,x?1596+02H
MOV R5,x?1596+01H
MOV R4,x?1596
CLR A
MOV R3,A
MOV R2,A
MOV R1,#080H
MOV R0,#03FH
LCALL ?C?FPADD
?C0106:
MOV x?1596+03H,R7
MOV x?1596+02H,R6
MOV x?1596+01H,R5
MOV x?1596,R4
AJMP ?C0088
; }
; SOURCE LINE # 362
?C0091:
RET
; END OF _drawline
; void main(void)
RSEG ?PR?main?12864
main:
USING 0
; SOURCE LINE # 363
; { unsigned char x;
; SOURCE LINE # 364
; unsigned char str[]={"Good Luck"};
; SOURCE LINE # 365
MOV R0,#LOW (str?1699)
MOV R4,#HIGH (str?1699)
MOV R5,#00H
MOV R3,#0FFH
MOV R2,#HIGH (_?ix1001)
MOV R1,#LOW (_?ix1001)
MOV R6,#00H
MOV R7,#0AH
LCALL ?C?COPY
; Clr_Screen();
; SOURCE LINE # 366
LCALL Clr_Screen
; Init_12864();
; SOURCE LINE # 367
LCALL Init_12864
;
; displaybmp(20,2,101,6,nBitmapDot);
; SOURCE LINE # 369
MOV ?_displaybmp?BYTE+03H,#06H
MOV ?_displaybmp?BYTE+04H,#0FFH
MOV ?_displaybmp?BYTE+05H,#HIGH (nBitmapDot)
MOV ?_displaybmp?BYTE+06H,#LOW (nBitmapDot)
MOV R3,#065H
MOV R5,#02H
MOV R7,#014H
LCALL _displaybmp
; for(x=0;x<4*24;x=x+24)
; SOURCE LINE # 370
CLR A
MOV x?1698,A
?C0092:
MOV A,x?1698
CLR C
SUBB A,#060H
JNC ?C0093
; displayhz(0,0+x,24,GB_24+x/24);
; SOURCE LINE # 371
MOV A,x?1698
MOV B,#018H
DIV AB
MOV B,#04AH
MUL AB
ADD A,#LOW (GB_24)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (GB_24)
MOV R7,DPL
MOV ?_displayhz?BYTE+03H,A
MOV ?_displayhz?BYTE+04H,R7
MOV R3,#018H
MOV R5,x?1698
CLR A
MOV R7,A
LCALL _displayhz
MOV A,#018H
ADD A,x?1698
MOV x?1698,A
SJMP ?C0092
?C0093:
; displayasc(2,5,97);
; SOURCE LINE # 372
MOV R3,#061H
MOV R5,#05H
MOV R7,#02H
LCALL _displayasc
; displaystr(6,5,str);while(1);
; SOURCE LINE # 373
MOV R3,#00H
MOV R2,#HIGH (str?1699)
MOV R1,#LOW (str?1699)
MOV R5,#05H
MOV R7,#06H
LCALL _displaystr
?C0095:
SJMP ?C0095
; END OF main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -