网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 单片机 > 正文
步进电机的控制
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: Admin 发布时间: 09/07/22

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

  ;文件名“5_3.ASM”

 

  ;功能:步进电机的控制。

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

  PCLEQU02H;定义PCL寄存器地址

  STATUSEQU03H;定义状态寄存器地址

  PORTCEQU07H;定义端口C的数据寄存器地址

  PORTDEQU08H;定义端口D的数据寄存器地址

  TRISCEQU87H;定义端口C的方向寄存器

  TRISDEQU88H;定义端口D的方向寄存器

  INTCONEQU0BH;定义INTCON控制寄存器

  CCP1IFEQU2H;定义CCP1IF

  CCP1CONEQU17H;定义CCP1CON控制寄存器

  CCPR1LEQU0EH;定义CCPR1L控制寄存器

  CCPR1HEQU0FH;定义CCPR1H控制寄存器

  PIR1EQU0CH;定义第一外设中断标志寄存器

  PIR2EQU0DH;定义第二外设中断标志寄存器

  TMR1LEQU0EH;定义TMR1L

  TMR1HEQU0FH;定义TMR1F

  ADRESHEQU1EH;定义ADRESH

  ADCON0EQU1FH;定义数模转换器ADC的寄存器

  PIE1EQU8CH;定义第一外设中断屏蔽寄存器

  PIE2EQU8DH;定义第二外设中断屏蔽寄存器

  ADCON1EQU9FH;定义数模转换器ADC的寄存器

  T1CONEQU10H;定义TIMER1控制寄存器

  RP1EQU06H;定义状态寄存器中的页选位RP1

  RP0EQU05H;定义状态寄存器中的页选位RP0

  ZEQU02H;定义状态寄存器中的0标志位Z

  CEQU00H;定义状态寄存器中的标志位C

  TMR1IFEQU00H;定义第二外设中断屏蔽寄存器中的TMR1IF

  DATA1EQU20H;定义外循环变量

  DATA2EQU21H;定义内循环变量

  TEMPEQU22H;定义临时变量存储端口D的输入

  W_TEMPEQU25H;定义临时变量W_TEMP

  S_TEMPEQU26H;定义临时变量S_TEMP

  SCALEREQU27H;定义临时变量SCLEAR

  AD_STATUSEQU28H;定义临时变量AD_STATUS

  SIGNEQU22H;定义临时变量SIGN

  SUNEQU24H;定义临时变量SUN

  INDEXEQU25H;定义临时变量INDEX

  W_BUFEQU26H;定义临时变量W_BUF

  VALUEEQU27H;定义临时变量VALUE

  NUMEQU28H;定义临时变量NUM

  COUNT1EQU1AH;定义存储外循环次数的变量

  COUNT2EQU0FFH;定义存储内循环次数的变量

  ; ***************************主程序开始*********************************

  ORG00H

  NOP;空指令

  GOTO MAIN

  ORG04H;中断向量的地址为04H

  GOTOINT;跳到中断子程序

  ; *****************************中断子程序开始****************************

  INT

  MOVWFW_TEMP;W寄存器的内容存储

  SWAPFSTATUS,0;将STATUS寄存器中高低字节交换

  MOVWFS_TEMP;交换后的结果存入S_TEMP

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  BTFSCPIR1,TMR1IF;察看是否TMR1中断

  GOTONEXT1;是,

  GOTONEXT2;否

  NEXT1

  BTFSCSIGN,0;察看SIGN的第0位是否为0

  GOTONEXT3;否

  BCFPORTC,2;是

  NEXT3

  COMFSIGN,1;SIGN取反

  BCFPIR1,TMR1IF;清中断标志位

  CLRFTMR1L;对TMR1重新输入值0F548H

  MOVLW0F5H;

  MOVWFTMR1H;

  MOVLW48H;

  MOVWFTMR1L;

  NEXT2

  SWAPFS_TEMP,0;中断前的STATUS的内容,重新装入

  MOVWFSTATUS;

  SWAPFW_TEMP,1;中断前的W的内容重新装入

  SWAPFW_TEMP,0;

  RETFIE

  ; *******************************中断子程序结束**************************

  ; ********************************主程序开始*****************************

  MAIN

  CALL INITIAL;调初始化子程序

  LOOP

  CALLAAA;调用AAA输出子程序

  NOP

  S_0

  BTFSSSIGN,0;SIGN为1,则转到S_1

  GOTOS_0;

  S_1

  BTFSCSIGN,0;SIGN为0,则转到LOOP

  GOTOS_1;

  GOTOLOOP;

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

  ; ***************************初始化子程序开始*********************************

  INITIAL

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  CLRFW_TEMP;将各个临时寄存器清零

  CLRFW_BUF;

  CLRFSIGN;

  BSFSTATUS,RP0;转到体1

  BCFSTATUS,RP1;

  BCFTRISC,2;将端口C的RC2设为输出

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  CLRFT1CON;清T1CON

  MOVLW0F5H;将TMR1设为0F548H

  MOVWFTMR1H;

  MOVLW048H;

  MOVWFTMR1L;

  CLRFINTCON;清中断标志

  BSFINTCON,6;中断使能

  BSFSTATUS,RP0;转到体1

  BCFSTATUS,RP1;

  BSFPIE1,0;TMR1中断使能

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  CLRFPIR1;清中断标志

  BSFSTATUS,RP0;转到体1

  BCFSTATUS,RP1;

  BSFT1CON,0;开TMR1

  BCFSTATUS,RP0;转到体0

  BCFSTATUS,RP1;

  BSFINTCON,7;开第三梯队的中断

  • 上一篇资讯: 输出脉冲宽度为20s
  • 下一篇资讯: 用PWM控制直流电机
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013574892963 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号