资讯详情

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

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

; 转速控制是通过8255输入信号在每次执行中断程序内调整控制信号的循环次数来实现的 CODE SEGMENT ASSUME CS:CODE START: PUSH CS POP DS;数据段和代码段共用一个地址 JMP MAIN NUM 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;I 1初始化 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;开 中断,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 MOV SI,0 NEXT: MOV ,03FF ;简短延时 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 EN ;-------按键扫描程序---------- 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 -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。锐单自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台