【发布时间】:2015-10-13 07:37:36
【问题描述】:
MTS-88.C 板有一个英特尔 8255 PPI,与地址为 000100xxb 的微处理器 8088 相连。板的顶部包括连接器 CN01-CN09 和 LED01 –LED08。 LED01 在内部连接到 CN0(i+1)。 CN02-CN09各有两个接线端子,一个直接接GND,另一个通过按钮开关接+12v电源。
PBi 连接到 LED (16-i),继电器 RLi 连接到 CN (9+i)。所以 PBi 控制 CN (17-i)。 CN10 到 CN17 中的每一个都包含三个连接端子——标记为 NO(常开)、COM 和 NC(常闭)。 NO接GND,NC接+12V电源,COM端子可用于驱动12V直流或步进电机或其他需要12V供电的设备。
以下装配程序通过按键(三个按钮)控制直流电机的旋转方向,方式如下:
P1:顺时针
P2:逆时针
P3:停止
组装程序:
Address Assembly Code
0000:0400 MOV AL,90
0000: 0402 OUT 13,AL
0000: 0404 MOV AL,00
0000: 0408 IN AL,10
0000: 040A CMP AL,FE //what are we checking here?
0000: 040C JNE 419
0000: 040E MOV AL,00 //why are we assigning 00?
0000: 0410 OUT 11,AL
0000: 0412 MOV AL,02 //why are we using 02?
0000: 0414 OUT 11,AL
0000: 0416 JMP 500
0000: 0419 CMP AL,FB //what are we checking here?
0000: 041B JNE 428
0000: 041D MOV AL,00 //why are we assigning this?
0000: 041F OUT 11,AL
0000: 0421 MOV AL,01 //why are we using 01?
0000: 0423 OUT 11,AL
0000: 0425 JMP 500
0000: 0428 CMP AL,FD //what are we checking here?
0000: 042A JNE 408
0000: 042C MOV AL,00
0000: 042E OUT 11,AL
0000: 0430 JMP 500
0000: 0433 INT 3
0000: 0500 MOV CX,100
0000: 0503 LOP 0503
0000: 0505 JMP 408
0000: 0508 INT 3
我对上面代码中通过 cmets 标记的代码有些困惑。我的另一个问题是电机是如何顺时针和逆时针移动的?如果在这里中继有什么作用?
【问题讨论】:
标签: assembly microcontroller intel microprocessors