直流电机键盘控制微机8086附仿真图.docx

上传人:b****3 文档编号:4117983 上传时间:2022-11-28 格式:DOCX 页数:10 大小:45.32KB
下载 相关 举报
直流电机键盘控制微机8086附仿真图.docx_第1页
第1页 / 共10页
直流电机键盘控制微机8086附仿真图.docx_第2页
第2页 / 共10页
直流电机键盘控制微机8086附仿真图.docx_第3页
第3页 / 共10页
直流电机键盘控制微机8086附仿真图.docx_第4页
第4页 / 共10页
直流电机键盘控制微机8086附仿真图.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

直流电机键盘控制微机8086附仿真图.docx

《直流电机键盘控制微机8086附仿真图.docx》由会员分享,可在线阅读,更多相关《直流电机键盘控制微机8086附仿真图.docx(10页珍藏版)》请在冰豆网上搜索。

直流电机键盘控制微机8086附仿真图.docx

直流电机键盘控制微机8086附仿真图

CODESSEGMENT

ASSUMECS:

CODES

TABLEDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH;共阴字形码

;0123456789-空

KEYNUMDB7,8,9,11,4,5,6,10,1,2,3,14,12,0,13,14

;键盘中间值0~9为数字10~14为功能键操作数

SHOWDB6DUP(11);记录键盘输入值

STRINGDB86H,88H,88H,0C0H,88H;错误提示字形码

IODAEQU0F0H;DAC0832地址

IOAEQU80H;8255A口

IOBEQU82H;8255B口

IOCEQU84H;8255C口

IONEQU86H;8255控制口

START:

MOVAL,88H;初始化8255

OUT86H,AL

MOVAL,0FFH;清显示

OUT80H,AL

MOVAL,0FFH

OUT82H,AL

MOVAL,80H;使电压输出端为零

OUT0F0H,AL

MOVSI,0;*********++++++++++++++

KEY:

MOVBL,0;记录行号

MOVBH,0FEH;记录行扫

MOVCX,4

SCAN:

MOVAL,BH;8255C口输出

OUT84H,AL

INAL,84H

ANDAL,0F0H;低位屏蔽

CMPAL,0F0H

JNZcheck;有键按下跳转check

INCBL;没键按下,行号增1

ROLBH,1;准备扫下一行

CALLPRINT;

LOOPSCAN

JMPKEY

check:

;键盘防抖动check

CALLLONG

PUSHAX;

MOVAL,BH;

OUT84H,AL;

INAL,84H

ANDAL,0F0H

CMPAL,0F0H;检查按键

POPAX

JNZcheck;按键恢复则往下,否则继续

K1:

;计算键值

CMPAL,0E0H

JNZK2

MOVAL,0;按下的键在第0列

JMPKEY_NUM

K2:

CMPAL,0D0H

JNZK3

MOVAL,1;按下的键在第1列

JMPKEY_NUM

K3:

CMPAL,0B0H

JNZK4

MOVAL,2;按下的键在第2列

JMPKEY_NUM

K4:

CMPAL,70H

JNZKEY

MOVAL,3;按下的键在第3列

;得到键值

KEY_NUM:

MOVCL,2

SHLBL,CL;按键所在行的起始编号

ADDBL,AL;得到按键的键值

MOVBH,0

MOVAL,KEYNUM[BX];得到按键键值对应的中间值

CMPAL,10

JAEtransform;>9为功能键操作数,跳转

INCSI

MOVSHOW[SI],AL;将值赋值到show中

JMPKEY

;***************

transform:

;对应功能键进行处理

CMPAL,10;符号操作,使SHOW中为负数

JAt1

MOVSHOW[0],10

JMPKEY

t1:

CMPAL,11;符号操作,使SHOW中为正数

JAt2

MOVSHOW[0],11

JMPKEY

t2:

CMPAL,12;清除数据

JAt3

MOVCX,5

MOVBX,0

MOVSI,0;计数值清除

