使用微处理器

时间:2015-10-13 07:37:36

标签: assembly microcontroller intel microprocessors

MTS-88.C板的intel 8255 PPI与微处理器8088连接,地址为000100xxb。板的顶部包括连接器CN01-CN09和LED01-LED20。 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 DC或步进电机或其他需要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   

我对上面代码中通过注释标记的代码有些疑惑。我的另一个问题是电机是如何顺时针和逆时针移动的?如果继电器在这里有什么功能?

1 个答案:

答案 0 :(得分:0)

我添加了一些评论

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   // check "Forward" key press (active low)
0000: 040C      JNE 419 
0000: 040E      MOV AL,00   // turn off outputs (active high)
0000: 0410      OUT 11,AL   
0000: 0412      MOV AL,02   // turn on output 2 (active high)
0000: 0414      OUT 11,AL   
0000: 0416      JMP 500 
0000: 0419      CMP AL,FB   // check "Reverse" key press (active low)
0000: 041B      JNE 428 
0000: 041D      MOV AL,00   // turn off outputs (active high)
0000: 041F      OUT 11,AL   
0000: 0421      MOV AL,01   // turn on output 1 (active high)
0000: 0423      OUT 11,AL   
0000: 0425      JMP 500 
0000: 0428      CMP AL,FD   // check "Stop" key press (active low)
0000: 042A      JNE 408 
0000: 042C      MOV AL,00   // turn off outputs (active high)
0000: 042E      OUT 11,AL   
0000: 0430      JMP 500 
0000: 0433      INT 3
0000: 0500      MOV CX,100  // software delay
0000: 0503      LOP 0503    
0000: 0505      JMP 408 
0000: 0508      INT 3