欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    程序清单72无位置传感器的无刷直流电动机调速控制程序.docx

    • 资源ID:17000109       资源大小:16.58KB        全文页数:24页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序清单72无位置传感器的无刷直流电动机调速控制程序.docx

    1、程序清单72 无位置传感器的无刷直流电动机调速控制程序程序清单7-2 无位置传感器的无刷直流电动机调速控制程序#include .SECTION/PM IVreset; JUMP START; .SECTION/PM IVint4; JUMP TRIP_IRQ; .SECTION/PM IVint5; JUMP PWMSYNC_IRQ; .section/data data1; .VAR STALL=0; .VAR COMP=0; .VAR CAPT=0; .VAR TIME=0; .VAR V1=0; .VAR V2=0; .VAR V3=0; .VAR NEUTRAL=0; .VAR BC

    2、OUNT=0; .VAR FLAG=0; .VAR ASYM=0; .VAR FLAGUP=0; .VAR B2COUNT=0; .VAR FLAGCUR=0; .VAR SPEEDFLAG=1; .VAR SPEED_REF=145; .VAR SPEED_COUNT=0; .VAR KP=0x007D; .VAR S_K=0;.SECTION/PM program;START: DIS INT; INTERRUPT_INT: IRPTL=0; IMASK=0; ICNTL=0; IOPG=Interrupt_Controller_Page; AX0=0xFF01; IO(IPR2)=AX0

    3、; AX0=0xFFFF; IO(IPR5)=AX0; IO(IPR3)=AX0; IO(IPR0)=AX0; IO(IPR1)=AX0; PWM_INT: IOPG=0x08; AX0=2500; IO(PWM0_TM)=AX0; AX0=75; IO(PWM0_DT)=AX0; AX0=0; IO(PWM0_CHA)=AX0; IO(PWM0_CHB)=AX0; IO(PWM0_CHC)=AX0; AX0=0x01D5; IO(0x008)=AX0; NOP; NOP;CLOCK_INT: IOPG=Clock_and_System_Control_Page; AX0=0x0100; IO

    4、(PLLCTL)=AX0; NOP;ADC_INT: IOPG=ADC_Page; AX0=0x0200; IO(ADC_CTRL)=AX0; NOP; NOP; NOP; TMR_INT: IOPG=Timer_Page; AX0=0x001E; IO(T_CFGR0)=AX0; NOP; NOP;.SECTION/PM program;IPM_INT: IOPG=0x08; AX0=0x03; IO(PWM0_CTRL)=AX0; NOP;START_CHONG_DIAN: CNTR=0x0F; DO END_C_D UNTIL CE; NOP; NOP; NOP; NOP; NOP; N

    5、OP; NOP; NOP; NOP;END_C_D: NOP;START_F_W: IOPG=0x08; AX0=0x0000; IO(PWM0_CHA)=AX0; NOP; IO(PWM0_CHB)=AX0; NOP; IO(PWM0_CHC)=AX0; AY0=0x002A; IO(PWM0_SEG)=AY0; NOP; CNTR=0x2710; NOP; DO END_F_W UNTIL CE; NOP;END_F_W: NOP; NOP; NOP; .SECTION/PM program; IOPG=0x08; AX0=DM(COMP); IO(PWM0_CHA)=AX0; IO(PW

    6、M0_CHC)=AX0; AX0=0x006D; IO(PWM0_SEG)=AX0; NOP; IOPG=Timer_Page; AX0=0x0100; IO(T_GSR0)=AX0; IMASK=0x0070; ENA INT; NOP; MAGSTALL: NOP; NOP; NOP; AR=DM(STALL); NOP; AR=AR-0; NOP; IF EQ JUMP MAGSTALL; NOP; NOP;FINSH: IOPG=0x08; AX0=DM(COMP); IO(PWM0_CHB)=AX0; IO(PWM0_CHC)=AX0; AX0=0x0079; IO(PWM0_SEG

    7、)=AX0; AX0=2; DM(CAPT)=AX0; LOOP1: NOP; NOP; NOP; NOP; NOP; NOP; AR=DM(FLAGCUR); AR=AR-0; IF EQ JUMP LOOP1; NOP; AX0=0; DM(FLAGCUR)=AX0; CALL SEQUENCE; NOP; JUMP LOOP1;.SECTION/PM program;SEQUENCE: AR=DM(TIME); AR=AR+1; DM(TIME)=AR; ENA M_MODE; I0=CAPT_DETER; AR=DM(CAPT); NOP; M0=AR; NOP; NOP; MODIF

    8、Y(I0+=M0); NOP; NOP; NOP; JUMP (I0); CAPT_DETER: JUMP R1; JUMP F3; JUMP R2; JUMP F1; JUMP R3; JUMP F2;R2: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHB)=MX1; IO(PWM0_CHC)=MX1; AX0=0x0079; IO(PWM0_SEG)=AX0; AR=DM(ASYM); AR=AR+1; DM(ASYM)=AR; AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; COM

    9、_FLAG_R2: AR=DM(FLAG); AR=AR-0; IF NE JUMP END_EXCH; NOP; MX0=DM(V1); MY0=3; ASTAT=0; ENA M_MODE; AR=DM(NEUTRAL); MR=MX0*MY0(UU); AR=MR0-AR; IF GE JUMP END_EXCH; NOP; AX0=1; DM(FLAG)=AX0; AX0=DM(BCOUNT); DM(B2COUNT)=AX0; JUMP END_EXCH;F2: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHB)=MX1; IO(PWM0_CHC)=MX1;

    10、AX0=0x00B6; IO(PWM0_SEG)=AX0; AR=DM(ASYM); AR=AR+1; DM(ASYM)=AR; AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; COM_FLAG_F2: AR=DM(FLAG); AR=AR-0; IF NE JUMP END_EXCH; NOP; MY0=DM(V1); MX0=3; ASTAT=0; AR=DM(NEUTRAL); ENA M_MODE; MR=MX0*MY0(UU); AR=MR0-AR; IF LE JUMP END_EXCH; NOP;

    11、AX0=1; DM(FLAG)=AX0; A X0=DM(BCOUNT); DM(B2COUNT)=A X0; JUMP END_EXCH;R3: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHA)=MX1; IO(PWM0_CHC)=MX1; AX0=0x011E; IO(PWM0_SEG)=AX0; AR=DM(ASYM); AR=AR+1; DM(ASYM)=AR; AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; COM_FLAG_R3: AR=DM(FLAG); AR=AR-0;

    12、IF NE JUMP END_EXCH; NOP; MX0=DM(V2); MY0=3; ASTAT=0; ENA M_MODE; AR=DM(NEUTRAL); MR=MX0*MY0(UU); AR=MR0-AR; IF GE JUMP END_EXCH; NOP; AX0=1; DM(FLAG)=AX0; AX0=DM(BCOUNT); DM(B2COUNT)=AX0; JUMP END_EXCH;F3: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHA)=MX1; IO(PWM0_CHC)=MX1; AX0=0x006D; IO(PWM0_SEG)=AX0; AR

    13、=DM(ASYM); AR=AR+1; DM(ASYM)=AR; AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; COM_FLAG_F3: AR=DM(FLAG); AR=AR-0; IF NE JUMP END_EXCH; NOP; MX0=DM(V2); MY0=3; ASTAT=0; ENA M_MODE; AR=DM(NEUTRAL); MR=MX0*MY0(UU); AR=MR0-AR; IF LE JUMP END_EXCH; NOP; AX0=1; DM(FLAG)=AX0; A X0=DM(BCO

    14、UNT); DM(B2COUNT)=A X0; JUMP END_EXCH;R1: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHA)=MX1; IO(PWM0_CHB)=MX1; AX0=0x00A7; IO(PWM0_SEG)=AX0; AR=DM(ASYM); AR=AR+1; DM(ASYM)=AR; AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; COM_FLAG_R1: AR=DM(FLAG); AR=AR-0; IF NE JUMP END_EXCH; NOP; MX0=DM

    15、(V3); MY0=3; ASTAT=0; ENA M_MODE; AR=DM(NEUTRAL); MR=MX0*MY0(UU); AR=MR0-AR; IF GE JUMP END_EXCH; NOP; AX0=1; DM(FLAG)=AX0; AX0=DM(BCOUNT); DM(B2COUNT)=AX0; JUMP END_EXCH;F1: IOPG=0x08; MX1=DM(COMP); IO(PWM0_CHA)=MX1; IO(PWM0_CHB)=MX1; AX0=0x011B; IO(PWM0_SEG)=AX0; AR=DM(ASYM); AR=AR+1; DM(ASYM)=AR;

    16、 AX0=3; AR=AR-AX0; IF LE JUMP END_EXCH; NOP; AX0=3; DM(ASYM)=AX0; AX0=1; DM(FLAGUP)=AX0; COM_FLAG_F1: AR=DM(FLAG); AR=AR-0; IF NE JUMP END_EXCH; NOP; MX0=DM(V3); MY0=3; ASTAT=0; ENA M_MODE; AR=DM(NEUTRAL); MR=MX0*MY0(UU); AR=MR0-AR; IF LE JUMP END_EXCH; NOP; AX0=1; DM(FLAG)=AX0; A X0=DM(BCOUNT); DM(

    17、B2COUNT)=A X0; END_EXCH: RTS; .SECTION/PM program;PWMSYNC_IRQ: ENA SEC_REG,ENA SEC_DAG; IOPG=PWM0_Page; AX0=0x0200; IO(PWM0_STAT)=AX0; NOP; NOP; NOP; AR=DM(STALL); AR=AR-0; IF EQ JUMP VDC_IDC; NOP; AR=DM(SPEEDFLAG); AR=AR-0; IF NE JUMP VDC_IDC; NOP; AR=DM(SPEED_COUNT); AY0=2000; AR=AR-AY0; IF NE JUM

    18、P NO_SPEED_REG; NOP; CALL SPEED_REG; NO_SPEED_REG: AR=DM(SPEED_COUNT); AR=AR+1; DM(SPEED_COUNT)=AR; VDC_IDC: IOPG=ADC_Page; AX0=IO(ADC_DATA1); SI=AX0; SR=LSHIFT SI BY -2(LO); DM(V1)=SR0; AX0=IO(ADC_DATA4); SI=AX0; SR=LSHIFT SI BY -2(LO); DM(V2)=SR0; AX0=IO(ADC_DATA5); SI=AX0; SR=LSHIFT SI BY -2(LO);

    19、 DM(V3)=SR0; COMP_OK: AR=DM(FLAG); AR=AR-0; IF EQ JUMP NEU; NOP; AR=DM(B2COUNT); AR=AR-1; DM(B2COUNT)=AR; IF GE JUMP NEU; NOP; AR=DM(CAPT); AR=AR+1; DM(CAPT)=AR; AY0=5; AR=AR-AY0; IF LE JUMP OKCAPT; NOP; AR=0; DM(CAPT)=AR;OKCAPT: AX0=0; DM(FLAG)=AX0; DM(ASYM)=AX0; .SECTION/PM program;NEU: AR=DM(V1);

    20、 AX0=DM(V2); AR=AR+AX0; AY0=DM(V3); AR=AR+AY0; DM(NEUTRAL)=AR; AR=1; DM(FLAGCUR)=AR; AR=DM(STALL); AR=AR-0; IF NE JUMP SPEEDUP; NOP; AR=DM(BCOUNT); AR=AR+1; DM(BCOUNT)=AR; AY0=0x00FF; AR=AR-AY0; IF LE JUMP RESTO; NOP; AX0=0; DM(TIME)=AX0; AX0=48; DM(BCOUNT)=AX0; AX0=1; DM(STALL)=AX0; DM(SPEEDFLAG)=A

    21、X0; JUMP RESTO;SPEEDUP: AR=DM(CAPT); AY0=2; AR=AR-AY0; IF NE JUMP RESTO; NOP; AR=DM(FLAGUP); AR=AR-0; IF EQ JUMP RESTO; NOP; AX0=0; DM(SPEEDFLAG)=AX0; AF=PASS 0; ASTAT=0; AY0=DM(TIME); SR=LSHIFT AY0 BY 1(LO); AY0=SR0; AX0=12; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ

    22、 AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DIVQ AX0; DM(BCOUNT)=AY0; AX0=5; AR=AX0-AY0; IF GT JUMP RESTO; NOP; AX0=10; AR=AX0-AY0; IF GT JUMP BUCHANG1; NOP; AR=DM(BCOUNT); AR=AR+1; DM(BCOUNT)=AR;BUCHANG1: AR=DM(BCOUNT); AR=AR+1; DM(BCOUNT)=AR;RESTO: AX0=0; DM(TIME)=A

    23、X0; DM(FLAGUP)=AX0; DIS SEC_REG,DIS SEC_DAG; RTI; SPEED_REG: AX0=0; DM(SPEED_COUNT)=AX0; ASTAT=0; AF=PASS 0; AY0=0X0FFFF; AX0=DM(BCOUNT); SR=LSHIFT AX0 BY -1(HI); AX0=SR1; DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0; DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0; DIVQ AX0;DIVQ AX0;DIVQ AX0;DIVQ AX0; DIVQ AX0;DIVQ AX0

    24、;DIVQ AX0;DIVQ AX0; AR=DM(SPEED_REF); AR=AR-AY0; MY0=DM(KP); MR=AR*MY0(SU); SR=ASHIFT MR1 BY 5(HI); SR=SR OR LSHIFT MR0 BY 5(LO); AX0=SR1; AR=DM(COMP); AR=AR+AX0; DM(COMP)=AR; IF LT JUMP SUB; NOP; AX0=2000; AR=AR-AX0; IF LE JUMP SPEED_END; NOP; DM(COMP)=AX0; JUMP SPEED_END;SUB: AX0=-425; AR=AR-AX0; IF GE JUMP SPEED_END; NOP; DM(COMP)=AX0; SPEED_END: RTS; .SECTION/PM program;TRIP_IRQ:LOOP2: AX0=0x0000; IO(0x000)=AX0; JUMP LOOP2; RTI;


    注意事项

    本文(程序清单72无位置传感器的无刷直流电动机调速控制程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开