text1.asm

来自「通过两个光电传感器比较两侧的光线强度」· 汇编 代码 · 共 86 行

ASM
86
字号
      ORG 0000H          
      lJMP MAIN       ;转主程序
      ORG 0013H
      LJMP INT11      ;转中断服务程序
      ORG 0100H
MAIN: MOV P1,#0FFH    ;P1口初始化
      MOV R0,#30H
      MOV R1,#02H
      SETB IT1
      SETB EA             
      SETB EX1
      MOV DPTR,#7FF8H
NEXT1:SETB PSW.5
      MOVX @DPTR,A
      JB PSW.5,$
      DJNZ R1,NEXT1   ;两次采样结17束
      MOV A,30H
      SUBB A,31H      ;环境初始化,差异存放于A处
      MOV R5,A
CAIJI:MOV R0,#30H
      MOV R1,#02H
      mov 40h,30h

      MOV DPTR,#7FF8H
NEXT: SETB PSW.5
      MOVX @DPTR,A
      JB PSW.5,$
      DJNZ R1,NEXT   
COMP: mov a,40h
      cjne a,30h,jixu   ;如果数据有变化则跳转,否则重新采样
      MOV P1,#00H
      acall delay
      ajmp caiji
jixu: jnc ahead        ;比原数据小则前进
      MOV A,30H
      subb A,R5        ;加上初始状态的差异
      CJNE A,31H,TURN
      ajmp caiji
ahead:MOV P1,#18H
      acall delay
      ajmp caiji
TURN: JC LEFTT         
      MOV P1,#05H
      acall delay     
      MOV P1,#05H
      acall delay1
      MOV P1,#05H
      acall delay1
      aJMP CAIJI
LEFTT:MOV P1,#03H
      acall delay      
      MOV P1,#03H
      acall delay1
      MOV P1,#03H
      acall delay1
      aJMP CAIJI
      SJMP $


DELAY:mov r4,#05h
   l3:mov r2,#25h
   l1:mov r3,#25h
   l2:nop
      djnz r3,l2
      djnz r2,l1
      djnz r4,l3
      ret

DELAY1:mov r4,#50h
   l31:mov r2,#25h
   l11:mov r3,#25h
   l21:nop
      djnz r3,l21
      djnz r2,l11
      djnz r4,l31
      ret

      ORG 0300H
INT11:MOVX A,@DPTR     
      MOV @R0,A
      INC DPTR
      INC R0
      CLR PSW.5
      RETI
      END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?