📄 完好自适应转速的检测128_32hz—键盘——微调.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;双字节与单字节相乘
;;;;;;;;;;;;;;;;;;;;;;;
CPU_1:MOV B,ASESS_2
MOV A,CASE_1
MUL AB
MOV CASE_3,A
MOV CASE_4,B
MOV A,CASE_2
MOV B,ASESS_2
MUL AB
ADD A,CASE_4
MOV CASE_4,A
RET
;;;;;;;;;;;;;;;;;;;;;;;中断1
INT_0:CLR EX0 ;关闭中断1
CLR SIGN_5
CLR SIGN_10
;MOV ASESS_4,#0AH
;LCALL MAIN_2 ;;???
;SETB SIGN_5
CLR IE0
SETB EX0
RETI
;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
;单字节十六进制整数转换成单字节BCD码整数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HBCD: MOV B,#100
DIV AB
MOV A,#10
XCH A,B
DIV AB
SWAP A
ORL A,B
RET
;;:::::::::::
LOOP1: CLR RS0
CLR RS1
CLR EA
MOV R1,#09H
MOV R0,#30H ;关闭中断
SETB P3.3 ;;为P3.3输入数据做准备
LCALL WAIT ;延时消抖
JB p3.3,STATION1 ;判断是否按下键
MOV R1,#09H
PACE5: SETB P1.2 ;初始化74LS164使它的Q0~Q7电位为0
CLR P1.3
SETB P1.3
DJNZ R1,PACE5
CLR A ;清零的目的是用A做计数
SETB P3.3 ;;为P3.3输入数据做准备
CLR P1.2
CLR P1.3
SETB P1.3
INC A
JNB P3.3,LOOP2 ;;;;;;;;;;;;JNB P3.3,LOOP2;;;;;;;;;;;;;;;
SETB P3.3 ;;为P3.3输入数据做准备
LOOP3:SETB P1.2
CLR P1.3
SETB P1.3
INC A
SETB P3.3 ;;为P3.3输入数据做准备
JNB P3.3,LOOP2
SJMP LOOP3
LOOP2: MOV R6,A ;使用到R6寄存器
XRL A,#08H ;功能键识别区
JZ KEY14
MOV A,R6
XRL A,#01H ;功能区键识别按下的是数字键
JZ STATION1
MOV A,R6
XRL A,#02H ;功能区键识别按下的是数字键
JZ STATION1
;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,R6 ;此区跳往查表区
XRL A,#03H
JZ X1 ;跳往POCESS处理
MOV A,R6
XRL A,#04H
JZ X2
MOV A,R6
XRL A,#05H
JZ X3
MOV A,R6
XRL A,#06H
JZ X4
MOV A,R6
XRL A,#07H
JZ X5
STATION1:CLR RS1
SETB RS0
SETB EA
RETI ;返回中断
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
X1: SETB POINT
CLR RS1
SETB RS0
SETB EA
RETI
X2: CLR POINT
CLR RS1
SETB RS0
SETB EA
RETI ;功能键区查表
X3:CLR RS1
SETB RS0
SETB EA
RETI
X4:CLR RS0
SETB RS1
SETB EA
RETI
X5:MOV ASESS_4,#00H
CLR RS1
SETB RS0
SETB EA
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY14: SETB P3.3 ;;为P3.3输入数据做准备
JNB P3.3,KEY14 ;防止按下数据输入键不放
;LJMP SPEAKE ;;;;;;////////////////////
MOV A,R3
XRL A,#00H ;;;;;;;;;;;
JZ KEY0 ;;;;;;;;;;
MOV R3,#00H
CLR RS1
SETB RS0 ;;;;;;;;;;;.
SETB EA
RETI ;;;;;;;;;;;
KEY0:
;此区为输录数字区
MOV R1,#09H
SETB P1.4
SETB P3.3
PACE1: CLR P1.2 ;初始化74LS164使它的Q0~Q7电位为0
CLR P1.3
SETB P1.3
DJNZ R1,PACE1
KEY1: SETB P1.4 ;;为P1.4输入数据做准备
SETB P3.3;;为P3.3输入数据做准备
JNB P1.4,KEY2 ;判断键区
JNB P3.3,KEY8 ;判断键区
SJMP KEY1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY2: LCALL WAIT ;延时消抖
SETB P1.4 ;为P1.4输入数据做准备
JB P1.4,KEY1 ;;;;;;;;;;;;;;;;;;;;;;;;;;
;LJMP SPEAKL ;;;;;;;;;;///////////////////////////
MOV R1,#09H
PACE2: SETB P1.2 ;该区使74LS164使它的Q0~Q7电位为1
CLR P1.3
SETB P1.3
DJNZ R1,PACE2
KEY3: CLR A ;数字键区扫描
SETB P1.4
CLR P1.2
CLR P1.3
SETB P1.3
SETB P1.4 ;为P1.4输入数据做准备
JNB P1.4,KEY17 ;跳往KEY17数字处理区(如果此时P1.4为0则A里的数为0)
CLR A
KEY4: SETB P1.2
CLR P1.3
SETB P1.3
INC A
SETB P1.4 ;为P1.4输入数据做准备
JNB P1.4,KEY17 ;跳往KEY17数字处理区
JB P1.4,KEY4
KEY17: SETB P1.4 ;为P1.4输入数据做准备
JNB P1.4,KEY17 ;防止手按在按键未放开
JB P1.4,KEY7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY8: SETB P3.3 ;为P3.3输入数据做准备
LCALL WAIT
JB P3.3,KEY1 ;;;;;;;;;;;;;;;;;;;;;;;
MOV R1,#09H
PACE3: SETB P1.2 ;该区使74LS164使它的Q0~Q7电位为1
CLR P1.3
SETB P1.3
DJNZ R1,PACE3
KEY9: MOV A,#08H ;功能键区数字键扫描
SETB P3.3
CLR P1.2
CLR P1.3
SETB P1.3
SETB P3.3 ;为P3.3输入数据做准备
JNB P3.3,KEY18 ;跳往KEY18按键处理区(如果此时P3.3为0则A里的数为0)
SETB P1.2
CLR P1.3
SETB P1.3
INC A
SETB P3.3 ;为P3.3输入数据做准备
JNB P3.3,KEY18
KEY20: SETB P1.2
CLR P1.3
SETB P1.3
INC A
SETB P3.3 ;为P3.3输入数据做准备
JNB P3.3,SAMSUNG
JB P3.3,KEY20
KEY21: LJMP KEY0 ;防止按下功能键区不是数字键
KEY18: SETB P3.3 ;为P3.3输入数据做准备
JNB P3.3,KEY18 ;防止手按在按键未放开
JB P3.3,KEY7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SAMSUNG: SETB P3.3 ;为P3.3输入数据做准备
JNB P3.3,SAMSUNG ;防止手按在按键未放开
JB P3.3,SAMSUNG10
SAMSUNG10:XRL A,#0FH ;判断停止输入数据;
JZ KEY13 ;判断停止输入数据;
JNZ KEY21 ;判断停止输入数据;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY7: CLR IE1 ;软件清除中断1请求标志位 (保险)
MOV @R0,A ;此时@R0里的数据就是所按的数字键代表的数字
INC R0 ;使R0指向下一字节
MOV SSL,@R0
LCALL LCM ;?????调用显示
MOV A,R0
XRL A,#32H ;;;??????
JZ KEY13
LJMP KEY0
KEY13: CLR IE1 ;软件清除中断1请求标志位 (保险)
MOV R1,#040H
MOV A,R0
MOV R2,A ;使用到R2寄存器
KEY16: DEC R0
MOV A,@R0 ;倒序存放数据区
MOV @R1,A
INC R1
CJNE R0,#030H, KEY16
MOV SSH,41H
MOV SSL,40H
LCALL LCM ;?????调用显示
MOV A,41H
MOV B,#0AH
MUL AB
MOV B,#40H
ADD A,B
MOV ASESS_4,A
CLR RS1
SETB RS0
SETB EA
RETI ;返回中断
;;;;;;;;;;;;;;;;;;;;;;;;
WAIT: MOV CHANGE_X1,#41 ;延时子程序 (10.074ms)
WAIT1: MOV CHANGE_X2,#123
WAIT2:DJNZ CHANGE_X2,WAIT2
DJNZ CHANGE_X1,WAIT1
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;
;;重新分配地址 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HANG EQU 76H ;指定行的位置
LIE EQU 77H ;指定列的位置
DEL1 EQU 78H ;用于延时
DEL2 EQU 79H ;用于延时
YE EQU 7AH ;页地址
LIEH EQU 7BH ;列地址高位
LIEL EQU 7CH ;列地址低位
DATAPAGE EQU 7DH ;送字数据计数
LOOPNUM EQU 7EH ;送显示列计数
CSPIN EQU P2.7 ;片选端
REST EQU P2.6 ;复位端
RSPIN EQU P2.5 ;命令/数据选择端
SCLPIN EQU P2.4 ;时钟端
SIDPIN EQU P2.3 ;数据输入端
SSH EQU 6BH;设定速度高位
SSL EQU 6CH;设定速度低位
SJH EQU 6DH;实际速度高位
SJL EQU 6EH;实际速度低位
TIMEH1 EQU 6FH;时间千位
TIMEH2 EQU 70H;时间百位
TIMEL1 EQU 71H;时间十位
TIMEL2 EQU 72H;时间个位
JICHUN1 EQU 73H;3个寄存地址
JICHUN2 EQU 74H
JICHUN3 EQU 75H
WEIEN_1 EQU 6AH
WEIEN_2 EQU 69H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCM:
MOV A,ASESS_1
LCALL HBCD
MOV B,A
ANL A,#00001111B
MOV SJL,A
MOV A,B
SWAP A
ANL A,#00001111B
MOV SJH,A
;________________________
MOV A,ASESS_3
LCALL HBCD
MOV B,A
ANL A,#00001111B
MOV TIMEL2,A
MOV A,B
SWAP A
ANL A,#00001111B
MOV TIMEL1,A
;;;;;;;;;;;;;;;;;;;;;;;;;;; 显示
;===============================================
SHUJU:
MOV A,TIMEL1
LCALL INCADDR0
MOV HANG,#2
MOV LIE,#10
LCALL SHANGXIABYTE
MOV A,TIMEL2
LCALL INCADDR0
INC LIE
LCALL SHANGXIABYTE
MOV A,SSH
LCALL INCADDR0
MOV HANG,#3
MOV LIE,#10
LCALL SHANGXIABYTE
MOV A,SSL
LCALL INCADDR0
INC LIE
LCALL SHANGXIABYTE
MOV A,SJH
LCALL INCADDR0
MOV HANG,#4
MOV LIE,#10
LCALL SHANGXIABYTE
MOV A,SJL
LCALL INCADDR0
INC LIE
LCALL SHANGXIABYTE
RET
;===============================================
;初始化界面
JIEMIAN:MOV DPTR,#TAB_C;汉字
;第一行
MOV HANG,#1
MOV LIE,#2
LCALL SHANGXIAONE;1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -