📄 main.src
字号:
SETB X_M
?C0008:
;
; SOURCE LINE # 43
; }
; SOURCE LINE # 44
;
; SOURCE LINE # 45
MOV R6,F
MOV R7,F+01H
MOV R4,#00H
MOV R5,#064H
LCALL ?C?IMUL
?C0010:
; void service_t0(void) interrupt TF0_VECTOR using 2
; SOURCE LINE # 46
MOV A,R7
DEC R7
MOV R4,AR6
JNZ ?C0389
DEC R6
?C0389:
ORL A,R4
JNZ ?C0010
?C0011:
; {
; SOURCE LINE # 47
CLR X_M
;
; SOURCE LINE # 48
CLR A
MOV R6,A
MOV R7,A
?C0012:
; TH0=(65536-ir_time)/256;
; SOURCE LINE # 49
MOV A,R7
DEC R7
MOV R4,AR6
JNZ ?C0390
DEC R6
?C0390:
ORL A,R4
JNZ ?C0012
?C0013:
; TL0=(65536-ir_time)%256;
; SOURCE LINE # 50
SETB X_M
; ir_signtime++;
; SOURCE LINE # 51
MOV A,R3
DEC R3
JNZ ?C0391
DEC R2
?C0391:
; if (ir_signtime>250) {ir_signtime=0; TR0=0;ir_start_flag=0;ir_rpt1=ir_rpt2=0;
; SOURCE LINE # 52
MOV A,R3
ORL A,R2
JNZ ?C0008
; ir_data[2]=ir_data[3]=0xff; //清除数据.
; }
; SOURCE LINE # 54
?C0014:
RET
; END OF x_zm
; //如果接收到单次的触发脉冲,如干扰或红外信号的结束,关闭定时器,并把红外引导标记清除,把连发标记也清除
; }
;
RSEG ?PR?_weizhi?MAIN
_weizhi:
USING 0
; SOURCE LINE # 57
;---- Variable 'XOY?246' assigned to Register 'R2/R3' ----
;---- Variable 'y2?245' assigned to Register 'R4/R5' ----
;---- Variable 'x2?244' assigned to Register 'R6/R7' ----
; void service_ex0(void) interrupt IE0_VECTOR using 3
; SOURCE LINE # 58
; {
; EA=0 ; //中断关闭
; SOURCE LINE # 60
SETB C
MOV A,R7
SUBB A,#00H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC ?C0015
SETB C
MOV A,R5
SUBB A,#00H
MOV A,R4
XRL A,#080H
SUBB A,#080H
JC ?C0015
; TH0=(65536-ir_time)/256;
; SOURCE LINE # 61
MOV R2,#00H
MOV R3,#01H
?C0015:
; TL0=(65536-ir_time)%256;
; SOURCE LINE # 62
CLR C
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0016
MOV A,R5
SUBB A,#00H
MOV A,R4
XRL A,#080H
SUBB A,#080H
JC ?C0016
;
; SOURCE LINE # 63
MOV R2,#00H
MOV R3,#02H
?C0016:
; if(!ir_start_flag&&ir_signtime>20) //如果没收到引导脉冲,进行引导脉冲CHECK.
; SOURCE LINE # 64
CLR C
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0017
CLR C
MOV A,R4
XRL A,#080H
SUBB A,#080H
JNC ?C0017
; {
; SOURCE LINE # 65
MOV R2,#00H
MOV R3,#03H
?C0017:
; ir_sign_count=0; //脉冲记数
; SOURCE LINE # 66
SETB C
MOV A,R7
SUBB A,#00H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC ?C0018
MOV A,R4
XRL A,#080H
SUBB A,#080H
JNC ?C0018
; ir_start_flag=1; //ir_start_flag 引导信号标记。
; SOURCE LINE # 67
MOV R2,#00H
MOV R3,#04H
?C0018:
; }
; SOURCE LINE # 68
SETB C
MOV A,R7
SUBB A,#00H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC ?C0019
MOV A,R5
ORL A,R4
JNZ ?C0019
MOV R2,A
MOV R3,#05H
?C0019:
;
; SOURCE LINE # 69
MOV A,R7
ORL A,R6
JNZ ?C0020
SETB C
MOV A,R5
SUBB A,#00H
MOV A,R4
XRL A,#080H
SUBB A,#080H
JC ?C0020
MOV R2,#00H
MOV R3,#06H
?C0020:
; if(ir_start_flag)
; SOURCE LINE # 70
CLR C
MOV A,R6
XRL A,#080H
SUBB A,#080H
JNC ?C0021
MOV A,R5
ORL A,R4
JNZ ?C0021
MOV R2,A
MOV R3,#07H
?C0021:
; {
; SOURCE LINE # 71
MOV A,R7
ORL A,R6
JNZ ?C0022
CLR C
MOV A,R4
XRL A,#080H
SUBB A,#080H
JNC ?C0022
MOV R2,#00H
MOV R3,#08H
?C0022:
; if(ir_signtime>0&&ir_signtime<10) //符合真正数据的脉冲
; SOURCE LINE # 72
MOV R7,AR3
MOV R6,AR2
; {
; SOURCE LINE # 73
?C0023:
RET
; END OF _weizhi
;
; ir_temp>>=1;
RSEG ?PR?xoy1?MAIN
xoy1:
USING 0
; SOURCE LINE # 75
;
; SOURCE LINE # 76
; if(ir_signtime>3) ir_temp|=0x80; //如果时间>3是1
; SOURCE LINE # 77
SETB X_F
;
; SOURCE LINE # 78
SETB Y_F
?C0024:
; ir_sign_count++; //红外脉冲+1
; SOURCE LINE # 79
MOV A,n+01H
ORL A,n
JZ ?C0028
;
; SOURCE LINE # 80
CLR C
MOV A,Fm1
XRL A,#080H
SUBB A,#080H
JC ?C0026
LCALL L?0467
SJMP ?C0027
?C0026:
; switch (ir_sign_count)
; SOURCE LINE # 81
LCALL L?0469
?C0027:
; {
; SOURCE LINE # 82
MOV A,n+01H
DEC n+01H
JNZ ?C0024
DEC n
?C0392:
; case 8:
; SOURCE LINE # 83
SJMP ?C0024
; ir_data[0]=ir_temp; //设备码
; SOURCE LINE # 84
?C0028:
RET
; END OF xoy1
; break;
; case 16:
RSEG ?PR?xoy2?MAIN
xoy2:
USING 0
; SOURCE LINE # 86
; ir_data[1]=ir_temp;
; SOURCE LINE # 87
; break;
; SOURCE LINE # 88
CLR X_F
; case 24:
; SOURCE LINE # 89
SETB Y_F
?C0029:
; ir_data[2]=ir_temp; //数据码
; SOURCE LINE # 90
MOV A,n+01H
ORL A,n
JZ ?C0033
; break;
; SOURCE LINE # 91
CLR C
MOV A,Fm1
XRL A,#080H
SUBB A,#080H
JC ?C0031
MOV A,n+01H
DEC n+01H
JNZ ?C0393
DEC n
?C0393:
LCALL L?0467
SJMP ?C0029
?C0031:
; case 32:
; SOURCE LINE # 92
MOV A,n+01H
DEC n+01H
JNZ ?C0394
DEC n
?C0394:
LCALL L?0469
; ir_data[3]=ir_temp;
; SOURCE LINE # 93
SJMP ?C0029
;
; SOURCE LINE # 94
?C0033:
RET
; END OF xoy2
; if (ir_data[0]==~ir_data[1]&&ir_data[2]==~ir_data[3])
; {
RSEG ?PR?xoy3?MAIN
xoy3:
USING 0
; SOURCE LINE # 96
; ir_flag=1; //有键按下.
; SOURCE LINE # 97
CLR X_F
; SBUF=ir_data[2];
; SOURCE LINE # 98
CLR Y_F
?C0034:
;
; SOURCE LINE # 99
MOV A,n+01H
ORL A,n
JZ ?C0038
; while(!TI){;}
; SOURCE LINE # 100
CLR C
MOV A,Fm1
XRL A,#080H
SUBB A,#080H
JC ?C0036
MOV A,n+01H
DEC n+01H
JNZ ?C0395
DEC n
?C0395:
LCALL L?0468
SJMP ?C0034
?C0036:
; TI=0;
; SOURCE LINE # 101
MOV A,n+01H
DEC n+01H
JNZ ?C0396
DEC n
?C0396:
LCALL L?0470
;
; SOURCE LINE # 102
SJMP ?C0034
; }
; SOURCE LINE # 103
?C0038:
RET
; END OF xoy3
;
;
RSEG ?PR?xoy4?MAIN
xoy4:
USING 0
; SOURCE LINE # 105
; break;
; SOURCE LINE # 106
; }
; SOURCE LINE # 107
SETB X_F
;
; SOURCE LINE # 108
CLR Y_F
?C0039:
; }
; SOURCE LINE # 109
MOV A,n+01H
ORL A,n
JZ ?C0043
;
; SOURCE LINE # 110
CLR C
MOV A,Fm1
XRL A,#080H
SUBB A,#080H
JC ?C0041
MOV A,n+01H
DEC n+01H
JNZ ?C0397
DEC n
?C0397:
LCALL L?0468
SJMP ?C0039
?C0041:
; if(ir_signtime>0X40) {
; SOURCE LINE # 111
MOV A,n+01H
DEC n+01H
JNZ ?C0398
DEC n
?C0398:
LCALL L?0470
; if (ir_rpt1>10) { ir_rpt2++;if(ir_rpt2==2) {ir_rpt2=0;ir_flag=1;} }
; SOURCE LINE # 112
SJMP ?C0039
; else ir_rpt1++ ;
; SOURCE LINE # 113
?C0043:
RET
; END OF xoy4
; } //连发码的处理:接收到连发码,淹死20个码,然后每5个码发送一次键按下信号
; }
; ir_signtime=0; //计数器归0
RSEG ?PR?xoy5?MAIN
xoy5:
USING 0
; SOURCE LINE # 116
; EA=1;
; SOURCE LINE # 117
SETB X_F
?C0044:
; TR0=1; //开始计时
; SOURCE LINE # 118
MOV A,n+01H
ORL A,n
JZ ?C0046
;
; SOURCE LINE # 119
MOV A,n+01H
DEC n+01H
JNZ ?C0399
DEC n
?C0399:
LCALL x_zm
SJMP ?C0044
; }
; SOURCE LINE # 120
?C0046:
RET
; END OF xoy5
;
; void TandC_Tnit(void)
RSEG ?PR?xoy6?MAIN
xoy6:
USING 0
; SOURCE LINE # 122
; {
; SOURCE LINE # 123
SETB Y_F
?C0047:
; EA=1; //总控
; SOURCE LINE # 124
MOV A,n+01H
ORL A,n
JZ ?C0049
; ES=1; //串行中断允许
; SOURCE LINE # 125
MOV A,n+01H
DEC n+01H
JNZ ?C0400
DEC n
?C0400:
LCALL y_zm
SJMP ?C0047
; ET1=0; //定时器0
; SOURCE LINE # 126
?C0049:
RET
; END OF xoy6
; ET0=1; //定时器1,波特发生
; EX0=1; //外部0中断
RSEG ?PR?xoy7?MAIN
xoy7:
USING 0
; SOURCE LINE # 128
; IT0=1; //下降沿触发
; SOURCE LINE # 129
CLR X_F
?C0050:
;
; SOURCE LINE # 130
MOV A,n+01H
ORL A,n
JZ ?C0052
; SCON=0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
; SOURCE LINE # 131
MOV A,n+01H
DEC n+01H
JNZ ?C0401
DEC n
?C0401:
LCALL x_zm
SJMP ?C0050
; TMOD=0x21; //TMOD: timer 1, mode 2, 8-bit reload ,time0 mode1;
; SOURCE LINE # 132
?C0052:
RET
; END OF xoy7
; PCON=0x80; //SMOD=1;
; TH1= 0xFD; //Baud:19200 fosc=11.0592MHz
RSEG ?PR?xoy8?MAIN
xoy8:
USING 0
; SOURCE LINE # 134
; TH0=(65536-ir_time)/256;
; SOURCE LINE # 135
CLR Y_F
?C0053:
; TL0=(65536-ir_time)%256;
; SOURCE LINE # 136
MOV A,n+01H
ORL A,n
JZ ?C0055
; TR1=1; // timer 1 run
; SOURCE LINE # 137
MOV A,n+01H
DEC n+01H
JNZ ?C0402
DEC n
?C0402:
LCALL y_zm
SJMP ?C0053
; }
; SOURCE LINE # 138
?C0055:
RET
; END OF xoy8
;
; void main(void)
RSEG ?PR?_z_chabu?MAIN
_z_chabu:
USING 0
; SOURCE LINE # 140
MOV x2?1149,R2
MOV x2?1149+01H,R3
;---- Variable 'y1?1148' assigned to Register 'R4/R5' ----
;---- Variable 'x1?1147' assigned to Register 'R6/R7' ----
; {
; LCMInit();
; SOURCE LINE # 142
; TandC_Tnit();
; SOURCE LINE # 143
CLR A
MOV Fm1,A
MOV Fm1+01H,A
; s=&buf;
; SOURCE LINE # 144
CLR C
MOV A,x2?1149+01H
SUBB A,R7
MOV Xe+01H,A
MOV A,x2?1149
SUBB A,R6
MOV Xe,A
; TAI_BI=1;
; SOURCE LINE # 145
CLR C
MOV A,y2?1150+01H
SUBB A,R5
MOV Ye+01H,A
MOV A,y2?1150
SUBB A,R4
MOV Ye,A
; if(P0^1==0) Lcd_print("Communicating To PC");
; SOURCE LINE # 146
MOV R4,Xe
MOV R5,Xe+01H
MOV A,R4
LCALL ?C?FCASTI
LCALL _fabs
LCALL ?C?CASTF
MOV Xe,R6
MOV Xe+01H,R7
; Pref_x=0x85;
; SOURCE LINE # 147
MOV R4,Ye
MOV R5,Ye+01H
MOV A,R4
LCALL ?C?FCASTI
LCALL _fabs
LCALL ?C?CASTF
MOV Ye,R6
MOV Ye+01H,R7
; Pref_y=0x45;
; SOURCE LINE # 148
MOV A,Xe+01H
ADD A,Ye+01H
MOV n+01H,A
MOV A,Xe
ADDC A,Ye
MOV n,A
;
; SOURCE LINE # 149
MOV R5,y2?1150+01H
MOV R4,y2?1150
MOV R7,x2?1149+01H
MOV R6,x2?1149
LCALL _weizhi
;---- Variable 'XOY?1151' assigned to Register 'R6/R7' ----
; SaveXYToNVRAM();
; SOURCE LINE # 150
MOV A,R6
JNZ ?C0065
MOV A,R7
DEC A
CJNE A,#08H,?C0403
?C0403:
JNC ?C0065
MOV DPTR,#?C0404
MOV B,#03H
MUL AB
XCH A,DPH
ADD A,B
XCH A,DPH
JMP @A+DPTR
?C0404:
LJMP ?C0057
LJMP ?C0058
LJMP ?C0059
LJMP ?C0060
LJMP ?C0061
LJMP ?C0062
LJMP ?C0063
LJMP ?C0064
; Pref_x=0X05;
; SOURCE LINE # 151
?C0057:
LJMP xoy1
; Pref_y=0;
; SOURCE LINE # 152
?C0058:
LJMP xoy2
; ReadXYFromNVRAM();
; SOURCE LINE # 153
?C0059:
LJMP xoy3
; SBUF=Pref_x;
; SOURCE LINE # 154
?C0060:
LJMP xoy4
; while(!TI){;}
; SOURCE LINE # 155
?C0061:
LJMP xoy5
; TI=0;
; SOURCE LINE # 156
?C0062:
LJMP xoy6
;
; SOURCE LINE # 157
?C0063:
LJMP xoy7
; while(1)
; SOURCE LINE # 158
?C0064:
LCALL xoy8
; {
; SOURCE LINE # 159
; Lcd_print("the system of CN");
; SOURCE LINE # 160
?C0065:
RET
; END OF _z_chabu
RSEG ?PR?ManualOperation?MAIN
ManualOperation:
USING 0
; SOURCE LINE # 7
; SOURCE LINE # 8
; SOURCE LINE # 9
MOV R5,#01H
MOV R4,#00H
MOV R7,#01H
LCALL _WriteCommandLCM
; SOURCE LINE # 10
SETB TAI_BI
; SOURCE LINE # 11
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL _Lcd_print
; SOURCE LINE # 12
; SOURCE LINE # 13
?C0068:
; SOURCE LINE # 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -