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

📄 h2_3.asm

📁 这是光电编码器的汇编程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
          CJNE	A,#STOREMARK,CP11_0
          MOV	DPTR,#Z10_1
          CALL	BYTRD_VERIFY
          MOV	TEMP5,A
          MOV	DPTR,#Z10_2
          CALL	BYTRD_VERIFY
          MOV	TEMP6,A
          MOV	DPTR,#Z10_3
          CALL	BYTRD_VERIFY
          MOV	TEMP7,A
          MOV	DPTR,#Z10_4
          CALL	BYTRD_VERIFY
          MOV	TEMP8,A
          CLR	C
          MOV	A,R7
          SUBB	A,TEMP8
          MOV	TEMP8,A
          MOV	A,R6
          SUBB	A,TEMP7
          MOV	TEMP7,A
          MOV	A,R1
          SUBB	A,TEMP6
          MOV	TEMP6,A
          MOV	A,R0
          SUBB	A,TEMP5
          MOV	TEMP5,A                     ;(TEMP5~8)=[(CODER CURRENT VAULE)-Z0]-Z10
          JNC   CP12
   
  CP11_0: MOV	DPTR,#A10_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A10_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A9_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A9_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP1
          MOV	R3,TEMP2
          MOV	R4,TEMP3
          MOV	R5,TEMP4
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET     	  
     
    CP12: MOV	DPTR,#Z12_M
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,CP12_0
          MOV	DPTR,#Z11_1
          CALL	BYTRD_VERIFY
          MOV	TEMP1,A
          MOV	DPTR,#Z11_2
          CALL	BYTRD_VERIFY
          MOV	TEMP2,A
          MOV	DPTR,#Z11_3
          CALL	BYTRD_VERIFY
          MOV	TEMP3,A
          MOV	DPTR,#Z11_4
          CALL	BYTRD_VERIFY
          MOV	TEMP4,A
          CLR	C
          MOV	A,R7
          SUBB	A,TEMP4
          MOV	TEMP4,A
          MOV	A,R6
          SUBB	A,TEMP3
          MOV	TEMP3,A
          MOV	A,R1
          SUBB	A,TEMP2
          MOV	TEMP2,A
          MOV	A,R0
          SUBB	A,TEMP1
          MOV	TEMP1,A                     ;(TEMP1~4)=[(CODER CURRENT VAULE)-Z0]-Z11
          JNC   CP13
   
  CP12_0: MOV	DPTR,#A11_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A11_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A10_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A10_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP5
          MOV	R3,TEMP6
          MOV	R4,TEMP7
          MOV	R5,TEMP8
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET
     
    CP13: MOV	DPTR,#Z13_M
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,CP13_0
          MOV	DPTR,#Z12_1
          CALL	BYTRD_VERIFY
          MOV	TEMP5,A
          MOV	DPTR,#Z12_2
          CALL	BYTRD_VERIFY
          MOV	TEMP6,A
          MOV	DPTR,#Z12_3
          CALL	BYTRD_VERIFY
          MOV	TEMP7,A
          MOV	DPTR,#Z12_4
          CALL	BYTRD_VERIFY
          MOV	TEMP8,A
          CLR	C
          MOV	A,R7
          SUBB	A,TEMP8
          MOV	TEMP8,A
          MOV	A,R6
          SUBB	A,TEMP7
          MOV	TEMP7,A
          MOV	A,R1
          SUBB	A,TEMP6
          MOV	TEMP6,A
          MOV	A,R0
          SUBB	A,TEMP5
          MOV	TEMP5,A                     ;(TEMP5~8)=[(CODER CURRENT VAULE)-Z0]-Z12
          JNC   CP14
   
  CP13_0: MOV	DPTR,#A12_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A12_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A11_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A11_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP1
          MOV	R3,TEMP2
          MOV	R4,TEMP3
          MOV	R5,TEMP4
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET     	  

    CP14: MOV	DPTR,#Z14_M
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,CP14_0
          MOV	DPTR,#Z13_1
          CALL	BYTRD_VERIFY
          MOV	TEMP1,A
          MOV	DPTR,#Z13_2
          CALL	BYTRD_VERIFY
          MOV	TEMP2,A
          MOV	DPTR,#Z13_3
          CALL	BYTRD_VERIFY
          MOV	TEMP3,A
          MOV	DPTR,#Z13_4
          CALL	BYTRD_VERIFY
          MOV	TEMP4,A
          CLR	C
          MOV	A,R7
          SUBB	A,TEMP4
          MOV	TEMP4,A
          MOV	A,R6
          SUBB	A,TEMP3
          MOV	TEMP3,A
          MOV	A,R1
          SUBB	A,TEMP2
          MOV	TEMP2,A
          MOV	A,R0
          SUBB	A,TEMP1
          MOV	TEMP1,A                     ;(TEMP1~4)=[(CODER CURRENT VAULE)-Z0]-Z13
          JNC   CP15
   
  CP14_0: MOV	DPTR,#A13_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A13_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A12_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A12_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP5
          MOV	R3,TEMP6
          MOV	R4,TEMP7
          MOV	R5,TEMP8
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET
     
    CP15: MOV	DPTR,#Z15_M
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,CP15_0
          MOV	DPTR,#Z14_1
          CALL	BYTRD_VERIFY
          MOV	TEMP5,A
          MOV	DPTR,#Z14_2
          CALL	BYTRD_VERIFY
          MOV	TEMP6,A
          MOV	DPTR,#Z14_3
          CALL	BYTRD_VERIFY
          MOV	TEMP7,A
          MOV	DPTR,#Z14_4
          CALL	BYTRD_VERIFY
          MOV	TEMP8,A
          CLR	C
          MOV	A,R7
          SUBB	A,TEMP8
          MOV	TEMP8,A
          MOV	A,R6
          SUBB	A,TEMP7
          MOV	TEMP7,A
          MOV	A,R1
          SUBB	A,TEMP6
          MOV	TEMP6,A
          MOV	A,R0
          SUBB	A,TEMP5
          MOV	TEMP5,A                     ;(TEMP5~8)=[(CODER CURRENT VAULE)-Z0]-Z14
          JNC   CP16
   
  CP15_0: MOV	DPTR,#A14_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A14_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A13_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A13_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP1
          MOV	R3,TEMP2
          MOV	R4,TEMP3
          MOV	R5,TEMP4
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET
    
    CP16: MOV	DPTR,#A15_H
          CALL	BYTRD_VERIFY
          MOV	R6,A
          MOV	DPTR,#A15_L
          CALL	BYTRD_VERIFY
          MOV	R7,A
          MOV	DPTR,#A14_HEIGHT_H
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	DPTR,#A14_HEIGHT_L
          CALL	BYTRD_VERIFY
          PUSH	ACC
          MOV	R2,TEMP5
          MOV	R3,TEMP6
          MOV	R4,TEMP7
          MOV	R5,TEMP8
          CALL	CPX
          POP	ACC
          ADD	A,R5
          MOV	HEIGHT_L,A
          POP	ACC
          ADDC	A,R4
          MOV	HEIGHT_H,A
          RET
          
