⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chip cam open&short test3_b(20pin).asm

📁 这个代码是我本人写的一个通断测试仪
💻 ASM
📖 第 1 页 / 共 3 页
字号:
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 + -