?? xspmain.src
字號:
MOV A,LeftShiftDelayCount
JZ ?C0036
LCALL WDT_RESET
SJMP ?C0034
; }
; SOURCE LINE # 354
?C0036:
RET
; END OF MapDrawZhiJie
;
; /**************************************************************************/
; void DataCopy(unsigned char temp){
RSEG ?PR?_DataCopy?XSPMAIN
_DataCopy:
USING 0
; SOURCE LINE # 357
;---- Variable 'temp?446' assigned to Register 'R7' ----
; memcpy(DispYingXiangBuf,& DispShuBuf[temp][0][0],HANGSHU*LIEBYTE);
; SOURCE LINE # 358
MOV R6,#00H
MOV R4,#01H
MOV R5,#020H
LCALL ?C?IMUL
MOV A,#LOW (DispShuBuf)
ADD A,R7
MOV R1,A
MOV A,#HIGH (DispShuBuf)
ADDC A,R6
MOV R2,A
MOV R3,#01H
MOV R0,#LOW (DispYingXiangBuf)
MOV R4,#HIGH (DispYingXiangBuf)
MOV R5,#01H
MOV R6,#01H
MOV R7,#020H
LCALL ?C?COPY
; }
; SOURCE LINE # 359
RET
; END OF _DataCopy
; /*
; void MemDataCopy(unsigned char *c,unsigned char *d){
; data unsigned int i;
; for (i=0;i<HANGSHU*LIEBYTE;i++) {
; c[i]=d[i];
; if (c[i]!=d[i]) break;
; }
; }*/
; /*********************************************************/
; void MapDrawString(unsigned char *str)
RSEG ?PR?_MapDrawString?XSPMAIN
_MapDrawString:
USING 0
; SOURCE LINE # 369
MOV DPTR,#str?547
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; {
; SOURCE LINE # 370
; data unsigned char *pFont;
; idata unsigned char Font[32];
;
;
; data unsigned int FontIndex=0;
; SOURCE LINE # 375
CLR A
MOV FontIndex?550,A
MOV FontIndex?550+01H,A
; idata unsigned long FontCount;
; // data unsigned int FontCountL;
; // data unsigned char FontCountH;
;
; data unsigned char i;
; data unsigned char temp;
; data unsigned int LieShu=0;
; SOURCE LINE # 382
MOV LieShu?554,A
MOV LieShu?554+01H,A
?C0038:
;
; data unsigned char j;
; data unsigned char c, d;
;
;
;
; // for (k = 0; k <LIEBYTE; k=k+2) {
;
; while ((c = str[FontIndex]) != '\0'){
; SOURCE LINE # 391
MOV DPTR,#str?547
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,FontIndex?550+01H
MOV DPH,FontIndex?550
LCALL ?C?CLDOPTR
MOV c?556,A
JNZ $ + 5H
LJMP ?C0047
; d = str[FontIndex + 1];
; SOURCE LINE # 392
MOV DPTR,#str?547
MOVX A,@DPTR
INC DPTR
MOVX A,@DPTR
INC DPTR
MOVX A,@DPTR
MOV A,FontIndex?550+01H
ADD A,#01H
MOV R7,A
CLR A
ADDC A,FontIndex?550
MOV DPL,R7
MOV DPH,A
LCALL ?C?CLDOPTR
MOV d?557,A
; WDT_RESET();
; SOURCE LINE # 393
LCALL WDT_RESET
; FontCount = 32*((unsigned long)(c - 160 - 1) * 94 + (d -160 - 1));
; SOURCE LINE # 394
MOV A,c?556
ADD A,#05FH
MOV R7,A
CLR A
ADDC A,#0FFH
MOV R6,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,#05EH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?LMUL
XCH A,R0
MOV A,R4
XCH A,R0
XCH A,R1
MOV A,R5
XCH A,R1
XCH A,R2
MOV A,R6
XCH A,R2
XCH A,R3
MOV A,R7
XCH A,R3
MOV A,d?557
ADD A,#05FH
MOV R7,A
CLR A
ADDC A,#0FFH
MOV R6,A
CLR A
MOV R4,A
MOV R5,A
MOV A,R3
ADD A,R7
MOV R7,A
MOV A,R2
ADDC A,R6
MOV R6,A
MOV A,R5
ADDC A,R1
MOV R5,A
MOV A,R4
ADDC A,R0
MOV R4,A
CLR A
MOV R3,#020H
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?LMUL
MOV R0,#LOW (FontCount?551)
LCALL ?C?LSTIDATA
; // FontCountH=P1;
; P1=(P1&0x8f)|((FontCount>>12)&0x70); //送頁面地址
; SOURCE LINE # 396
MOV R0,#LOW (FontCount?551)
LCALL ?C?LLDIDATA
MOV R0,#0CH
LCALL ?C?ULSHR
MOV A,R7
ANL A,#070H
MOV R3,A
CLR A
MOV A,P1
ANL A,#08FH
MOV R7,A
CLR A
MOV A,R3
ORL A,R7
MOV R7,A
CLR A
MOV P1,R7
; // P1=(FontCountH&0x9f)|((FontCount>>16)<<5); //送頁面地址
;
; pFont = (unsigned char *)((unsigned long)FontCount&0x0ffff|0x10000);
; SOURCE LINE # 399
MOV R0,#LOW (FontCount?551)
LCALL ?C?LLDIDATA
MOV A,R7
MOV A,R6
CLR A
MOV R4,A
MOV A,R7
MOV A,R6
MOV A,#01H
DEC A
XCH A,R1
MOV A,R7
XCH A,R1
XCH A,R2
MOV A,R6
XCH A,R2
MOV pFont?548,#01H
MOV pFont?548+01H,R2
MOV pFont?548+02H,R1
; // memcpy(Font,pFont,32);
; pCE=1; //片選 選中020字庫儲存器
; SOURCE LINE # 401
SETB pCE
; for (i = 0; i < 32; i++) {
; SOURCE LINE # 402
MOV i?552,A
?C0040:
; if ( ( (&pFont[i]) ==0 )&& (i!=0)) P1=P1+0x10;
; SOURCE LINE # 403
MOV R6,#00H
MOV A,pFont?548+02H
ADD A,i?552
MOV R1,A
MOV A,R6
ADDC A,pFont?548+01H
ORL A,R1
JNZ ?C0043
MOV A,i?552
JZ ?C0043
MOV A,#010H
ADD A,P1
MOV P1,A
?C0043:
; Font[i]= pFont[i];
; SOURCE LINE # 404
MOV R3,pFont?548
MOV R2,pFont?548+01H
MOV R1,pFont?548+02H
MOV DPL,i?552
MOV DPH,#00H
LCALL ?C?CLDOPTR
MOV R7,A
MOV A,#LOW (Font?549)
ADD A,i?552
MOV R0,A
MOV A,R7
MOV @R0,A
; }
; SOURCE LINE # 405
INC i?552
MOV A,i?552
CJNE A,#020H,?C0040
?C0041:
; pCE=0;
; SOURCE LINE # 406
CLR pCE
; PingShu = FontIndex/LIEBYTE;
; SOURCE LINE # 407
MOV R6,FontIndex?550
MOV R7,FontIndex?550+01H
MOV R4,#00H
MOV R5,#012H
LCALL ?C?UIDIV
MOV PingShu,R7
; for (j = 0; j < HANGSHU; j++) {
; SOURCE LINE # 408
CLR A
MOV j?555,A
?C0044:
; temp=LieShu%LIEBYTE;
; SOURCE LINE # 409
MOV R6,LieShu?554
MOV R7,LieShu?554+01H
MOV R4,#00H
MOV R5,#012H
LCALL ?C?UIDIV
MOV temp?553,R5
; DispShuBuf[PingShu][j][temp]= Font[ 2 * j];
; SOURCE LINE # 410
MOV A,j?555
ADD A,ACC
ADD A,#LOW (Font?549)
MOV R0,A
MOV A,@R0
MOV R7,A
MOV B,#020H
MOV A,PingShu
MUL AB
ADD A,#LOW (DispShuBuf)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (DispShuBuf)
MOV DPH,A
ADD A,PingShu
MOV DPH,A
MOV B,#012H
MOV A,j?555
LCALL ?C?OFFXADD
MOV A,DPL
ADD A,temp?553
MOV DPL,A
CLR A
ADDC A,DPH
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
; DispShuBuf[PingShu][j][temp+1]=Font[2 * j + 1];
; SOURCE LINE # 411
MOV A,j?555
ADD A,ACC
ADD A,#LOW (Font?549+01H)
MOV R0,A
MOV A,@R0
MOV R7,A
MOV B,#020H
MOV A,PingShu
MUL AB
ADD A,#LOW (DispShuBuf+01H)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (DispShuBuf+01H)
MOV DPH,A
ADD A,PingShu
MOV DPH,A
MOV B,#012H
MOV A,j?555
LCALL ?C?OFFXADD
MOV A,DPL
ADD A,temp?553
MOV DPL,A
CLR A
ADDC A,DPH
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
; }
; SOURCE LINE # 412
INC j?555
MOV A,j?555
XRL A,#010H
JNZ ?C0044
?C0045:
; FontIndex += 2;
; SOURCE LINE # 413
MOV A,#02H
ADD A,FontIndex?550+01H
MOV FontIndex?550+01H,A
CLR A
ADDC A,FontIndex?550
MOV FontIndex?550,A
; LieShu +=2;
; SOURCE LINE # 414
MOV A,#02H
ADD A,LieShu?554+01H
MOV LieShu?554+01H,A
CLR A
ADDC A,LieShu?554
MOV LieShu?554,A
; }
; SOURCE LINE # 415
LJMP ?C0038
?C0047:
;
; while( (temp=LieShu%LIEBYTE) >0){
; SOURCE LINE # 417
MOV R6,LieShu?554
MOV R7,LieShu?554+01H
MOV R4,#00H
MOV R5,#012H
LCALL ?C?UIDIV
XCH A,R7
MOV A,R5
XCH A,R7
MOV temp?553,R7
MOV A,R7
SETB C
SUBB A,#00H
JC ?C0052
; for (j = 0; j < HANGSHU; j++) {
; SOURCE LINE # 418
CLR A
MOV j?555,A
?C0049:
; DispShuBuf[PingShu][j][temp]= 0;
; SOURCE LINE # 419
MOV B,#020H
MOV A,PingShu
MUL AB
ADD A,#LOW (DispShuBuf)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (DispShuBuf)
MOV DPH,A
ADD A,PingShu
MOV DPH,A
MOV B,#012H
MOV A,j?555
LCALL ?C?OFFXADD
MOV A,DPL
ADD A,temp?553
MOV DPL,A
CLR A
ADDC A,DPH
MOV DPH,A
CLR A
MOVX @DPTR,A
; DispShuBuf[PingShu][j][temp+1]=0;
; SOURCE LINE # 420
MOV B,#020H
MOV A,PingShu
MUL AB
ADD A,#LOW (DispShuBuf+01H)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (DispShuBuf+01H)
MOV DPH,A
ADD A,PingShu
MOV DPH,A
MOV B,#012H
MOV A,j?555
LCALL ?C?OFFXADD
MOV A,DPL
ADD A,temp?553
MOV DPL,A
CLR A
ADDC A,DPH
MOV DPH,A
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 421
INC j?555
MOV A,j?555
CJNE A,#010H,?C0049
?C0050:
; LieShu += 2;
; SOURCE LINE # 422
MOV A,#02H
ADD A,LieShu?554+01H
MOV LieShu?554+01H,A
CLR A
ADDC A,LieShu?554
MOV LieShu?554,A
; }
; SOURCE LINE # 423
SJMP ?C0047
; }
; SOURCE LINE # 424
?C0052:
RET
; END OF _MapDrawString
;
; //***********************************************************************
; //串行口初始化
; void uart_init(void){
RSEG ?PR?uart_init?XSPMAIN
uart_init:
; SOURCE LINE # 428
; SCON=0x50; //設定串行口工作方式為方式1;允許接收
; SOURCE LINE # 429
MOV SCON,#050H
; PCON=0;
; SOURCE LINE # 430
CLR A
MOV PCON,A
; TH1=USART_BAND;
; SOURCE LINE # 431
MOV TH1,#0FBH
; TR1=1;
; SOURCE LINE # 432
SETB TR1
; }
; SOURCE LINE # 433
RET
; END OF uart_init
CSEG AT 00023H
LJMP UartInt
;
; //串行口中斷函數
;
; void UartInt() interrupt 4 using 2{
RSEG ?PR?UartInt?XSPMAIN
USING 2
UartInt:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 2
MOV PSW,#010H
; SOURCE LINE # 437
; static bit pCEtemp;
; pCEtemp=pCE; //片選保護
; SOURCE LINE # 439
MOV C,pCE
MOV pCEtemp?758,C
; pCE=0;
; SOURCE LINE # 440
CLR pCE
; UartStart=1;
; SOURCE LINE # 441
SETB UartStart
; UartTimerCount=2000;
; SOURCE LINE # 442
MOV UartTimerCount,#07H
MOV UartTimerCount+01H,#0D0H
; switch (UartStep) {
; SOURCE LINE # 443
MOV A,UartStep
DEC A
JZ ?C0056
DEC A
JNZ $ + 5H
LJMP ?C0067
ADD A,#02H
JZ $ + 5H
LJMP ?C0054
; case 0:
; SOURCE LINE # 444
?C0055:
; UartCommand[0]=SBUF;
; SOURCE LINE # 445
MOV UartCommand,SBUF
; UartStep++;
; SOURCE LINE # 446
INC UartStep
; break;
; SOURCE LINE # 447
LJMP ?C0054
; case 1:
; SOURCE LINE # 448
?C0056:
; UartCommand[1]=SBUF;
; SOURCE LINE # 449
MOV UartCommand+01H,SBUF
; if(!strcmp(UartCommand,"WR")) {
; SOURCE LINE # 450
MOV R0,#LOW (UartCommand)
MOV R4,#HIGH (UartCommand)
MOV R5,#00H
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL ?C?STRCMP
MOV A,R7
JNZ ?C0057
; HelloOk=1;
; SOURCE LINE # 451
SETB HelloOk
; BaoZhaBit=0;
; SOURCE LINE # 452
CLR BaoZhaBit
; UsartRecv_rp=0;
; SOURCE LINE # 453
MOV UsartRecv_rp,A
MOV UsartRecv_rp+01H,A
; UartStep++;
; SOURCE LINE # 454
INC UartStep
; }
; SOURCE LINE # 455
LJMP ?C0054
?C0057:
; else if(!strcmp(UartCommand,"RD")) {
; SOURCE LINE # 456
MOV R0,#LOW (UartCommand)
MOV R4,#HIGH (UartCommand)
MOV R5,#00H
MOV R3,#0FFH
MOV R2,#HIGH (?SC_3)
MOV R1,#LOW (?SC_3)
LCALL ?C?STRCMP
MOV A,R7
JNZ ?C0059
; UartEnd=0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -