📄 main.src
字号:
RSEG ?PR?init?MAIN
init:
; SOURCE LINE # 127
; {
; SOURCE LINE # 128
;
; // TMOD=0x21;
; TMOD=0x12; //定时器0为8位自动重装;定时器1为16位计数器工作方式
; SOURCE LINE # 131
MOV TMOD,#012H
; IP=0x00;
; SOURCE LINE # 132
CLR A
MOV IP,A
; TCON=1; //外部中断0的触发方式为边沿方式
; SOURCE LINE # 133
MOV TCON,#01H
; SCON=0x50;
; SOURCE LINE # 134
MOV SCON,#050H
; PCON|=0x80; //dual 4800X2=9600
; SOURCE LINE # 135
ORL PCON,#080H
;
; // TH1=TL1=0xf4; //fosc=22.1184Mhz baud=9600 TH1=TL1=256-(24000000/4800/32/12+0.5)
; // TH1=TL1=0xe8; //22.1184MHZ
; // TH1=TL1=256-(40000000/2400/32/12+0.5);
; // TH1=TL1=0xD4; //40MHZ
; // TH0=0xfc; //1ms time
; // TL0=0x66;
; // IE=0x12;
; // TR0=1;
; // TR1=1;
; ES=1;
; SOURCE LINE # 146
SETB ES
;
; // LED = OFF;
; // delay_10ms(50);
; // LED = ON;
;
; // IT0 = 1; // Config ext0 as edge trigger for RC500
; // EX0 = 1; // Enable ext0 interrupt for RC500
;
; // EA = TRUE; // Enable all interrupts
;
; }
; SOURCE LINE # 157
RET
; END OF init
; void m_readcard(void)
RSEG ?PR?m_readcard?MAIN
m_readcard:
; SOURCE LINE # 158
; {
; SOURCE LINE # 159
; TR0=0;
; SOURCE LINE # 160
CLR TR0
; ET0=0;
; SOURCE LINE # 161
CLR ET0
; PX0=1;
; SOURCE LINE # 162
SETB PX0
; m_sta=0;
; SOURCE LINE # 163
CLR A
MOV DPTR,#m_sta
MOVX @DPTR,A
; TH0=0x16;
; SOURCE LINE # 164
MOV TH0,#016H
; m_flag=0;
; SOURCE LINE # 165
CLR m_flag
; short_flag=0;
; SOURCE LINE # 166
CLR short_flag
; EX0=1;
; SOURCE LINE # 167
SETB EX0
; EA=1;
; SOURCE LINE # 168
SETB EA
;
; }
; SOURCE LINE # 170
RET
; END OF m_readcard
; unsigned char CMP_STRING(unsigned char *pt1,
RSEG ?PR?_CMP_STRING?MAIN
_CMP_STRING:
USING 0
; SOURCE LINE # 171
MOV DPTR,#pt1?349
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; unsigned char *pt2,unsigned char len)
; {
; SOURCE LINE # 173
; unsigned char ct; // fixed lenth 4.
; for (ct=0;ct<len;ct++)
; SOURCE LINE # 175
;---- Variable 'ct?352' assigned to Register 'R7' ----
CLR A
MOV R7,A
?C0008:
MOV DPTR,#len?351
MOVX A,@DPTR
MOV R6,A
MOV A,R7
CLR C
SUBB A,R6
JNC ?C0009
; {
; SOURCE LINE # 176
; if (*pt1++ != *pt2++)
; SOURCE LINE # 177
MOV DPTR,#pt2?350
LCALL L?0035
MOV R6,A
MOV DPTR,#pt1?349
LCALL L?0035
XRL A,R6
JZ ?C0010
; return 1;
; SOURCE LINE # 178
MOV R7,#01H
RET
; }
; SOURCE LINE # 179
?C0010:
INC R7
SJMP ?C0008
?C0009:
; return 0; // equal return 0.
; SOURCE LINE # 180
MOV R7,#00H
; }
; SOURCE LINE # 181
?C0012:
RET
; END OF _CMP_STRING
;
; void delay_10ms (uint _10ms)
RSEG ?PR?_delay_10ms?MAIN
_delay_10ms:
USING 0
; SOURCE LINE # 183
;---- Variable '_10ms?453' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 184
;
; ET2 = 0; // Disable timer2 interrupt
; SOURCE LINE # 186
CLR ET2
; T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
; SOURCE LINE # 187
MOV T2CON,#04H
?C0013:
; while (_10ms--)
; SOURCE LINE # 188
MOV A,R7
DEC R7
MOV R4,AR6
JNZ ?C0032
DEC R6
?C0032:
ORL A,R4
JZ ?C0014
; {
; SOURCE LINE # 189
?C0015:
; while (!TF2)
; SOURCE LINE # 190
JB TF2,?C0016
; {
; SOURCE LINE # 191
; // if (CmdValid || CmdReceived)
; {
; SOURCE LINE # 193
; TR2 = FALSE;
; SOURCE LINE # 194
CLR TR2
; TF2 = FALSE;
; SOURCE LINE # 195
CLR TF2
RET
; return;
; }
; SOURCE LINE # 197
; }
; SOURCE LINE # 198
?C0016:
; TF2 = FALSE;
; SOURCE LINE # 199
CLR TF2
; }
; SOURCE LINE # 200
SJMP ?C0013
?C0014:
; TR2 = FALSE;
; SOURCE LINE # 201
CLR TR2
; }
; SOURCE LINE # 202
?C0017:
RET
; END OF _delay_10ms
CSEG AT 0000BH
LJMP isr_timer0
;
; /****************************************************************************
;
; ****************************************************************************/
; void isr_timer0(void) interrupt 1 using 2
RSEG ?PR?isr_timer0?MAIN
USING 2
isr_timer0:
; SOURCE LINE # 207
; {
;
; }
; SOURCE LINE # 210
RETI
; END OF isr_timer0
CSEG AT 00023H
LJMP receive_send
;
;
; /*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; uart interrupt 4
; receive_send
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
; void receive_send() interrupt 4
RSEG ?PR?receive_send?MAIN
USING 0
receive_send:
PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 217
; {
; unsigned char s;
; ES=0;
; SOURCE LINE # 220
CLR ES
; if(RI)
; SOURCE LINE # 221
JNB RI,?C0019
; {
; SOURCE LINE # 222
; RI=0;
; SOURCE LINE # 223
CLR RI
; s=SBUF;
; SOURCE LINE # 224
;---- Variable 's?654' assigned to Register 'R7' ----
MOV R7,SBUF
; if((rxhead==0)&&(s!=0x02))
; SOURCE LINE # 225
MOV DPTR,#rxhead
MOVX A,@DPTR
JNZ ?C0020
MOV A,R7
XRL A,#02H
JZ ?C0020
; {
; SOURCE LINE # 226
; rxhead=0;
; SOURCE LINE # 227
CLR A
MOVX @DPTR,A
; ES=1;
; SOURCE LINE # 228
SETB ES
; }
; SOURCE LINE # 229
?C0020:
; receive_buf1[rxhead++]=s;
; SOURCE LINE # 230
MOV DPTR,#rxhead
MOVX A,@DPTR
MOV R6,A
INC A
MOVX @DPTR,A
MOV A,#LOW (receive_buf1)
ADD A,R6
MOV DPL,A
CLR A
ADDC A,#HIGH (receive_buf1)
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
; if(s==0x03)
; SOURCE LINE # 231
CJNE A,#03H,?C0022
; {
; SOURCE LINE # 232
; receive_flag=1;
; SOURCE LINE # 233
SETB receive_flag
; rxhead=0;
; SOURCE LINE # 234
MOV DPTR,#rxhead
CLR A
MOVX @DPTR,A
; ES=1;
; SOURCE LINE # 235
SETB ES
; }
; SOURCE LINE # 236
; }
; SOURCE LINE # 237
SJMP ?C0022
?C0019:
; else if(TI)
; SOURCE LINE # 238
JNB TI,?C0022
; {
; SOURCE LINE # 239
; TI=0;
; SOURCE LINE # 240
CLR TI
; ES=1;
; SOURCE LINE # 241
SETB ES
SJMP ?C0024
; return;
; }
; SOURCE LINE # 243
?C0022:
; ES=1;
; SOURCE LINE # 244
SETB ES
; }
; SOURCE LINE # 245
?C0024:
POP AR7
POP AR6
POP PSW
POP DPL
POP DPH
POP ACC
RETI
; END OF receive_send
; /***************************************************************************/
;
; void flash_led(void)
RSEG ?PR?flash_led?MAIN
flash_led:
USING 0
; SOURCE LINE # 248
; {
; SOURCE LINE # 249
; unsigned int i;
; LED=0;
; SOURCE LINE # 251
CLR LED
; for(i=0;i<800;i++);
; SOURCE LINE # 252
;---- Variable 'i?755' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
?C0025:
INC R7
CJNE R7,#00H,?C0033
INC R6
?C0033:
CJNE R6,#03H,?C0025
CJNE R7,#020H,?C0025
?C0026:
; LED=1;
; SOURCE LINE # 253
SETB LED
;
; }
; SOURCE LINE # 255
RET
; END OF flash_led
CSEG AT 00003H
LJMP EM_REV
; /////////////////////////////////////////////////
;
;
; void EM_REV (void) interrupt 0 using 1
RSEG ?PR?EM_REV?MAIN
USING 1
EM_REV:
PUSH ACC
PUSH DPH
PUSH DPL
; SOURCE LINE # 259
; {
; TR0=0;
; SOURCE LINE # 261
CLR TR0
; TL0=0x89; //定时为130uS; 0x89=137 137=256-(x/12000000/11059200) x=130
; SOURCE LINE # 262
MOV TL0,#089H
; TF0=0;
; SOURCE LINE # 263
CLR TF0
; TR0=1;
; SOURCE LINE # 264
SETB TR0
; ET0=1;
; SOURCE LINE # 265
SETB ET0
; if(m_flag==0)
; SOURCE LINE # 266
JB m_flag,?C0031
; {
; SOURCE LINE # 267
; if(short_flag==1)
; SOURCE LINE # 268
JNB short_flag,?C0031
; m_sta=0;
; SOURCE LINE # 269
MOV DPTR,#m_sta
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 270
; }
; SOURCE LINE # 271
?C0031:
POP DPL
POP DPH
POP ACC
RETI
; END OF EM_REV
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -