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

📄 soc080225.asm

📁 一个有关电子秤的汇编代码,和大学一起进步!
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                  LCALL     DELAY1
BIAO20:
                  SETB      SETS
                  JNB       SETS,BIAO21
                  SJMP      BIAO20
BIAO21:
                  SETB      SPK
                  SETB      FMQ
                  LCALL     DSPXS           ;;;显示系数
                  JNB       SETS,$
                  LCALL     DELAY1
                  LCALL     DELAY1
                  MOV       R2,#05H
                  MOV       R5,#0FFH
                  MOV       R6,#20H
BIAO22:
                  SETB      ZERO
                  SETB      SETS
                  JNB       SETS,BIAO23
                  JNB       ZERO,BIAO25
                  DJNZ      R5,BIAO22
                  MOV       R5,#0FFH
                  DJNZ      R6,BIAO22
                  MOV       R6,#20H
                  LCALL     SHANSHUO
                  SJMP      BIAO22
BIAO23:
                  SETB      SPK
                  SETB      FMQ
                  DJNZ      R2,BIAO24       ;;;移位
                  SJMP      BIAO26          ;;;设定完成
BIAO24:
                  LCALL     TTOL5           ;;;更新显示
                  JNB       SETS,$
                  LCALL     DELAY1
                  LCALL     DELAY1
                  MOV       R5,#0FFH
                  MOV       R6,#20H
                  SJMP      BIAO22
BIAO25:
                  SETB      SPK
                  SETB      FMQ
                  LCALL     ZENGYI
                  JNB       ZERO,$
                  LCALL     DELAY1
                  SJMP      BIAO24
BIAO26:
                  LCALL     SVXS
                  MOV       DSPL1,#0DH      ;;;显示[  END]
                  MOV       DSPL2,#13H      ;;;结束标定
                  MOV       DSPL3,#0EH
                  MOV       DSPL4,#15H
                  MOV       DSPL5,#15H
                  MOV       R5,#0FFH
                  MOV       R6,#50H
                  JNB       SETS,$
                  LCALL     DELAY1
                  LCALL     DELAY1
BIAO27:
                  SETB      SETS
                  JNB       SETS,BIAO28     ;;;按下[置零]退出
                  DJNZ      R5,BIAO27
                  MOV       R5,#0FFH
                  DJNZ      R6,BIAO27
                  MOV       R6,#50H         ;;;时间到后自动退出
BIAO28:
                  SETB      SPK
                  SETB      FMQ
                  SETB      DDT
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;置零操作:当前质量在置零范围内时,;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;允许清0,否则显示" Err-1"并退出;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ZHILING:
                  MOV       MNDAT1,CQDAT1   ;;;保存修补质量对应的内码
                  MOV       MNDAT2,CQDAT2
                  MOV       CQXS1,#00H
                  MOV       CQXS2,#00H
                  MOV       A,#15H
                  LCALL     DISPLAY5
                  MOV       DSPL1,#00H
                  JNB       DDT,ZL1
                  MOV       DSPL2,#00H
ZL1:
                  CLR       SYMB1
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSPSCAN:          ;;;功能说明:设定分度值时,先读取设定值.
                  MOV       R5,#00H
                  MOV       R3,#01H
                  MOV       R6,#00H
                  MOV       R0,#DSPT1
                  CLR       EA
                  LCALL     RDBYTE
                  SETB      EA
                  MOV       A,DSPT1
                  ANL       A,#0FH
                  CJNE      A,#0AH,BIAO04
                  MOV       DSPL1,#00H
                  MOV       DSPL2,#01H
                  RET
BIAO04:
                  CJNE      A,#05H,BIAO05
                  MOV       DSPL2,#15H
                  MOV       DSPL1,#05H
                  RET
BIAO05:
                  CJNE      A,#02H,BIAO06
                  MOV       DSPL2,#15H
                  MOV       DSPL1,#02H
                  RET
BIAO06:
                  MOV       DSPL2,#15H
                  MOV       DSPL1,#01H
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SCALE:            ;;;功能说明:标定分度值,保存在x5045的00单元
                  MOV       A,DSPL1
                  CJNE      A,#00H,SCALE1
                  MOV       A,#0AH
                  JMP       SCALE5
SCALE1:
                  CJNE      A,#01H,SCALE2
                  MOV       A,#01H
                  JMP       SCALE5
SCALE2:
                  CJNE      A,#02H,SCALE3
                  MOV       A,#02H
                  JMP       SCALE5
SCALE3:
                  MOV       A,#05H
SCALE5:
                  MOV       DSPT1,A
                  MOV       SCADAT,A        ;;;更新当前分度值
                  MOV       R0,#DSPT1       ;;;待写入的数据在RAM中首地址
                  MOV       R3,#01H         ;;;写入数据的个数
                  MOV       R5,#00H         ;;;A8=0
                  MOV       R6,#00H         ;;;存放在x5045中的地址00H
                  CLR       EA
                  LCALL     WRBYTE
                  SETB      EA
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSPDOT:           ;;;功能说明:设定分度值时,先读取设定值.
                  MOV       R5,#00H
                  MOV       R3,#01H
                  MOV       R6,#01H
                  MOV       R0,#DSPT1
                  CLR       EA
                  LCALL     RDBYTE
                  SETB      EA
                  MOV       A,DSPT1
                  CJNE      A,#0AAH,DSPDOT1
                  SETB      DOT
                  MOV       DSPL1,#05H
                  MOV       DSPL2,#0EH      ;;;显示YES
                  MOV       DSPL3,#1AH
                  RET
DSPDOT1:
                  MOV       DSPL1,#12H
                  MOV       DSPL2,#13H      ;;;显示no
                  MOV       DSPL3,#15H
                  CLR       DOT
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SVDOT:            ;;;功能说明:标定小数位,保存在x5045的00单元
                  JB        DOT,SVDOT1
                  MOV       A,#55H
                  SJMP      SVDOT2
SVDOT1:
                  MOV       A,#0AAH
SVDOT2:
                  MOV       DSPT1,A
                  MOV       DOTDAT,A        ;;;更新当前小数点位
                  MOV       R0,#DSPT1       ;;;待写入的数据在RAM中首地址
                  MOV       R3,#01H         ;;;写入数据的个数
                  MOV       R5,#00H         ;;;A8=0
                  MOV       R6,#01H         ;;;存放在x5045中的地址00H
                  CLR       EA
                  LCALL     WRBYTE
                  SETB      EA
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSPOVL:
                  MOV       A,DOTDAT
                  CJNE      A,#0AAH,DSPOVL1
                  SETB      DOT
                  SJMP      DSPOVL2
DSPOVL1:
                  CLR       DOT
DSPOVL2:
                  MOV       R5,#00H
                  MOV       R3,#02H
                  MOV       R6,#02H
                  MOV       R0,#DSPT1
                  CLR       EA
                  LCALL     RDBYTE
                  SETB      EA
                  MOV       R5,DSPT1
                  MOV       R6,DSPT2
                  MOV       R7,#00H
                  MOV       R1,#DSPT1
                  LCALL     BCD
                  LCALL     TTOL5
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OVLOAD:           ;;;功能说明:标定满量程时,将满量程转换为2个字节的重量值保存在02H,03H中
                  LCALL     LTOT5
                  LCALL     TWOBCD
                  MOV       FSDAT1,TEMP1
                  MOV       FSDAT2,TEMP2    ;;;更新满量程设定值
                  MOV       R0,#TEMP1       ;;;待写入的数据在RAM中首地址
                  MOV       R3,#02H         ;;;写入数据的个数
                  MOV       R5,#00H         ;;;A8=0
                  MOV       R6,#02H         ;;;存放在x5045中的地址02H
                  CLR       EA
                  LCALL     WRBYTE
                  SETB      EA
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSPXS:            ;;;功能说明:显示最后一次标定的系数.
                  MOV       R5,#00H
                  MOV       R3,#02H
                  MOV       R6,#04H
                  MOV       R0,#DSPT1
                  CLR       EA
                  LCALL     RDBYTE
                  SETB      EA
                  MOV       R5,DSPT1
                  MOV       R6,DSPT2
                  MOV       R7,#00H
                  MOV       R1,#DSPT1
                  LCALL     BCD
                  LCALL     TTOL5
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SVXS:             ;;;功能说明:标定载重时系数,将数据保存在0BH,0CH(内码)中,将标定参数保存在0DH中.
                  LCALL     LTOT5
                  LCALL     TWOBCD
                  MOV       XSDAT1,TEMP1
                  MOV       XSDAT2,TEMP2    ;;;更新当前标定系数
                  MOV       DSPT1,TEMP1
                  MOV       DSPT2,TEMP2
                  MOV       DSPT3,#0AAH
                  MOV       R0,#DSPT1       ;;;待写入的数据在RAM中首地址
                  MOV       R3,#03H         ;;;写入数据的个数
                  MOV       R5,#00H         ;;;A8=0
                  MOV       R6,#04H         ;;;存放在x5045中的地址04H
                  CLR       EA
                  LCALL     WRBYTE
                  SETB      EA
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ZENGYI:
                  CJNE      R2,#05H,ZY1
                  INC       DSPT5
                  MOV       A,DSPT5
                  MOV       B,#0AH
                  DIV       AB
                  MOV       DSPT5,B
                  MOV       DSPL5,DSPT5
                  RET
ZY1:
                  CJNE      R2,#04H,ZY2
                  INC       DSPT4
                  MOV       A,DSPT4
                  MOV       B,#0AH
                  DIV       AB
                  MOV       DSPT4,B
                  MOV       DSPL4,DSPT4
                  RET
ZY2:
                  CJNE      R2,#03H,ZY3
                  INC       DSPT3
                  MOV       A,DSPT3
                  MOV       B,#0AH
                  DIV       AB
                  MOV       DSPT3,B
                  MOV       DSPL3,DSPT3
                  RET
ZY3:
                  CJNE      R2,#02H,ZY4
                  INC       DSPT2
                  MOV       A,DSPT2
                  MOV       B,#0AH
                  DIV       AB
                  MOV       DSPT2,B
                  MOV       DSPL2,DSPT2
                  RET
ZY4:
                  INC       DSPT1
                  MOV       A,DSPT1
                  MOV       B,#0AH
                  DIV       AB
                  MOV       DSPT1,B
                  MOV       DSPL1,DSPT1
                  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHANSHUO:
                  CJNE      R2,#05H,SHSH2
                  MOV       A,DSPL5
                  CJNE      A,#15H,SHSH1
                  MOV       DSPL5,DSPT5
                  RET
SHSH1:
                  MOV       DSPL5,#15H
                  RET
SHSH2:
                  CJNE      R2,#04H,SHSH4
                  MOV       A,DSPL4
                  CJ

⌨️ 快捷键说明

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