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

📄 简易缩放尺.asm

📁 开发平台,任一MCS-51单片机上,很多程序,如键盘,显示,液晶驱动
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;***********************************
SIGN_P_A  EQU 20H.0 ;拉伸的标志位(1)表拉
SIGN_P_B  EQU 20H.1;拉伸的标志位
SIGN_P_C  EQU 20H.2;拉伸的标志位
SIGN_P    EQU 20H.3;拉伸的标志位
SIGN_ZERO EQU 20H.4 ;零标志
SIGN_BIG  EQU 20H.5 ;标志大小
SIGN_HAVE EQU 20H.6 ;有的标志
SIGN_HAVE_1 EQU 20H.7 ;有的标志
SIGN_R     EQU  21H.1 ;确认键





PICK_A   EQU 17H  ;步进电机输出优先级;;//
PICK_B   EQU 18H  ;步进电机输出优先级;;;//
PICK_C   EQU 19H  ;步进电机输出优先级///;;;

FACT_HX EQU  1AH  ;开始输入的X轴对应的坐标
FACT_LX EQU  1BH  ;开始输入的X轴对应的坐标
FACT_HY EQU  1CH  ;开始输入的Y轴对应的坐标
FACT_LY EQU  1DH  ;开始输入的Y轴对应的坐标
END_HY EQU  1EH   ;结束输入的X轴对应的坐标
END_LY EQU  1FH   ;结束输入的X轴对应的坐标
ST_3  EQU  25H ;HH
ST_2  EQU  26H ;H
ST_1  EQU  27H ;L
KEYRAM     EQU 28H ;重要的CASE

LOGO_A   EQU  31H ;
LOGO_B   EQU  32H ;
LOGO_C   EQU  33H ;
END_HX   EQU  34H  ;结束  输入的X轴对应的坐标
END_LX   EQU  35H   ;结束输入的X轴对应的坐标
OUT_A_H  EQU 36H  ;一边的长度
OUT_A_L  EQU 37H  ;
OUT_B_H  EQU 38H  ;一边的长度
OUT_B_L  EQU 39H  ;
OUT_C_H  EQU 3AH  ;一边的长度
OUT_C_L  EQU 3BH  ;

START_HX       EQU   40H  ;转化的X轴对应的坐标
START_LX       EQU   41H  ;转化的X轴对应的坐
START_HY       EQU   42H ;转化的Y轴对应的坐标
START_LY       EQU   43H ;转化的Y轴对应的坐标
OUT_1_A_H      EQU 44H  ;一边的长度
OUT_1_A_L      EQU 45H ;小数
OUT_1_B_H      EQU 46H  ;一边的长度
OUT_1_B_L      EQU 47H  ;小数
OUT_1_C_H      EQU 48H  ;一边的长度
OUT_1_C_L      EQU 49H  ;小数
CRAM           EQU 4AH  ;缓存
LINE_A_H      EQU   4BH ;计算后输出一边的长度
LINE_A_L      EQU   4CH ;计算后输出小数
LINE_B_H      EQU   4DH ;计算后输出一边的长度
LINE_B_L      EQU   4EH ;计算后输出一边的长度
LINE_C_H      EQU   4FH ;计算后输出一边的长度
LINE_C_L      EQU   50H ;计算后输出一边的长度
CASE_HH        EQU   56H  ;缓存
CASE_HL        EQU   57H  ;缓存
CASE_H        EQU   58H  ;缓存
CASE_L        EQU   59H  ;缓存
;*****************************
 org 00h
 ljmp main
 org 50h
MAIN:MOV SP,#62H
     MOV KEYRAM,#00H
     CLR SIGN_R
     CLR EA

       mov FACT_HX,#01h
       mov FACT_LX,#2Ch
       mov FACT_Hy,#00h
       mov FACT_ly,#00h
       
       
       mov END_HX,#00h
       mov END_LX,#00h
       mov END_Hy,#00h
       mov END_ly,#00h



;;;;;;;;;;;;;;;;;
        
LOGIN:LCALL SCAN
      LCALL EUX_2
      LCALL LCM
      JB SIGN_R,EU_1
      MOV A,KEYRAM
      CJNE A,#01H,LOGIN    