;-----------------------------------------------------------------------------------------          
     
     CPX: CLR	C
          MOV	A,R7
          SUBB	A,#A_MIN
          MOV	A,R6
          SUBB	A,#0 
          JNC	CPX0
          MOV	R6,#0
          MOV	R7,#A_MIN 
    CPX0: MOV	B,#6                    ;R2R3R4R5*64
          CLR	C
    CPX1: MOV	A,R5
          RLC	A
          MOV	R5,A
          MOV	A,R4
          RLC	A
          MOV	R4,A
          MOV	A,R3
          RLC	A
          MOV	R3,A
          MOV	A,R2
          RLC	A
          MOV	R2,A   
          DJNZ	B,CPX1
          CALL	DIV32_16
          CALL	ROUND
          RET      
          
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;HEIGHT MONITOR                       重量零点

  HEIGHTMONITOR:
          JNB      SIGN,HEI1
          SETB      ALM_P1
          RET 
     HEI1:MOV	DPTR,#LP1_M
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,HMR0_0     ;下限
          MOV	DPTR,#LP1_H
          CALL	BYTRD_VERIFY
          MOV	R0,A
          MOV	DPTR,#LP1_L
          CALL	BYTRD_VERIFY
          MOV	R1,A
          
          MOV	R2,#0
          MOV	R3,AR0
          MOV	R4,AR1           
          CALL	BCDBIN
          MOV	R0,AR6
          MOV	R1,AR7
          
          CLR	C
          MOV	A,HEIGHT_L
          SUBB	A,R1
          MOV	A,HEIGHT_H
          SUBB	A,R0
          JC	HMR0_0
          CLR	ALM_P1
          JMP	HMR1
  HMR0_0: SETB	ALM_P1
  
    HMR1: MOV	DPTR,#LP2_M         ;上限
          CALL	BYTRD_VERIFY
          CJNE	A,#STOREMARK,HMR1_0
          MOV	DPTR,#LP2_H
          CALL	BYTRD_VERIFY
          MOV	R0,A
          MOV	DPTR,#LP2_L
          CALL	BYTRD_VERIFY
          MOV	R1,A
          
          MOV	R2,#0
          MOV	R3,AR0
          MOV	R4,AR1           
          CALL	BCDBIN
          MOV	R0,AR6
          MOV	R1,AR7
          
          CLR	C
          MOV	A,HEIGHT_L
          SUBB	A,R1
          MOV	A,HEIGHT_H
          SUBB	A,R0
          JNC	HMR1_0
          CLR     ALM_P2
          JMP	HMR2
  HMR1_0: SETB    ALM_P2
  HMR2:   RET

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;TWINKLE BIT

  TWINK1: DJNZ	TWINBIT1CNT,TWK1OUT
          MOV	TWINBIT1CNT,#TWINKLEINTVL1
          CPL   TWINBIT1
 TWK1OUT: RET

  TWINK2: MOV	A,TWINBIT2CNT1
          JZ	TWK2_0
          SETB	TWINBIT2
          DJNZ	TWINBIT2CNT1,TWK2OUT
          MOV	TWINBIT2CNT2,#TWINBIT2OFF
  TWK2_0: CLR	TWINBIT2
          DJNZ	TWINBIT2CNT2,TWK2OUT
          MOV	TWINBIT2CNT1,#TWINBIT2ON
 TWK2OUT: RET

  TWINK3: MOV	A,TWINBIT3CNT1
          JZ	TWK3_0
          SETB	TWINBIT3
          DJNZ	TWINBIT3CNT1,TWK3OUT
          MOV	TWINBIT3CNT2,#TWINBIT3OFF
  TWK3_0: CLR	TWINBIT3
          DJNZ	TWINBIT3CNT2,TWK3OUT
          MOV	TWINBIT3CNT1,#TWINBIT3ON
 TWK3OUT: RET

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;SOUND_LIGHT ALARM AND OUTPUT CONTORL声光设置和控制

   ALARM: MOV	A,#OUTMOD
          MOV	C,ACC.0
          MOV	OUTMOD_M,C
          JC      AM0_0
          MOV     C,ALM_P1
          MOV     OUT_P1,C
          MOV     C,ALM_P2
          MOV     OUT_P2,C
          JMP     AM0_1
    AM0_0:MOV     C,ALM_P1
          CPL     C
          MOV     OUT_P1,C
          MOV     C,ALM_P2
          CPL     C
          MOV     OUT_P2,C
    AM0_1:MOV	C,ALM_P1
          ORL	C,ALM_P2
          JC	AM1
          JNB	ALMSODEN,AM0
          CLR	BUZR
          CLR     LED_ALM_P1
          CLR	LED_ALM_P2
          CLR	ALMSODEN
     AM0: RET
     AM1: SETB	ALMSODEN
          JNB	ALM_P1,AM2
          MOV	C,TWINBIT3
          MOV	LED_ALM_P1,C
          ANL	C,/LP1_BUZR_OK
          MOV	BUZR,C
     
     AM2: JNB	ALM_P2,AMOUT
          MOV	C,TWINBIT3
          MOV	LED_ALM_P2,C
          ANL	C,/LP8_BUZR_OK
          MOV	BUZR,C
   AMOUT: RET


 ALARM1:JNB     ZS_EN1,ALA_1
        MOV     C,ALM_SH
        MOV     OUT_SH,C
        MOV     C,ALM_JI
        MOV     OUT_JI,C
        
        MOV     C,ALM_SH
        MOV     LED_SH,C
        MOV     C,ALM_JI
        MOV     LED_JI,C
        RET
 ALA_1: JNB     OK_Y,ALA_2
        CLR     C
        MOV     OUT_JI,C
        MOV     LED_JI,C
        RET
 ALA_2: JNB     OK_X,ALA_3
        CLR     C
        MOV     OUT_SH,C
        MOV     LED_SH,C
   ALA_3:RET
 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  SEQADJ: MOV	C,RIGHTKEY                  ;利用中断监控RIGHTKEY,LEFTKEY按键时间
          ORL	C,LEFTKEY
          JC	SA0
          CLR	SEQADJ_EN
          MOV	SHIFTDLYCNT,#SHIFTDLY*2
          RET
     SA0: DJNZ	SHIFTDLYCNT,SAOUT
          SETB	SEQADJ_EN
          MOV	SHIFTDLYCNT,#SHIFTDLY*2
  SAOUT:  RET

;-----------------------------------------------------------------------------------------

KEYMONITOR:
          JB	DESKTOP,KMOUT               ;如当前菜单处于顶层则直接退出KEYMONITOR
          MOV	C,FUN
          ORL	C,LEFTKEY
          ORL	C,ENT
          ORL	C,RIGHTKEY
          ORL	C,ESC
          JC	KM1                         ;判断是否有键按下
          DJNZ 	KMTCNT1,KMOUT               ;利用中断产生长时间延时,通过改变参数KMT1,KMT2达到改变延时时间目的
          MOV	KMTCNT1,#KMT
          DJNZ	KMTCNT2,KMOUT
          SETB	DESKTOP
     KM1: MOV	KMTCNT1,#KMT
          MOV	KMTCNT2,#20
   KMOUT: RET
;-----------------------------------------------------------------------------------------
 
 LP1_BUZR_DLY:
          JB	ALM_P1,LP1BD0
          MOV	LP1_BUZRCNT1,#LP1_BUZRTIM
          MOV	LP1_BUZRCNT2,#20
          CLR	LP1_BUZR_OK

⌨️ 快捷键说明

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