ORG的PWM控制直流电机汇编程序.docx

上传人:b****3 文档编号:6082370 上传时间:2023-05-09 格式:DOCX 页数:12 大小:218.91KB
下载 相关 举报
ORG的PWM控制直流电机汇编程序.docx_第1页
第1页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第2页
第2页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第3页
第3页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第4页
第4页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第5页
第5页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第6页
第6页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第7页
第7页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第8页
第8页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第9页
第9页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第10页
第10页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第11页
第11页 / 共12页
ORG的PWM控制直流电机汇编程序.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ORG的PWM控制直流电机汇编程序.docx

《ORG的PWM控制直流电机汇编程序.docx》由会员分享,可在线阅读,更多相关《ORG的PWM控制直流电机汇编程序.docx(12页珍藏版)》请在冰点文库上搜索。

ORG的PWM控制直流电机汇编程序.docx

ORG的PWM控制直流电机汇编程序

ORG的PWM控制直流电机汇编程序

部门:

xxx

时间:

xxx

制作人:

xxx

 

整理范文,仅供参考,可下载自行修改

ORG  0034h

Graphemic:

DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,84H,0FFH。

共阳0~9字型码              

PN1   EQU  30H               。

PN1用来记脉冲地低二位数

PN2   EQU  31H               。

PN2用来记脉冲地高二位数

PN3   EQU  32H                 。

PN3用来做延时程序

PN4   EQU  33H                 。

PN4用来做延时程序

        ORG100H

MAIN:

        MOVR6,#00H           。

用R6来辅助显示计时

        MOVB,#00H

        CLRKG

        CLRW

        MOVTMOD,#01H      。

T1和T0都是方式一计数

        MOVTL0,#18H

        MOVTH0,#0E0H

        。

MOV  TL1,#0AFH

       。

MOV  TH1,#3CH

        SETBEA

        SETBET0          。

T0中断允许

        SETBTR0

        SETBP3.4

       。

SETBET1        。

T1中断允许

        。

SETBTR1

        SETBPT0          。

设置T1T2地中断优先,都设其为高级中断

       。

SETBPT1

        MOVR1,#5H       。

默认开始地时候速度为5档

        SETBKK1

        SETBKK2

        MOV  A,#00H     。

把PN1,PN2都清零

        。

MOV  PN1,A

       。

MOV  PN2,A

        MOV  DPTR,#Graphemic

        ANL  P1,#0FH

       。

ANL  P0,#00H

mainline:

        jb  p2.2,ks          。

关机等待

      clr  w

      clr  kg

      setbp1.0

      setbp1.1

      clr  p1.2

      clr  p1.3

ks:

   jnb  kg,wait     。

是否开机?

开了就往下执行,不开就跳到开机等待

     

        ANL  P1,#00011111B。

显示最后一位为1,即是可以工作了地意思

        SETBP1.4

        MOV  A,#1H

        MOVC  A,@A+DPTR

        MOV  P0,A

        SETBP3.6

        NOP

        NOP

        CLR  P3.6

        LCALLDELAY

SPD2:

        JB  P2.1,KEY1

        CLRKK1

KEY1:

   JNBP2.1,KEY2。

当p2.1高电平时就往下执行,但是只要执行一次后,kk就为1,往后就不再执行     

        JB  KK1,KEY2

        INCR1

        SETBKK1       。

这段地任务是不用延时也能消除按键抖动地程序

KEY2:

   JB  P2.4,KEY3

        CLRKK2

KEY3:

   JNBP2.4,pos      

        JB  KK2,pos    

        SETBKK2

        DECR1    

pos:

  jb   p2.0,rev      。

正转按钮

      setbt

      setbw

rev:

  jb   p2.3,tt        。

反转按钮

      clr  t

      setbw

tt:

   jnb  w,pos          。

选择正反转了吗,选了电机就开始转了,不选电机就不转,等待正反转按钮

      jb   t,positive

      jnb  t,reverse

                        b5E2RGbCAP

positive:

               。

电机正转

      setb  p1.0

      clr  p1.1

      clr  p1.2

      setb  p1.3

      lcallBIJIAO0    。

PWM调制

     。

lcallShowSpeed     。

显示速度程序

      LCALLshowdigit1

      Ljmpmainlinep1EanqFDPw

reverse:

                。

电机反转

      clr  p1.0

      setbp1.1

      setbp1.2

      clr  p1.3

      lcallBIJIAO0    。

PWM调制

     。

lcallShowSpeed     。

显示速度程序

      LCALLshowdigit2

      Ljmpmainline

        

wait:

mov  a,#00h。

如果不开始,那么程序就在这里等待,

      mov  p0,a

wait1:

setbp0.6

      setbp0.7

      anl  p1,#0fh

      setbp1.4

      setbp1.5

      setbp1.6

      setbp1.7

      SETBP3.6

      NOP

      CLR  P3.6

      lcalldelay

      jb   p2.5,wait1  。

开机等待

      setbkg

      Ljmpmainline

showdigit1:

      ANL  P1,#10001111B。

显示12在首位

      SETBP1.7

      MOV  A,#1H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      ANL  P1,#01001111B

      SETBP1.6

      MOV  A,#2H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      RET

showdigit2:

      ANL  P1,#10001111B。

显示21在首位

      SETBP1.7

      MOV  A,#2H

      MOVC  A,@A+DPTR

      MOV  P0,A

      SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      ANL  P1,#01001111B

      SETBP1.6

      MOV  A,#1H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      RET

ShowSpeed:

               。

由于没有买到光电编码器,所以智能把数码管显示换成其他地功能

      MOV  A,R6

     SUBBA,#3FH       。

7Dh=125即1000/8=125秒

     JNZ  else1

     MOV  R6,#00HDXDiTa9E3d

      。

可以每秒重复输出很多次,才能在数码管里显示出来,但是还要再定义两个变量

     ANL  P1,#0FH。

置位<输出个位)

     SETBP1.4

      CLR  P3.6

     MOV  A,PN1。

把最低速度地个位输出

     ANL  A,#0FH。

把A和0F相与,求出A地低四位字节表示地数

     

     MOVC  A,@A+DPTR

     MOV  P0,A    。

输出个位数

     SETBP3.6

     NOP

     CLR  P3.6  

     LCALLDELAY。

加延时程序

    

     ANL  P1,#2FH。

置位<输出十位)

     SETBP1.5

     MOV  A,PN1

     SWAPA  。

高四位和低四位内容交换

     ANL  A,#0FH。

把低四位清零,然后输出十位地数

     MOVCA,@A+DPTR

     MOV  P0,A    。

输出十位

     SETBP3.6

     NOP

     CLR  P3.6

     LCALLDELAY。

加延时程序

     

     ANL  P1,#4FH    。

置位<输出百位数)

     SETBP1.6

     MOV  A,PN2

     ANL  A,#0FH

     MOVCA,@A+DPTR

     MOV  P0,A     。

输出百位数

     SETBP3.6

     NOP

     CLR  P3.6

     LCALLDELAY。

加延时

     ANL  P1,#8FH    。

置位<输出千位数)

     SETBP1.7

     MOV  A,PN2

     SWAPA

     ANL  A,#0FH

     MOVCA,@A+DPTR

     MOV  P0,A    。

输出千位数

     SETBP3.6

     NOP

     CLR  P3.6

     LCALLDELAY                                              

else1:

        JB  P3.3,SPD1         。

这以段地任务是不用延时也能消除按键抖动地程序

       CLRKK3

SPD1:

   JNBP3.3,SPD2       。

当p3.3高电平时就往下执行,但是只要执行一次后,kk就为1,往后就不再执行     

       JB  KK3,SPD2

       MOVA,PN1            

       INCPN1

       CLRCY     。

清空进位位

       MOVA,PN1

       DA  A

       MOVPN1,A

       JNBCY,XIAMIAN  。

如果最高位产生进位,就在高一位PN2加一

       INCPN2

XIAMIAN:

MOVPN1,A       

       SETBKK3        

       CLRPN1

       INCPN2

       MOVA,PN2

       DA  A

       MOVPN2,ARTCrpUDGiT

ShowSpeedEnd:

RET

BIJIAO0:

MOVA,R1      

        SUBBA,#0H       

        JZ  JJ05PCzVD7HxA

BIJIAO1:

MOVA,R1

        SUBBA,#1H

        JZ  JJ1

               

BIJIAO2:

MOVA,R1

        SUBBA,#2H

        JZ  JJ2

        

BIJIAO3:

MOVA,R1

        SUBBA,#3H

        JZ  JJ3

        

BIJIAO4:

MOVA,R1

        SUBBA,#4H

        JZ  JJ4

        

BIJIAO5:

MOVA,R1

        SUBBA,#5H

        JZ  JJ5

        

BIJIAO6:

MOVA,R1

        SUBBA,#6H

        JZ  JJ6

       

BIJIAO7:

MOVA,R1

        SUBBA,#7H

        JZ  JJ7

        

BIJIAO8:

MOVA,R1

        SUBBA,#8H

        JZ  JJ8

        

BIJIAO9:

MOVA,R1

        SUBBA,#9H

        JZ  JJ9

       

BIJIAO10:

MOVA,R1

        SUBBA,#0AH

        JZ  JJ10jLBHrnAILg

        MOVA,R1       。

如果R1地值小于零,则速度和pwm0地速度不变.

        SUBBA,#0FFH

        JNZ  PWM100     。

这一小段是限制调速范围只能在0-10之间

        MOVR1,#0H

        AJMPPWM0

PWM100:

MOVR1,#0AH    。

如果r1>10则直接给r1赋值10,然后转速和最大速度不变

        LJMPPWM10

JJ0:

    LJMPPWM0      。

由于JZ跳转地距离不够长,所以这里只能用以下几句转跳转来辅助跳转

JJ1:

    LJMPPWM1

JJ2:

    LJMPPWM2

JJ3:

    LJMPPWM3

JJ4:

    LJMPPWM4

JJ5:

    LJMPPWM5

JJ6:

    LJMPPWM6

JJ7:

    LJMPPWM7

JJ8:

    LJMPPWM8

JJ9:

    LJMPPWM9

JJ10:

   LJMPPWM10

PWM0:

   MOVR2,#0FFH

        MOVR3,#0FFH

        MOVR4,#0f8H

        MOVR5,#02fH

        MOV  A,#0H

        LCALLSHOW    

        LJMPMAINLINE1

PWM1:

   MOVR2,#0FFH

        MOVR3,#037H

        MOVR4,#0F8H

        MOVR5,#0F7H

         MOV  A,#1H

        LCALLSHOW

        LJMPMAINLINE1

PWM2:

   MOVR2,#0FEH

        MOVR3,#06FH

        MOVR4,#0F9H

        MOVR5,#0BFH

        MOV  A,#2H

        LCALLSHOW

        LJMPMAINLINE1

PWM3:

   MOVR2,#0FDH

        MOVR3,#0A7H

        MOVR4,#0FAH

        MOVR5,#087H

         MOV  A,#3H

        LCALLSHOW

        LJMPMAINLINE1

PWM4:

   MOVR2,#0FCH

        MOVR3,#0DFH

        MOVR4,#0FBH

        MOVR5,#4FH

         MOV  A,#4H

        LCALLSHOW

        LJMPMAINLINE1

PWM5:

   MOVR2,#0FCH

        MOVR3,#18H

        MOVR4,#0FCH

        MOVR5,#18H

         MOV  A,#5H

        LCALLSHOW

        LJMPMAINLINE1

PWM6:

   MOVR2,#0FBH

        MOVR3,#4FH

        MOVR4,#0FCH

        MOVR5,#0DFH

         MOV  A,#6H

        LCALLSHOW

        LJMPMAINLINE1

PWM7:

   MOVR2,#0FAH

        MOVR3,#087H

        MOVR4,#0FDH

        MOVR5,#0A7H

         MOV  A,#7H

        LCALLSHOW

        LJMPMAINLINE1

PWM8:

   MOVR2,#0F9H

        MOVR3,#0BFH

        MOVR4,#0FEH

        MOVR5,#6FH

         MOV  A,#8H

        LCALLSHOW

        LJMPMAINLINE1

PWM9:

   MOVR2,#0F8H

        MOVR3,#0F7H

        MOVR4,#0FFH

        MOVR5,#37H

         MOV  A,#9H

        LCALLSHOW

        LJMPMAINLINE1

PWM10:

  MOVR2,#0f8H

        MOVR3,#02FH

        MOVR4,#0FFH

        MOVR5,#0FFH

        MOV  A,#0AH

        LCALLSHOW

        LJMPMAINLINE1

MAINLINE1:

RET

show:

  ANL  P1,#00101111B。

显示速度档次

        SETBP1.5    

        MOVC  A,@A+DPTR

        MOV  P0,A

        SETBP3.6

        NOP

        NOP

        CLR  P3.6

        LCALLDELAY

        RETxHAQX74J0X

DELAY:

  MOVPN4,#08H。

40ms延时子程序

L7:

     MOVPN3,#0FAH

L8:

     DJNZPN3,L8

        DJNZPN4,L7

        RET

CTCA:

   MOV  TL1,  #0AFH  。

定时一秒钟输出速度值一次<定时0.05秒R6自加一)

       MOV  TH1,  #3CH

       INC  R6

       RETI       

CTC0:

  

        JNB  P3.4,CTC1          。

这里是定时中断程序,p3.4地高低电平就是在这里控制地

        JBP3.4,CTC2

CTC1:

   MOVTL0,R3

        MOVTH0,R2

        CPLP3.4           

        RETI

CTC2:

   MOVTL0,R5

        MOVTH0,R4

        CPLP3.4

        RETI

ENDLDAYtRyKfE

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

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

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