LOGIN_1:LCALL SCAN
        LCALL EUX_2
        LCALL LCM
        JB SIGN_R,EU_1
        MOV A,KEYRAM
        CJNE A,#02H,LOGIN_1 
LOGIN_2:LCALL SCAN
         LCALL EUX_2
        LCALL LCM
       JB SIGN_R,EU_1
       MOV A,KEYRAM
       CJNE A,#03H,LOGIN_2
LOGIN_3:LCALL SCAN
         LCALL EUX_2
        LCALL LCM
        JB SIGN_R,EU_1
        MOV A,KEYRAM
        CJNE A,#04H,LOGIN_3
        MOV KEYRAM,#00H
        AJMP LOGIN             
EU_1: LJMP KNOW_1
EU_END:ajmp MAIN



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*****************按键数据处理区
EUX_2:MOV R2,ST_3
      MOV R3,ST_2
      MOV R4,ST_1
      LCALL BCD3
      MOV A,KEYRAM
      CJNE A,#00H,EUX_3
      MOV FACT_HX,R6
      MOV FACT_LX,R7
      RET
EUX_3:CJNE A,#01H,EUX_4
      MOV FACT_HY,R6
      MOV FACT_LY,R7
      RET
EUX_4:CJNE A,#02H,EUX_5
      MOV END_HX,R6
      MOV END_LX,R7
      RET
EUX_5:CJNE A,#03H,EUX_6
      MOV END_HY,R6
      MOV END_LY,R7          
EUX_6:RET


;;;;*********************************************
;标号:  BCD3    功能:无符号三字节BCD码转换成两字节十六进制数
;入口条件:R2、R3,R4   数 注意高字节是R2
;出口信息:R6,R7存放转换后的十六进制数注意高字节是R6
;影响资源:PSW、A、B、R2~R7    堆栈需求:  2字节
BCD3:CLR C
     MOV A,R2
     MOV B,#100
     MUL AB
     MOV R7,A
     MOV R6,B
     MOV A,R3
     MOV B,#10
     MUL AB
     CLR C
     ADD A,R7
     MOV R5,A ;缓存
     MOV A,B
     ADDC A,R6
     MOV R6,A
     CLR C
     MOV A,R4
     ADD A,R5
     MOV R7,A
     MOV A,R6
     ADDC A,#00H
     MOV R6,A

RET
 
;=========================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;键盘扫描子程序
SCAN:
MOV P0,#7FH
MOV A,P0
CJNE A,#7FH, KEY1
MOV P0,#0BFH
MOV A,P0
CJNE A,#0BFH, KEY5
MOV P0,#0DFH
MOV A,P0
CJNE A,#0DFH,KEY9
MOV P0,#0EFH
MOV A,P0
CJNE A,#0EFH,T_O
RET
T_O:LJMP KEY13

KEY1:CJNE A,#77H,KEY2
NOP
RET
KEY2:CJNE A,#7BH,KEY3
NOP
RET
KEY3:CJNE A,#7DH,KEY4
NOP
RET
KEY4:CJNE A,#7EH,MM
NOP
MM:RET
KEY5:CJNE A,#0B7H,KEY6  ;数字键
MOV R7,#00H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY6:CJNE A,#0BBH,KEY7
MOV R7,#01H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY7:CJNE A,#0BDH,KEY8
MOV R7,#02H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY8:CJNE A,#0BEH,KEY9
MOV R7,#03H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY9:CJNE A,#0D7H,KEY10
MOV R7,#04H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1


RET
KEY10:CJNE A,#0DBH,KEY11
MOV R7,#05H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY11:CJNE A,#0DDH,KEY12
MOV R7,#06H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY12:CJNE A,#0DEH,KEY13
MOV R7,#07H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1
RET
KEY13:CJNE A,#0E7H,KEY14
MOV R7,#08H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET

KEY14:CJNE A,#0EBH,KEY15
MOV R7,#09H
MOV ST_3,ST_2
MOV ST_2,ST_1

MOV ST_1,R7
LCALL DELAY1

RET
KEY15:CJNE A,#0EDH,KEY16     ;停止键
INC KEYRAM
LCALL DELAY1
LCALL DELAY1
RET                          ;电机正转
KEY16:CJNE A,#0EEH,LL        ;确认键
LCALL DELAY1
SETB  SIGN_R
LCALL DELAY1
LCALL DELAY1
LL:RET
;;;;;;;;;;;;;
delay1:
    MOV R5,#250
