📄 chip cam open&short test3_b(20pin).asm
字号:
P2CARRY_SYNC2: MOV A, P2CARRY_MARK ;检测三组缓存是否进位同步(标志是否一 致)
JZ P2_STEPCONTROL ;若P2口同步标志有进位则检查另外两个进位标志
P1CARRY_SYNC2: MOV A, P1CARRY_MARK ;检查并使之进位同步
JNZ P3CARRY_SYNC2
MOV A, P1DATA_INDEX
INC A
MOV P1DATA_INDEX, A
P3CARRY_SYNC2: MOV A, P3CARRY_MARK
JNZ P2_STEPCONTROL
MOV A, P3DATA_INDEX
INC A
MOV P3DATA_INDEX, A
P2_STEPCONTROL: MOV A, SYNC_WORD
CJNE A, #7FH, P2_RECEIVE ;检查是否8个口全部有扫描完成
AJMP P3_RECEIVE
SAVEP2_2: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P2CARRY_MARK, #0FFH ;置P2口进位标志位为1
MOV R1, P2DATA_INDEX ;索引入R1
MOV A, RAWDATA ;恢复发送位
ORL A, P2_BUFFER ;数据存入存储区
MOV @R1, A
MOV A, P2DATA_INDEX ;P2口数据区索引加1
INC A
MOV P2DATA_INDEX, A
AJMP P1_COMP2
SAVEP1_2: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P1CARRY_MARK, #0FFH ;置P1口进位标志位为1
MOV R1, P1DATA_INDEX ;索引入R1
MOV @R1, P1_BUFFER ;数据存入存储区
MOV A, P1DATA_INDEX ;P1口数据区索引加1
INC A
MOV P1DATA_INDEX, A
MOV A, P2CARRY_MARK ;判断发送位有无存入
CJNE A, #00H, P3_COMP2
MOV R1, P2DATA_INDEX ;无则存入发送位
MOV @R1, RAWDATA
MOV A, P2DATA_INDEX
INC A
MOV P2DATA_INDEX, A
MOV P2CARRY_MARK, #0FFH ;置P2口进位标志位为1
AJMP P3_COMP2
SAVEP3_2: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P3CARRY_MARK, #0FFH ;置P3口进位标志位为1
MOV R1, P3DATA_INDEX ;索引入R1
MOV @R1, P3_BUFFER ;数据存入存储区
MOV A, P3DATA_INDEX ;P3口数据区索引加1
INC A
MOV P3DATA_INDEX, A
MOV A, P2CARRY_MARK ;判断发送位有无存入
CJNE A, #00H, P2CARRY_SYNC2
MOV R1, P2DATA_INDEX ;无则存入发送位
MOV @R1, RAWDATA
MOV A, P2DATA_INDEX
INC A
MOV P2DATA_INDEX, A
MOV P2CARRY_MARK, #0FFH ;置P2口进位标志位为1
AJMP P2CARRY_SYNC2 ;回去判断存储区进位是否一置
P3_RECEIVE: JB SYNC_SIGNAL, P3_RECEIVE ;检测同步信号
NOP
NOP
JB SYNC_SIGNAL, P3_RECEIVE
MOV P3, #0FH
MOV P1CARRY_MARK, #00H ;三个进位标志清0
MOV P2CARRY_MARK, #00H
MOV P3CARRY_MARK, #00H
MOV A, SYNC_WORD ;同步字进行同步动作(左移,模拟输入端)
RL A
MOV SYNC_WORD, A
MOV P1_BUFFER, P1 ;数据读进缓存
MOV P2_BUFFER, P2
MOV P3_BUFFER, P3
ANL P3_BUFFER, A ;将P3口数据中的发送位去掉并将发送位保存在RAWDATA中
CPL A
MOV RAWDATA, A
P3_COMP3: MOV A, P3_BUFFER ;判断每个口有无短路点
JNZ SAVEP3_3
P1_COMP3: MOV A, P1_BUFFER
JNZ SAVEP1_3
P2_COMP3: MOV A, P2_BUFFER
JNZ SAVEP2_3
P3CARRY_SYNC3: MOV A, P3CARRY_MARK ;检测三组缓存是否进位同步(标志是否一 致)
JZ P3_STEPCONTROL ;若P3口同步标志有进位则检查另外两个进位标志
P1CARRY_SYNC3: MOV A, P1CARRY_MARK ;检查并使之进位同步
JNZ P2CARRY_SYNC3
MOV A, P1DATA_INDEX
INC A
MOV P1DATA_INDEX, A
P2CARRY_SYNC3: MOV A, P2CARRY_MARK
JNZ P3_STEPCONTROL
MOV A, P2DATA_INDEX
INC A
MOV P2DATA_INDEX, A
P3_STEPCONTROL: MOV A, SYNC_WORD
CJNE A, #0F7H, P3_RECEIVE ;检查是否8个口全部有扫描完成
AJMP REVERSE
SAVEP3_3: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P3CARRY_MARK, #0FFH ;置P3口进位标志位为1
MOV R1, P3DATA_INDEX ;索引入R1
MOV A, RAWDATA ;恢复发送位
ORL A, P3_BUFFER ;数据存入存储区
MOV @R1, A
MOV A, P3DATA_INDEX ;P3口数据区索引加1
INC A
MOV P3DATA_INDEX, A
AJMP P1_COMP3
SAVEP1_3: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P1CARRY_MARK, #0FFH ;置P1口进位标志位为1
MOV R1, P1DATA_INDEX ;索引入R1
MOV @R1, P1_BUFFER ;数据存入存储区
MOV A, P1DATA_INDEX ;P1口数据区索引加1
INC A
MOV P1DATA_INDEX, A
MOV A, P3CARRY_MARK ;判断发送位有无存入
CJNE A, #00H, P2_COMP3
MOV R1, P3DATA_INDEX ;无则存入发送位
MOV @R1, RAWDATA
MOV A, P3DATA_INDEX
INC A
MOV P3DATA_INDEX, A
MOV P3CARRY_MARK, #0FFH ;置P3口进位标志位为1
AJMP P2_COMP3
SAVEP2_3: MOV SHORT_MARK, #0FFH ;置短路标志位为1
MOV P2CARRY_MARK, #0FFH ;置P2口进位标志位为1
MOV R1, P2DATA_INDEX ;索引入R1
MOV @R1, P2_BUFFER ;数据存入存储区
MOV A, P2DATA_INDEX ;P2口数据区索引加1
INC A
MOV P2DATA_INDEX, A
MOV A, P3CARRY_MARK ;判断发送位有无存入
CJNE A, #00H, P3CARRY_SYNC3
MOV R1, P3DATA_INDEX ;无则存入发送位
MOV @R1, RAWDATA
MOV A, P3DATA_INDEX
INC A
MOV P3DATA_INDEX, A
MOV P3CARRY_MARK, #0FFH ;置P2口进位标志位为1
AJMP P3CARRY_SYNC3 ;回去判断存储区进位是否一置
REVERSE: MOV A, 10H ;将短路的数据取反以便显示
CPL A
MOV 10H, A
MOV A, 11H
CPL A
MOV 11H, A
MOV A, 12H
CPL A
MOV 12H, A
MOV A, 13H
CPL A
MOV 13H, A
MOV A, 14H
CPL A
MOV 14H, A
MOV A, 15H
CPL A
MOV 15H, A
MOV A, 16H
CPL A
MOV 16H, A
MOV A, 17H
CPL A
MOV 17H, A
MOV A, 18H
CPL A
MOV 18H, A
MOV A, 19H
CPL A
MOV 19H, A
MOV A, 1AH
CPL A
MOV 1AH, A
MOV A, 1BH
CPL A
MOV 1BH, A
MOV A, 20H
CPL A
MOV 20H, A
MOV A, 21H
CPL A
MOV 21H, A
MOV A, 22H
CPL A
MOV 22H, A
MOV A, 23H
CPL A
MOV 23H, A
MOV A, 24H
CPL A
MOV 24H, A
MOV A, 25H
CPL A
MOV 25H, A
MOV A, 26H
CPL A
MOV 26H, A
MOV A, 27H
CPL A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -