📄 t.src
字号:
; unsigned char Flag=0;
; //=====================================================================//
;
; //====================主程序======================//
; main()
RSEG ?PR?main?T
main:
USING 0
; SOURCE LINE # 22
; {
; SOURCE LINE # 23
; TMOD=0x21;
; SOURCE LINE # 24
MOV TMOD,#021H
; TH1=0xE8; //波特率1200时,定时器/计数器T1自动重装初值
; SOURCE LINE # 25
MOV TH1,#0E8H
; TL1=0xE8;
; SOURCE LINE # 26
MOV TL1,#0E8H
; PCON=0x00; //SMOD为0不倍增模式
; SOURCE LINE # 27
CLR A
MOV PCON,A
; SCON=0xc0; //串行口设置为模式3,//
; SOURCE LINE # 28
MOV SCON,#0C0H
; //REN=1; //允许接收
; //ES=0; //串行口允许中断
; EA=1;
; SOURCE LINE # 31
SETB EA
; IT1=1;
; SOURCE LINE # 32
SETB IT1
; IT0=1; //键盘中断
; SOURCE LINE # 33
SETB IT0
; EX0=1;EX1=1;
; SOURCE LINE # 34
SETB EX0
SETB EX1
; Initialize();
; SOURCE LINE # 35
LCALL Initialize
; ClearScr(0,0,8,128);
; SOURCE LINE # 36
MOV R0,#LOW (?_ClearScr?BYTE+03H)
MOV A,#080H
MOVX @R0,A
MOV R3,#08H
CLR A
MOV R5,A
MOV R7,A
LCALL _ClearScr
; DisplayListChar(0,0,Tip,0);
; SOURCE LINE # 37
MOV R3,#0FFH
MOV R2,#HIGH (Tip)
MOV R1,#LOW (Tip)
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
MOV R5,A
MOV R7,A
LCALL _DisplayListChar
; DisplayPic(1,1,2,16,wu,1);DisplayPic(1,17,2,16,zhi,1);DisplayPic(1,33,2,16,bin,1);//汉字测试
; SOURCE LINE # 38
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (wu)
MOVX @R0,A
INC R0
MOV A,#LOW (wu)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,A
MOV R7,A
LCALL _DisplayPic
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (zhi)
MOVX @R0,A
INC R0
MOV A,#LOW (zhi)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,#011H
MOV R7,A
LCALL _DisplayPic
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (bin)
MOVX @R0,A
INC R0
MOV A,#LOW (bin)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,#021H
MOV R7,A
LCALL _DisplayPic
; DisplayPic(3,1,2,16,hzk[0],1);DisplayPic(3,17,2,16,hzk[1],1);DisplayPic(3,33,2,16,hzk[2],1);//汉字测试
; SOURCE LINE # 39
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (hzk)
MOVX @R0,A
INC R0
MOV A,#LOW (hzk)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,A
MOV R7,#03H
LCALL _DisplayPic
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (hzk+020H)
MOVX @R0,A
INC R0
MOV A,#LOW (hzk+020H)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,#011H
MOV R7,#03H
LCALL _DisplayPic
MOV R0,#LOW (?_DisplayPic?BYTE+03H)
MOV A,#010H
MOVX @R0,A
INC R0
MOV A,#0FFH
MOVX @R0,A
INC R0
MOV A,#HIGH (hzk+040H)
MOVX @R0,A
INC R0
MOV A,#LOW (hzk+040H)
MOVX @R0,A
INC R0
MOV A,#01H
MOVX @R0,A
MOV R3,#02H
MOV R5,#021H
MOV R7,#03H
LCALL _DisplayPic
; Delay(200);
; SOURCE LINE # 40
MOV R7,#0C8H
MOV R6,#00H
LCALL _Delay
?C0001:
; while(1)
; SOURCE LINE # 41
; {if (key2==0){Delay(2000);while(key2==0);Flag=3;}
; SOURCE LINE # 42
JB key2,?C0003
MOV R7,#0D0H
MOV R6,#07H
LCALL _Delay
?C0004:
JNB key2,?C0004
?C0005:
MOV R0,#LOW (Flag)
MOV A,#03H
MOVX @R0,A
?C0003:
; switch (Flag)
; SOURCE LINE # 43
MOV R0,#LOW (Flag)
MOVX A,@R0
ADD A,#0FEH
JZ ?C0008
DEC A
JZ ?C0009
ADD A,#02H
JNZ ?C0001
; {case 1:LED=0;ClearScr(0,0,8,128);DisplayListChar(0,0,Rec,0);
; SOURCE LINE # 44
?C0007:
CLR LED
MOV R0,#LOW (?_ClearScr?BYTE+03H)
MOV A,#080H
MOVX @R0,A
MOV R3,#08H
CLR A
MOV R5,A
MOV R7,A
LCALL _ClearScr
MOV R3,#0FFH
MOV R2,#HIGH (Rec)
MOV R1,#LOW (Rec)
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
MOV R5,A
MOV R7,A
LCALL _DisplayListChar
; ReadCode();LED2=0;DisplayListChar(0,0,End,0);Flag=0;break;
; SOURCE LINE # 45
LCALL ReadCode
CLR LED2
MOV R3,#0FFH
MOV R2,#HIGH (End?)
MOV R1,#LOW (End?)
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
MOV R5,A
MOV R7,A
LCALL _DisplayListChar
SJMP ?C0051
; case 2:ClearScr(0,0,8,128);DisplayUART();Flag=0;break;
; SOURCE LINE # 46
?C0008:
MOV R0,#LOW (?_ClearScr?BYTE+03H)
MOV A,#080H
MOVX @R0,A
MOV R3,#08H
CLR A
MOV R5,A
MOV R7,A
LCALL _ClearScr
LCALL DisplayUART
?C0051:
CLR A
MOV R0,#LOW (Flag)
MOVX @R0,A
SJMP ?C0001
; case 3:ClearScr(0,0,8,128);DisplayListChar(0,0,Cod,0);ChangCode();Flag=0;break;
; SOURCE LINE # 47
?C0009:
MOV R0,#LOW (?_ClearScr?BYTE+03H)
MOV A,#080H
MOVX @R0,A
MOV R3,#08H
CLR A
MOV R5,A
MOV R7,A
LCALL _ClearScr
MOV R3,#0FFH
MOV R2,#HIGH (Cod)
MOV R1,#LOW (Cod)
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
MOV R5,A
MOV R7,A
LCALL _DisplayListChar
LCALL ChangCode
CLR A
MOV R0,#LOW (Flag)
MOVX @R0,A
LJMP ?C0001
; END OF main
CSEG AT 00013H
LJMP Key_1
; }
; }
; }
; //=============================================================================//
; void Key_1() interrupt 2
RSEG ?PR?Key_1?T
USING 0
Key_1:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 52
; {
; Delay(2000);
; SOURCE LINE # 54
MOV R7,#0D0H
MOV R6,#07H
LCALL _Delay
?C0011:
; while(key1==0);
; SOURCE LINE # 55
JNB key1,?C0011
?C0012:
; Flag=1;__asm RETI
; SOURCE LINE # 56
MOV R0,#LOW (Flag)
MOV A,#01H
MOVX @R0,A
RETI
; }
; SOURCE LINE # 57
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF Key_1
CSEG AT 00003H
LJMP Key_0
; //==============================================================================//
;
; //KEY0确认键处理子程序==============================================================//
; void Key_0() interrupt 0
RSEG ?PR?Key_0?T
USING 0
Key_0:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 61
; {
; Delay(2000);
; SOURCE LINE # 63
MOV R7,#0D0H
MOV R6,#07H
LCALL _Delay
?C0014:
; while(key0==0);
; SOURCE LINE # 64
JNB key0,?C0014
?C0015:
; Flag=2;
; SOURCE LINE # 65
MOV R0,#LOW (Flag)
MOV A,#02H
MOVX @R0,A
; }
; SOURCE LINE # 66
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF Key_0
CSEG AT 00023H
LJMP Uart
;
; //UART中断程序
; void Uart() interrupt 4
RSEG ?PR?Uart?T
USING 0
Uart:
PUSH ACC
PUSH PSW
MOV PSW,#00H
PUSH AR0
USING 0
; SOURCE LINE # 69
; {RI=0;
; SOURCE LINE # 70
CLR RI
; SerialBuf[SerialBufCount]= SBUF;
; SOURCE LINE # 71
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
ADD A,#LOW (SerialBuf)
MOV R0,A
MOV A,SBUF
MOVX @R0,A
; SerialBufCount++;
; SOURCE LINE # 72
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
INC A
MOVX @R0,A
; }
; SOURCE LINE # 73
POP AR0
POP PSW
POP ACC
RETI
; END OF Uart
; //==============================================================================//
; unsigned char DisplayUART()
RSEG ?PR?DisplayUART?T
DisplayUART:
USING 0
; SOURCE LINE # 75
; {
; SOURCE LINE # 76
; unsigned char i,x=0,y=0;
; SOURCE LINE # 77
CLR A
MOV R0,#LOW (x?441)
MOVX @R0,A
INC R0
MOVX @R0,A
; TR1=1;//ES=1;
; SOURCE LINE # 78
SETB TR1
; for (i=0;i<SerialBufCount;i++)
; SOURCE LINE # 79
MOV R0,#LOW (i?440)
MOVX @R0,A
?C0018:
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
MOV R7,A
MOV R0,#LOW (i?440)
MOVX A,@R0
MOV R6,A
CLR C
SUBB A,R7
JNC ?C0019
; {
; SOURCE LINE # 80
; SendData(SerialBuf[i]);
; SOURCE LINE # 81
MOV A,#LOW (SerialBuf)
ADD A,R6
MOV R0,A
MOVX A,@R0
MOV R7,A
LCALL _SendData
; if (y>120)y=0,x++;
; SOURCE LINE # 82
MOV R0,#LOW (y?442)
MOVX A,@R0
SETB C
SUBB A,#078H
JC ?C0021
CLR A
MOVX @R0,A
DEC R0
MOVX A,@R0
INC A
MOVX @R0,A
?C0021:
; if (SerialBufCount>100)return(1);
; SOURCE LINE # 83
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
SETB C
SUBB A,#064H
JC ?C0022
MOV R7,#01H
RET
?C0022:
; DisplayListChar(x,y,&Number[SerialBuf[i]],0);y+=14;
; SOURCE LINE # 84
MOV R0,#LOW (i?440)
MOVX A,@R0
ADD A,#LOW (SerialBuf)
MOV R0,A
MOVX A,@R0
MOV B,#03H
MUL AB
ADD A,#LOW (Number?)
MOV R1,A
MOV A,#HIGH (Number?)
ADDC A,B
MOV R2,A
MOV R3,#0FFH
MOV R0,#LOW (x?441)
MOVX A,@R0
MOV R7,A
INC R0
MOVX A,@R0
MOV R5,A
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
LCALL _DisplayListChar
MOV R0,#LOW (y?442)
MOVX A,@R0
ADD A,#0EH
MOVX @R0,A
; }
; SOURCE LINE # 85
MOV R0,#LOW (i?440)
MOVX A,@R0
INC A
MOVX @R0,A
SJMP ?C0018
?C0019:
; SerialBufCount=0;LED2=1;LED=1;
; SOURCE LINE # 86
CLR A
MOV R0,#LOW (SerialBufCount)
MOVX @R0,A
SETB LED2
SETB LED
; TR1=0;//ES=0;
; SOURCE LINE # 87
CLR TR1
; }
; SOURCE LINE # 88
?C0023:
RET
; END OF DisplayUART
; //---------------------------------------------*/
; void SendData(unsigned char Serial_data)
RSEG ?PR?_SendData?T
_SendData:
; SOURCE LINE # 90
;---- Variable 'Serial_data?543' assigned to Register 'R7' ----
; {
; SOURCE LINE # 91
; ACC=Serial_data;
; SOURCE LINE # 92
MOV A,R7
; TB8=P;TI=0;
; SOURCE LINE # 93
MOV C,P
MOV TB8,C
CLR TI
; SBUF=Serial_data;
; SOURCE LINE # 94
MOV SBUF,A
?C0024:
; while(!TI);
; SOURCE LINE # 95
JNB TI,?C0024
?C0025:
; TI=0;
; SOURCE LINE # 96
CLR TI
; }
; SOURCE LINE # 97
RET
; END OF _SendData
;
; //---------------------------------------------
; unsigned char ReadCode()
RSEG ?PR?ReadCode?T
ReadCode:
USING 0
; SOURCE LINE # 100
; {
; SOURCE LINE # 101
; unsigned char i;
; SerialBufCount=0;
; SOURCE LINE # 103
CLR A
MOV R0,#LOW (SerialBufCount)
MOVX @R0,A
?C0027:
; while(Inf==1);// 等待信号
; SOURCE LINE # 104
JB Inf,?C0027
?C0028:
; TH0=0x00;
; SOURCE LINE # 105
CLR A
MOV TH0,A
; TL0=0x00;
; SOURCE LINE # 106
MOV TL0,A
; TR0=1; // 如果有信号开定时器
; SOURCE LINE # 107
SETB TR0
; //--------------------------------
; for (i=0;i<100;i++)//读值
; SOURCE LINE # 109
;---- Variable 'i?644' assigned to Register 'R7' ----
MOV R7,A
?C0029:
; {
; SOURCE LINE # 110
?C0032:
; while(Inf==0);TR0=0;
; SOURCE LINE # 111
JNB Inf,?C0032
?C0033:
CLR TR0
; SerialBuf[SerialBufCount]= TH0;
; SOURCE LINE # 112
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
ADD A,#LOW (SerialBuf)
MOV R0,A
MOV A,TH0
MOVX @R0,A
; SerialBufCount++; TH0=0x00;TL0=0x00;TR0=1;
; SOURCE LINE # 113
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
INC A
MOVX @R0,A
CLR A
MOV TH0,A
MOV TL0,A
SETB TR0
?C0034:
;
; while(Inf==1);
; SOURCE LINE # 115
JB Inf,?C0034
?C0035:
; if (TH0>0x4e) {SerialBufCount--;return 0;}
; SOURCE LINE # 116
MOV A,TH0
SETB C
SUBB A,#04EH
JC ?C0036
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
DEC A
MOVX @R0,A
MOV R7,#00H
RET
?C0036:
; TR0=0;
; SOURCE LINE # 117
CLR TR0
; SerialBuf[SerialBufCount]= TH0;
; SOURCE LINE # 118
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
ADD A,#LOW (SerialBuf)
MOV R0,A
MOV A,TH0
MOVX @R0,A
; SerialBufCount++; TH0=0x00;TL0=0x00;TR0=1;
; SOURCE LINE # 119
MOV R0,#LOW (SerialBufCount)
MOVX A,@R0
INC A
MOVX @R0,A
CLR A
MOV TH0,A
MOV TL0,A
SETB TR0
; }
; SOURCE LINE # 120
INC R7
MOV A,R7
CJNE A,#064H,?C0029
; }
; SOURCE LINE # 121
?C0037:
RET
; END OF ReadCode
;
; //--------------------------------
; void ChangCode()
RSEG ?PR?ChangCode?T
ChangCode:
USING 0
; SOURCE LINE # 124
; {
; SOURCE LINE # 125
; unsigned char temp=0,i,k=3,x,Code[4];
; SOURCE LINE # 126
;---- Variable 'temp?745' assigned to Register 'R7' ----
CLR A
MOV R7,A
;---- Variable 'k?747' assigned to Register 'R6' ----
MOV R6,#03H
; for (x=0;x<4;x++)
; SOURCE LINE # 127
MOV R0,#LOW (x?748)
MOVX @R0,A
?C0038:
; {
; SOURCE LINE # 128
; for (i=0;i<8;i++)
; SOURCE LINE # 129
CLR A
MOV R0,#LOW (i?746)
MOVX @R0,A
?C0041:
MOV R0,#LOW (i?746)
MOVX A,@R0
MOV R5,A
CLR C
SUBB A,#08H
JNC ?C0042
; {
; SOURCE LINE # 130
; temp=temp>>1;
; SOURCE LINE # 131
MOV A,R7
CLR C
RRC A
MOV R7,A
; if (SerialBuf[i+k]>0x04){temp=temp|0x80;k++;}
; SOURCE LINE # 132
MOV A,R5
ADD A,R6
ADD A,#LOW (SerialBuf)
MOV R0,A
MOVX A,@R0
MOV R5,A
SETB C
SUBB A,#04H
JC ?C0044
MOV A,R7
ORL A,#080H
MOV R7,A
INC R6
SJMP ?C0043
?C0044:
; else if (SerialBuf[i+k]<0x04){temp=temp&0x7f;k++;}
; SOURCE LINE # 133
MOV A,R5
CLR C
SUBB A,#04H
JNC ?C0043
MOV A,R7
ANL A,#07FH
MOV R7,A
INC R6
; }
; SOURCE LINE # 134
?C0043:
MOV R0,#LOW (i?746)
MOVX A,@R0
INC A
MOVX @R0,A
SJMP ?C0041
?C0042:
;
; Code[x]=temp;k=k+8;
; SOURCE LINE # 136
MOV R0,#LOW (x?748)
MOVX A,@R0
ADD A,#LOW (Code?749)
MOV R0,A
MOV A,R7
MOVX @R0,A
MOV A,#08H
ADD A,R6
MOV R6,A
; }
; SOURCE LINE # 137
MOV R0,#LOW (x?748)
MOVX A,@R0
INC A
MOVX @R0,A
MOVX A,@R0
CJNE A,#04H,?C0038
?C0039:
; i=30;
; SOURCE LINE # 138
MOV R0,#LOW (i?746)
MOV A,#01EH
MOVX @R0,A
; TR1=1;
; SOURCE LINE # 139
SETB TR1
; for (x=0;x<4;x++)
; SOURCE LINE # 140
CLR A
INC R0
MOVX @R0,A
?C0047:
MOV R0,#LOW (x?748)
MOVX A,@R0
MOV R7,A
CLR C
SUBB A,#04H
JNC ?C0048
; {SendData(Code[x]);DisplayListChar(2,i,&Number[Code[x]],0);i+=14;}
; SOURCE LINE # 141
MOV A,#LOW (Code?749)
ADD A,R7
MOV R0,A
MOVX A,@R0
MOV R7,A
LCALL _SendData
MOV R0,#LOW (x?748)
MOVX A,@R0
ADD A,#LOW (Code?749)
MOV R0,A
MOVX A,@R0
MOV B,#03H
MUL AB
ADD A,#LOW (Number?)
MOV R1,A
MOV A,#HIGH (Number?)
ADDC A,B
MOV R2,A
MOV R3,#0FFH
MOV R0,#LOW (i?746)
MOVX A,@R0
MOV R5,A
CLR A
MOV R0,#LOW (?_DisplayListChar?BYTE+05H)
MOVX @R0,A
MOV R7,#02H
LCALL _DisplayListChar
MOV R0,#LOW (i?746)
MOVX A,@R0
ADD A,#0EH
MOVX @R0,A
INC R0
MOVX A,@R0
INC A
MOVX @R0,A
SJMP ?C0047
?C0048:
; TR1=0;LED2=1;LED=1;
; SOURCE LINE # 142
CLR TR1
SETB LED2
SETB LED
; }
; SOURCE LINE # 143
RET
; END OF ChangCode
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -