📄 main.src
字号:
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#event_word_copy?041
XCH A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
;
; if(event_word_copy&event_uart_arrived)
; SOURCE LINE # 118
MOVX A,@DPTR
JNB ACC.3,?C0006
; {
; SOURCE LINE # 119
; EA=0;
; SOURCE LINE # 120
CLR EA
; event_word&= ~(event_uart_arrived);//自毁完成任务标记
; SOURCE LINE # 121
MOV DPTR,#event_word+01H
MOVX A,@DPTR
ANL A,#0F7H
MOVX @DPTR,A
; EA=1;
; SOURCE LINE # 122
SETB EA
; process_uart();
; SOURCE LINE # 123
LCALL process_uart
; }
; SOURCE LINE # 124
?C0006:
;
;
;
;
; /**********@task2@**********/ //每100ms轮询无线标签
; if(event_word_copy&event_time_100ms)
; SOURCE LINE # 130
MOV DPTR,#event_word_copy?041+01H
MOVX A,@DPTR
JNB ACC.1,?C0007
; {
; SOURCE LINE # 131
; EA=0;
; SOURCE LINE # 132
CLR EA
; event_word&= ~(event_time_100ms);
; SOURCE LINE # 133
MOV DPTR,#event_word+01H
MOVX A,@DPTR
ANL A,#0FDH
MOVX @DPTR,A
; EA=1;
; SOURCE LINE # 134
SETB EA
;
; if(((TRIG==0)&&(TRIG_STATE==1)) ||(TRIG==1))
; SOURCE LINE # 136
JB TRIG,?C0010
JB TRIG_STATE,?C0009
?C0010:
JNB TRIG,?C0007
?C0009:
; {
; SOURCE LINE # 137
; //触发状态加触发或者非触发才询卡
; SeekFrame(0x01); //普通寻卡
; SOURCE LINE # 139
MOV R7,#01H
LCALL _SeekFrame
; txregframe(FRAME_LEN);
; SOURCE LINE # 140
MOV R7,#012H
LCALL _txregframe
; }
; SOURCE LINE # 141
;
; }
; SOURCE LINE # 143
?C0007:
;
; /**********@task3@**********/ //1s基准处理时间事件
; if(event_word_copy&event_time_1000ms)
; SOURCE LINE # 146
MOV DPTR,#event_word_copy?041+01H
MOVX A,@DPTR
JB ACC.2,$ + 6H
LJMP ?C0011
; {
; SOURCE LINE # 147
; EA=0;
; SOURCE LINE # 148
CLR EA
; event_word&= ~(event_time_1000ms);
; SOURCE LINE # 149
MOV DPTR,#event_word+01H
MOVX A,@DPTR
ANL A,#0FBH
MOVX @DPTR,A
; EA=1;
; SOURCE LINE # 150
SETB EA
;
; for(nr=0;nr<10;nr++) //查询登记是否需要老化
; SOURCE LINE # 152
CLR A
MOV DPTR,#nr?040
MOVX @DPTR,A
?C0012:
MOV DPTR,#nr?040
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#0AH
JC $ + 5H
LJMP ?C0013
; {
; SOURCE LINE # 153
; if((tagnr[nr].save_inactivity)&&(tagnr[nr].save_state!=0))
; SOURCE LINE # 154
MOV A,R7
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+08H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+08H)
MOV DPH,A
MOVX A,@DPTR
JZ ?C0015
MOV DPTR,#nr?040
MOVX A,@DPTR
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+07H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+07H)
MOV DPH,A
MOVX A,@DPTR
JZ ?C0015
; {
; SOURCE LINE # 155
; tagnr[nr].save_inactivity--;
; SOURCE LINE # 156
MOV DPTR,#nr?040
MOVX A,@DPTR
MOV R6,A
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+08H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+08H)
MOV DPH,A
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
; if(tagnr[nr].save_inactivity==0)
; SOURCE LINE # 157
MOV A,R6
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+08H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+08H)
MOV DPH,A
MOVX A,@DPTR
JNZ ?C0015
; {
; SOURCE LINE # 158
; tagnr[nr].save_state=0;
; SOURCE LINE # 159
MOV A,R7
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+07H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+07H)
MOV DPH,A
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 160
; }
; SOURCE LINE # 161
?C0015:
;
; if(tagnr[nr].save_inactivity==0)
; SOURCE LINE # 163
MOV DPTR,#nr?040
MOVX A,@DPTR
MOV R7,A
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+08H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+08H)
MOV DPH,A
MOVX A,@DPTR
JNZ ?C0014
; {
; SOURCE LINE # 164
; tagnr[nr].save_state=0;
; SOURCE LINE # 165
MOV A,R7
MOV B,#09H
MUL AB
ADD A,#LOW (tagnr+07H)
MOV DPL,A
CLR A
ADDC A,#HIGH (tagnr+07H)
MOV DPH,A
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 166
;
;
; }
; SOURCE LINE # 169
?C0014:
MOV DPTR,#nr?040
MOVX A,@DPTR
INC A
MOVX @DPTR,A
LJMP ?C0012
?C0013:
;
; if(event_relay!=0)
; SOURCE LINE # 171
MOV R0,#LOW (event_relay)
MOV A,@R0
JZ ?C0011
; {
; SOURCE LINE # 172
; event_relay--;
; SOURCE LINE # 173
DEC @R0
; if(event_relay==0)
; SOURCE LINE # 174
MOV A,@R0
JNZ ?C0011
; {
; SOURCE LINE # 175
; RELAY_IN=1; //关闭继电器
; SOURCE LINE # 176
SETB RELAY_IN
; RELAY_OUT=1;
; SOURCE LINE # 177
SETB RELAY_OUT
; }
; SOURCE LINE # 178
; }
; SOURCE LINE # 179
;
;
; }
; SOURCE LINE # 182
?C0011:
;
;
;
; /**********@task4@**********/ //处理接收的wiegand格式数据包
;
; if(event_word_copy&event_wie_arrived)
; SOURCE LINE # 188
MOV DPTR,#event_word_copy?041+01H
MOVX A,@DPTR
JNB ACC.4,?C0020
; {
; SOURCE LINE # 189
; EA=0;
; SOURCE LINE # 190
CLR EA
; event_word&= ~(event_wie_arrived);
; SOURCE LINE # 191
MOV DPTR,#event_word+01H
MOVX A,@DPTR
ANL A,#0EFH
MOVX @DPTR,A
; EA=1;
; SOURCE LINE # 192
SETB EA
;
; wie_str=0; //清wiegand脉冲标记
; SOURCE LINE # 194
CLR wie_str
; //注意wie_cout半字节当一次处理
; if(wie_cout==0)
; SOURCE LINE # 196
MOV R0,#LOW (wie_cout)
MOV A,@R0
JNZ ?C0021
; {wie_cout++;}
; SOURCE LINE # 197
INC @R0
?C0021:
; for(nr=0;nr<wie_cout;nr++)
; SOURCE LINE # 198
CLR A
MOV DPTR,#nr?040
MOVX @DPTR,A
?C0022:
MOV DPTR,#nr?040
MOVX A,@DPTR
MOV R7,A
CLR C
MOV R0,#LOW (wie_cout)
SUBB A,@R0
JNC ?C0023
; {
; SOURCE LINE # 199
; Printf_Char(wiebuf_cout[nr]);
; SOURCE LINE # 200
MOV A,#LOW (wiebuf_cout)
ADD A,R7
MOV DPL,A
CLR A
ADDC A,#HIGH (wiebuf_cout)
MOV DPH,A
MOVX A,@DPTR
MOV R7,A
LCALL _Printf_Char
; }
; SOURCE LINE # 201
MOV DPTR,#nr?040
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0022
?C0023:
; CLR_WIEBUF_COUT;
; SOURCE LINE # 202
CLR A
MOV R0,#LOW (wie_cout)
MOV @R0,A
MOV R0,#LOW (wie_8bit)
MOV @R0,#08H
; }
; SOURCE LINE # 203
?C0020:
;
; /**********@task5@**********/ //处理进出2路触发信号
; if(TRIG_IN==0)
; SOURCE LINE # 206
JB TRIG_IN,?C0025
; {
; SOURCE LINE # 207
; RELAY_TRIG_STATE=1; //当前进门
; SOURCE LINE # 208
MOV R0,#LOW (RELAY_TRIG_STATE)
MOV @R0,#01H
; TRIG_STATE=1;
; SOURCE LINE # 209
SETB TRIG_STATE
; }
; SOURCE LINE # 210
LJMP ?C0003
?C0025:
; else if(TRIG_OUT==0)
; SOURCE LINE # 211
JNB TRIG_OUT,$ + 6H
LJMP ?C0003
; {
; SOURCE LINE # 212
; RELAY_TRIG_STATE=0; //当前出门
; SOURCE LINE # 213
CLR A
MOV R0,#LOW (RELAY_TRIG_STATE)
MOV @R0,A
; TRIG_STATE=1;
; SOURCE LINE # 214
SETB TRIG_STATE
; }
; SOURCE LINE # 215
LJMP ?C0003
; END OF main
; else
; {
; ;
; }
; /**********@task6@**********/
; /**********@task7@**********/
; /**********@task8@**********/
; /**********@task9@**********/
; /**********@task10@**********/
; /**********@taskn@**********/
; }
; }
;
;
;
; /******************************************************************************
; ** 函数: PORT_Init ()
; ** 入参:
; ** 返回:
; ** 说明:
; ** PORT_Init
; ** Configure the Crossbar and GPIO ports.
; ** P0.4 - UART TX
; ** P0.5 - UART RX
; ** P3.3 - LED
; ******************************************************************************/
; void PORT_Init (void)
RSEG ?PR?PORT_Init?MAIN
PORT_Init:
; SOURCE LINE # 242
; {
; SOURCE LINE # 243
;
; P0SKIP = 0xcf; //注意SPI没有配置成硬件,只是脚放在对应位置
; SOURCE LINE # 245
MOV P0SKIP,#0CFH
; P1SKIP = 0x03; //配置P1.2 P1.3 两端块脉冲捕获
; SOURCE LINE # 246
MOV P1SKIP,#03H
; XBR0 = 0x01; // 使能 UART on P0.4(TX) and P0.5
; SOURCE LINE # 247
MOV XBR0,#01H
; XBR1 = 0x42;
; SOURCE LINE # 248
MOV XBR1,#042H
; P0MDOUT = 0x1C; // 使能 UTX 为推挽输出 p0.2 p0.3
; SOURCE LINE # 249
MOV P0MDOUT,#01CH
;
; P3MDOUT |= 0x06; //P3.1 P3.2 继电器
; SOURCE LINE # 251
ORL P3MDOUT,#06H
; RELAY_IN =1;
; SOURCE LINE # 252
SETB RELAY_IN
; RELAY_OUT =1;
; SOURCE LINE # 253
SETB RELAY_OUT
;
;
; P0MDOUT = 0xfd; // sdo非推挽
; SOURCE LINE # 256
MOV P0MDOUT,#0FDH
; P1MDOUT |= 0xf3; // nsel p1.0 p1.1推挽 p1.4 p1.5 P1.6 P1.7
; SOURCE LINE # 257
ORL P1MDOUT,#0F3H
; P2MDOUT |= 0xb0; // P2.7 P2.4 P2.5
; SOURCE LINE # 258
ORL P2MDOUT,#0B0H
;
; D0IN = 0;
; SOURCE LINE # 260
CLR D0IN
; D1IN = 0;
; SOURCE LINE # 261
CLR D1IN
; D0OUT = 0;
; SOURCE LINE # 262
CLR D0OUT
; D1OUT = 0;
; SOURCE LINE # 263
CLR D1OUT
;
; BELL = 0; //蜂鸣器关闭
; SOURCE LINE # 265
CLR BELL
; LEDR = 1; //LED关闭
; SOURCE LINE # 266
SETB LEDR
;
; sck = 0;
; SOURCE LINE # 268
CLR sck
; nsel = 0;
; SOURCE LINE # 269
CLR nsel
; sdi = 1;
; SOURCE LINE # 270
SETB sdi
; sdo = 1;
; SOURCE LINE # 271
SETB sdo
;
; X_CS = 1; //不选中AT25128
; SOURCE LINE # 273
SETB X_CS
;
;
; }
; SOURCE LINE # 276
RET
; END OF PORT_Init
;
; /******************************************************************************
; ** 函数:beef(unchar be)
; ** 入参:be, rg
; ** 返回:
; ** 说明:
;
; ******************************************************************************/
; void Beef(UCHAR be,UCHAR RG)
RSEG ?PR?_Beef?MAIN
_Beef:
USING 0
; SOURCE LINE # 285
MOV DPTR,#RG?243
MOV A,R5
MOVX @DPTR,A
MOV DPTR,#be?242
MOV A,R7
MOVX @DPTR,A
; {
; SOURCE LINE # 286
; UCHAR i;
;
; if(be==1)
; SOURCE LINE # 289
XRL A,#01H
JNZ ?C0031
; {
; SOURCE LINE # 290
; BELL_ON;
; SOURCE LINE # 291
SETB BELL
; if(RG==RED) {LEDR_ON;}
; SOURCE LINE # 292
INC DPTR
MOVX A,@DPTR
CJNE A,#01H,?C0032
CLR LEDR
SETB LEDG
SJMP ?C0033
?C0032:
; else
; {LEDG_ON;}
; SOURCE LINE # 294
CLR LEDG
SETB LEDR
?C0033:
; delayms(100);
; SOURCE LINE # 295
MOV R7,#064H
MOV R6,#00H
LCALL _delayms
; BELL_OFF; //单次蜂鸣
; SOURCE LINE # 296
CLR BELL
; if(RG==RED) {LEDR_OFF;}
; SOURCE LINE # 297
MOV DPTR,#RG?243
MOVX A,@DPTR
CJNE A,#01H,?C0034
SETB LEDR
RET
?C0034:
; else
; {LEDG_OFF;}
; SOURCE LINE # 299
SETB LEDG
; }
; SOURCE LINE # 300
RET
?C0031:
;
; else
; {
; SOURCE LINE # 303
; for(i=0;i<be;i++)
; SOURCE LINE # 304
CLR A
MOV DPTR,#i?244
MOVX @DPTR,A
?C0037:
MOV DPTR,#be?242
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#i?244
MOVX A,@DPTR
CLR C
SUBB A,R7
JNC ?C0044
; {
; SOURCE LINE # 305
; BELL_ON;
; SOURCE LINE # 306
SETB BELL
; if(RG==RED) {LEDR_ON;}
; SOURCE LINE # 307
MOV DPTR,#RG?243
MOVX A,@DPTR
CJNE A,#01H,?C0040
CLR LEDR
SETB LEDG
SJMP ?C0041
?C0040:
; else
; {LEDG_ON;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -