分享

51单片机步进电机控制汇编语言程序

 共同成长888 2015-07-17

51单片机步进电机控制汇编语言程序 

 ;本程序是通过秒信号触发中断来实现的,要求中断程序必须在1S内执行完毕

 ;步进电机转速控制是通过8255输入信号在每次执行中断程序内调整控制信号的循环次数来实现的
 CODE   SEGMENT
  ASSUME CS:CODE
 
 START:  PUSH CS
  POP DS;数据段和代码段共用一个地址
  JMP MAIN
  NUM DB 08H,04H,02H,01H;  定义循环控制信号
  DAT1 DB 0H    ;定义循环参量
  DAT2 DB 0H 
 
 ;---------初始化8253计数器-----------
 MAIN: MOV DX,203H;计数器0初始化,工作在方式3
  MOV AL,36H
  OUT DX,AL
 
  MOV DX,200H;给计数器0赋计数初值960H(2400)
  MOV AL,60H ;低8位
  OUT DX,AL
  MOV AL,09H ;高8位
  OUT DX,AL
 
  MOV DX,203H;计数器1初始化,工作在方式3
  MOV AL,76H
  OUT DX,AL
 
  MOV DX,201H;给计数器1赋计数处值80H(128)
  MOV AL,80H ;低8位
  OUT DX,AL
  MOV AL,00H ;高8位
  OUT DX,AL
 
 ;-----------初始化8255---------------
  MOV DX,021BH;A口输入,B口输出
  MOV AL,90H
  OUT DX,AL
    
 ;-----------初始化向量表8号中断--------
  MOV AX,0;ES:DI  
  MOV ES,AX
  MOV DI,20H;4*8=32
  MOV AX,OFFSET INTP;装载中断函数的偏移地址
  MOV ES:[DI],AX
  MOV AX,8100H;
  MOV ES:[DI+2],AX
 ;-------------初始化8259A--------------
  MOV DX,210H;ICW1初始化
  MOV AL,13H;上升沿触发,单片,要ICW4
  OUT DX,AL
 
  MOV DX,211H;ICW2初始化
  MOV AL,08H;初始化中断类型码范围,08-0F对应INT0-INT7
  OUT DX,AL
 
  MOV DX,211H;ICW4初始化
  MOV AL,01H;
  OUT DX,AL
 ;--------------打开中断--------------
  MOV DX,211H;打开8259A八号中断
  IN AL,DX
  AND AL,0FEH;1111 1110
  OUT DX,AL
  STI;开CPU中断,IF=1
 
  MOV BX,OFFSET NUM;取控制信号的偏移地址
  MOV SI,0       ;将SI循环归零
 
 LOP:    MOV AX,0
  JMP LOP;死循环,等待中断到来
 
 ;------------中断程序开始----------
  INTP PROC FAR;
 LTP: MOV DX,219H
  MOV AL,[BX+SI]
  OUT DX,AL
  INC SI
  CMP SI,04H
  JNZ NEXT
  MOV SI,0
 
 NEXT:   MOV CX,03FFFH ;简短延时
  LOOP $
  CALL REFRESH;调用按键扫描子程序
  DEC DAT1  ;循环次数减一
  JNZ LTP   ;循环次数减为零时跳出循环
 
  MOV AL,DAT2;重新填装DAT1的值
  MOV DAT1,AL
 
  MOV DX,210H;中断结束命令
  MOV AL,20H
  OUT DX,AL
  IRET;中断返回
  INTP ENDP
 
 ;-------按键扫描程序----------
 REFRESH PROC FAR
  MOV DX,218H
  IN AL,DX
  CMP AL,00H
  JNZ NEXT1  ;若输入信号为00,则循环参量置为1
  MOV DAT2,01H
 NEXT1: CMP AL,01H
  JNZ NEXT2  ;若输入信号为01,则循环参量置为2
  MOV DAT2,02H
 NEXT2: CMP AL,03H
  JNZ NEXT3  ;若输入信号为11,则循环参量置为3
  MOV DAT2,03H
 NEXT3: CMP AL,07H
  JNZ NEXT4  ;若输入信号为111,则循环参量置为4
  MOV DAT2,04H
 NEXT4   MOV DAT1,0H
  RET
 REFRESH ENDP
 ;-------按键扫描结束----------
 CODE    ENDS
  END START

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多