XX: MOV R6,#250
    DJNZ R6,$
    DJNZ R5, XX
RET
;;;************************
;;;;;;;;;;;;;;;;;;;;;;;;;;液晶子程序
LCM:  
       MOV P1,#8fH
       ACALL Ming_Lin
       MOV DPTR, #TABLE
       MOV A,KEYRAM
       MOVC A,@A+DPTR
       MOV P1,A
       ACALL DADE 




 
      MOV A,KEYRAM
      CJNE A,#00H,LCM_1
      LCALL KEY_SX         
      RET
LCM_1: CJNE A,#01H,LCM_2
        LCALL KEY_SY
        RET
LCM_2:CJNE A,#02H,LCM_3
        LCALL KEY_EX
        RET
LCM_3:  CJNE A,#03H,LCM_4
        LCALL KEY_EY
LCM_4:  RET              
KEY_SX:       
              MOV P1,#83H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_3
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE


              MOV P1,#84H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_2
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE

              MOV P1,#85H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_1
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE
              RET
;;;;***************************************
KEY_SY:       MOV P1,#88H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_3
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE


              MOV P1,#89H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_2
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE

              MOV P1,#8AH
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_1
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE
              RET
;;;***************************
KEY_EX:       MOV P1,#0C3H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_3
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE


              MOV P1,#0C4H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_2
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE

              MOV P1,#0C5H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_1
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE
              RET
;;;********************************
KEY_EY:       MOV P1,#0C9H
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_3
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE


              MOV P1,#0CAH
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_2
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE

              MOV P1,#0CBH
              ACALL Ming_Lin
              MOV DPTR, #TABLE
              MOV A,ST_1
              MOVC A,@A+DPTR
              MOV P1,A
              ACALL DADE
              RET 
;;*********************************           
              DADE:SETB P2.2
              CLR P2.3
              SETB P2.4       ;给下降沿

              CPL P2.4
              ACALL DALAY1
              RET
  Ming_Lin:   CLR P2.2         ;RS=0
              CLR P2.3         ;R/W=0
              SETB P2.4

                 ;给下降沿
              CPL P2.4
              ACALL DALAY
              RET
         DALAY: MOV R5,#10H
        ALJSDH:MOV R6,#123
              DJNZ R6,$
              DJNZ R5,ALJSDH
              RET

           DALAY1:MOV R7,#25
                 DJNZ R7,$
                 RET

  Ming_Lin_1:   CLR P2.2         ;RS=0
              CLR P2.3         ;R/W=0
              SETB P2.4
               ACALL DALAY
                 ;给下降沿
              CPL P2.4
              ACALL DALAY
              RET
TABLE:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H


       
       
       
        
        
 





;;;***********************************************************步进电机优先级扫描
KNOW_1:MOV LOGO_A,#02H
       MOV LOGO_B,#02H
       MOV LOGO_B,#02H
       LCALL CONTROL
       JB SIGN_P_A,KNOW_2
       INC LOGO_A
KNOW_2:JB SIGN_P_B,KNOW_3
       INC LOGO_B
KNOW_3:JB SIGN_P_C,POCESS_1
       INC LOGO_C
        
POCESS_1:
         CLR SIGN_HAVE
         
         MOV PICK_A,#00H
         MOV PICK_B,#00H
         MOV PICK_C,#00H
         
         MOV R0,#31H
         
         MOV A,@R0
         CLR C
         SUBB A,#03H
         JC POCESS_2
         MOV R1,#17H
         MOV A,R0
         MOV @R1,A
         AJMP POCESS_3
POCESS_2:MOV R1,#19H
         MOV A,R0
         MOV @R1,A
         SETB SIGN_HAVE

POCESS_3: INC R0
          MOV A,@R0
          CLR C
          SUBB A,#03H
          JC POCESSX_2
          JNB SIGN_HAVE,POCESS_10
          MOV R1,#17H
          AJMP POCESS_11
POCESS_10:INC R1         
POCESS_11:MOV A,R0
          MOV @R1,A
          AJMP POCESSX_3
POCESSX_2:JNB SIGN_HAVE,POCESS_Y
          DEC R1

⌨️ 快捷键说明

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