loop1:

MOVSHOW[BX],11;11对应无,即不显示

INCBX

LOOPloop1

JMPKEY

t3:

CMPAL,13;计数值退位,清除一位

JAt4

MOVSHOW[SI],11;

DECSI

JMPKEY

t4:

CMPAL,14;确认输出到直流电机

JNEKEY

CALLWORK;输出功能函数

JMPKEY

;***************

ERRORPROCNEAR;错误显示函数

PUSHAX

PUSHBX

PUSHCX

MOVCX,600

DISP:

PUSHCX

MOVCX,5

MOVBX,4

MOVAH,80H

DIS:

MOVAL,AH;输出字位码

OUT82H,AL

MOVAL,STRING[BX];输出字行码

OUT80H,AL

CALLDELAY;y延时

DECBX

RORAH,1

LOOPDIS

POPCX

LOOPDISP

MOVAL,0FFH;清显示

OUT80H,AL

POPCX

POPBX

POPAX

RET

ERRORENDP

;***************

WORKPROCNEAR;输出功能函数

PUSHAX

PUSHBX

PUSHCX

PUSHDX

CMPSI,4;数据大于4位,提示错误

JAWRONG

CMPSI,0;无输入值,提示错误

JEWRONG

JMPCACU

WRONG:

CALLERROR;错误显示函数

JMPFINAL

CACU:

;根据位数的实际值

CMPSI,1;一位数

JEST1

CMPSI,2;两位数

JEST2

CMPSI,3;三位数

JEST3

CMPSI,4;四位数

JEST4

ST1:

MOVAL,SHOW[1];计算

JMPSHU

ST2:

MOVBL,SHOW[2];计算

MOVAL,SHOW[1]

MOVBH,10

MULBH

ADDAL,BL

JMPSHU

ST3:

MOVBL,SHOW[3];计算

MOVAL,SHOW[2]

MOVBH,10

MULBH

ADDAL,BL

MOVAH,0

MOVBX,AX

MOVAL,SHOW[1]

MOVDL,100

MULDL

ADDAX,BX

JMPSHU

ST4:

MOVBL,SHOW[4];计算

MOVAL,SHOW[3]

ADDAL,BL

MOVBL,SHOW[2]

ADDAL,BL

MOVBX,AX

MOVAL,SHOW[1]

MOVAH,0

MOVDX,1000

MULDX

ADDAX,BX

JMPSHU

SHU:

CMPAX,1000;比较,大于1000,显示错误

JAWRONG

MOVDX,0;将数据转化为八位二进制形式

MOVBX,127

MULBX

MOVBX,1000

DIVBX

CMPSHOW[0],10;判断正负

JZNEGT

ADDAL,80H

OUT0F0H,AL;数据输出

JMPFINAL

NEGT:

MOVAH,AL

MOVAL,80H

SUBAL,AH

OUT0F0H,AL;数据输出

FINAL:

POPDX

POPCX

POPBX

POPAX

RET

WORKENDP

;***************

PRINTPROCNEAR

PUSHAX

PUSHBX

MOVBX,SI;当前输入位数

MOVDH,80H

ENDLESS:

MOVAL,SHOW[BX]

DECBX

MOVAH,0

MOVDI,AX

MOVAL,DH

OUT82H,AL;输出字位码

MOVAL,TABLE[DI];指向数字对应的字形码

OUT80H,AL;输出字形码

CALLDELAY;延时

RORDH,1

CMPBX,0

JGEENDLESS

MOVAL,0FFH;清显示

OUT80H,AL

POPBX

POPAX

RET

PRINTENDP

;***************

DELAYPROCNEAR;短延时

PUSHCX

movcx,2FH

EE:

LOOPEE

POPCX

RET

DELAYENDP

;***************

LONGPROCNEAR;长延时

PUSHCX

movCX,16EAH

THERE:

LOOPTHERE

POPCX

RET

LONGENDP

;***************

CODESENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1