找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6524|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机直流电机pwm调速汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-27 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1.      ;以下是直流电机调速的程序,芯片选用2051
  2.               ;晶振用12M
  3.               ;选用2051单片机
  4.               ;2006.05.18
  5.              ; _____________
  6.              ;|RST      VDD |
  7.        ;LED1  |P3.0     P1.7|G
  8.       ;LED2;  |P3.1     P1.6|D
  9.              ;|XTAL2    P1.5|H
  10.              ;|XTAL1    P1.4|E
  11. ;             |P3.2     P1.3|C
  12.   ;过零检测   |P3.3     P1.2|F
  13.   ;设定按键盘 |P3.4     P1.1|A
  14.   ;加一按键盘  |P3.5     P1.0|B
  15.              ;|VSS      P3.7|电机输出
  16.               ;-------------
  17. LED1      BIT      P3.0
  18. LED2      BIT      P3.1
  19. KEY1      BIT      P3.4
  20. KEY2      BIT      P3.5
  21. OUT       BIT      P3.7
  22. KG        BIT      P3.2
  23. OFF       BIT       02H
  24. ON        BIT       03H
  25. NC        BIT       04H
  26. NO        BIT       05H
  27. POWER     DATA     7FH
  28. YAS       DATA     7EH
  29. DATA1     DATA     40H
  30. ;*********************************************
  31. ;*********************************************
  32. ;*********************************************                                                                                                                   ;晶振为12M
  33.                ORG 0000H
  34.                AJMP MAIN                                     ;转入主程序
  35.                ORG 0003H                                     ;外部中断DATA_IN脚INT0入口地址
  36.                NOP
  37.                NOP
  38.                NOP                                       ;转入外部中断服务子程序(解码程序)
  39.                LJMP ERR    ;软件陷阱
  40.                NOP
  41.                NOP
  42.                LJMP ERR        ;软件陷阱   
  43.                ORG   000BH            
  44.                LJMP  ERR
  45.                NOP
  46.                NOP
  47.                LJMP ERR          ;软件陷阱
  48.                ORG 0013H
  49.                LJMP TS
  50.                NOP
  51.                NOP
  52.                LJMP ERR               ;软件陷阱
  53.                ORG   001BH           
  54.                LJMP  YAS_1MS
  55.                NOP
  56.                NOP
  57.                LJMP ERR           ;软件陷阱
  58.                ORG 0023H
  59.                LJMP ERR               ;软件陷阱
  60.                NOP
  61.                NOP
  62.                LJMP ERR                 ;软件陷阱
  63.                ;************************************************
  64.                ;以下为主程序进行CPU中断方式设置
  65.                ;******************************************************
  66.                ;******************************************************************
  67.                ;以下对单片机的所有引脚进行初始化,全部设置成高电平
  68.                ;**********************************************************************
  69. MAIN:          MOV PSW,#00H                ;设为0号寄存器
  70.                MOV P1,#0FFH
  71.                MOV P3,#0FFH
  72.                MOV 20H,#00H                 ;清除所有标志位
  73.                MOV 30H,#0BH
  74.                MOV 31H,#03H
  75.                MOV 32H,#00H
  76.                MOV 33H,#00H
  77.                MOV 34H,#00H
  78.                MOV 35H,#00H
  79.                MOV 36H,#00H
  80.                MOV 37H,#00H
  81.                SETB IT1                    ;设定INT1的触发方式为脉冲负边沿触发
  82.                SETB EX1                    ;打开INT1中断请求
  83.               ; MOV TH0,#0B1H
  84.                ;MOV TL0,#0E0H
  85.                MOV TH1,#0FCH
  86.                MOV TL1,#18H
  87.                ;SETB ET0
  88.                SETB ET1
  89.              ;  SETB TR0
  90.              ;  SETB PT0
  91.                SETB PT1                  ;启动T0计数
  92.                MOV TMOD,#11H              ;设置T0为方式1工作状态
  93.                SETB EA                    ;打开CPU总中断请求
  94.                MOV SP,#60H                ;设置堆栈地址为60H开始
  95.                NOP
  96.      XS_1:     LCALL XS
  97.                NOP
  98.                NOP
  99.                AJMP XS_1
  100.               ;*************************************************
  101.               ;************显示子程序***************************
  102.               ;*************************************************
  103.             
  104.             
  105.          XS:     MOV R0,#30H
  106.                  MOV R1,#32H
  107.                  MOV B,#0AH
  108.                  MOV A,@R0
  109.                  DIV AB
  110.                  MOV @R1,B
  111.                  INC R1
  112.                  MOV @R1,A
  113.                  MOV A,@R1
  114.                  MOV DPTR,#TAB
  115.                  MOVC A,@A+DPTR
  116.                  DEC R1
  117.                  MOV P1,A
  118.                  CLR LED1
  119.                  LCALL YAS_300
  120.                  SETB LED1
  121.                  MOV A,@R1
  122.                  MOV DPTR,#TAB
  123.                  MOVC A,@A+DPTR
  124.                  MOV P1,A
  125.                  CLR LED2
  126.                  LCALL YAS_300
  127.                  SETB LED2
  128.                  MOV P1,#0FFH
  129.        XS4:      RET                                   

  130.             
  131. ;*********************************************
  132. ;*************过零触发加键盘扫描************
  133. ;********************************************

  134. TS:           INC 37H
  135.                MOV A,37H
  136.                SUBB A,#0EH
  137.                JC   EE2
  138.                MOV 37H,#00H
  139.                JB KEY1,EE
  140.                MOV A,30H
  141.                SUBB A,#19H
  142.                JNC EE
  143.                INC 30H
  144.                ;********************************************
  145.        EE:     JB KEY2,EE1
  146.                CLR C
  147.                MOV A,30H
  148.                SUBB A,#0CH
  149.                JC EE1
  150.                DEC 30H
  151.        EE1:    JB KG,EE2
  152.                NOP
  153.                NOP
  154.                CPL ON
  155.                JNB ON,EE3
  156.                MOV 38H,#03H
  157.                MOV 39H,#255
  158.                AJMP EE2
  159.        EE3:    MOV 38H,#00H
  160.                MOV 39H,#0
  161.                CLR ON
  162.                CLR OFF
  163.                ;********************************************
  164.        EE2:    JNB ON,EXIT2
  165.                CLR EX1
  166.                PUSH ACC
  167.                PUSH PSW
  168.                MOV PSW,#10H
  169.                ;MOV A,34H
  170.                ;JNZ EXIT
  171.                MOV A,#1EH
  172.                SUBB A,30H
  173.                MOV 40H,A
  174.                JNB OFF,TS1
  175.                MOV 40H,#05H
  176.        TS1:    LCALL XS
  177.                NOP
  178.                DJNZ 40H,TS1
  179.                CLR OUT
  180.                LCALL YS3
  181.                SETB OUT
  182.                MOV 40H,#09H
  183.                SETB TR1
  184.        TS3:    LCALL XS
  185.                NOP
  186.                NOP
  187.                MOV A,40H
  188.                JNZ TS3
  189.                CLR OUT
  190.                LCALL YS3
  191.                SETB OUT
  192.                NOP
  193.                NOP
  194.               
  195.            
  196.                ;**********************************************
  197.                
  198.         EXIT: DJNZ 39H,EXIT2
  199.               SETB OFF
  200.               DJNZ 38H,EXIT3
  201.               CLR ON
  202.               CLR OFF
  203.               AJMP EXIT2
  204.        EXIT3: MOV 39H,#256
  205.        EXIT2: POP PSW
  206.               POP ACC
  207.               CLR TR1
  208.               SETB EX1
  209.               MOV 40H,#00H
  210.               NOP
  211.               NOP
  212.               RETI
  213.               
  214.               
  215.               
  216.               ;*************************************************
  217.      YAS_1MS:  
  218.                MOV TH1,#0FCH
  219.                MOV TL1,#18H   
  220.                PUSH ACC
  221.                PUSH PSW
  222.                MOV A,40H
  223.                JZ EXIT_1
  224.                DEC 40H
  225.      EXIT_1:   POP PSW
  226.                POP ACC
  227.                NOP
  228.                NOP
  229.                RETI
  230.                
  231.                
  232.                
  233.                
  234.              ;*****************************************************
  235.              ;精确延时1000微秒************************************
  236.              ;***************************************************
  237. YS3:          MOV R4,#02H                                        ;延时程序3,精确延时1000微秒
  238. D3:           MOV R5,#0F7H
  239.               DJNZ R5,$
  240.               DJNZ R4,D3
  241.               RET
  242.              ;*****************************************************
  243.              ;*************精确延时100微秒***********************
  244.              ;***************************************************
  245.                                        
  246.                   
  247. YAS_300:      MOV R5,#31H
  248.               DJNZ R5,$
  249.               RET
  250.       
  251. ;*************************************************
  252. ;***********显示码******************************
  253. ;*************************************************
  254. TAB:       DB 0A0H,0F6H,2CH,34H
  255.             DB 72H,31H,21H,0F4H
  256.             DB 20H,30H,60H,23H
  257.             DB 0A9H,26H,29H,69H
  258. ;*************************************************
  259. ;********软件复位***************
  260. ;************************************************
  261. WTD:         PUSH ACC
  262.              PUSH PSW
  263.              MOV TH1,#3CH
  264.              MOV TL1,#0B0H
  265.              POP PSW
  266.              POP ACC
  267.              RETI
  268. ERR:         CLR EA
  269.              MOV DPTR,#ERR1
  270.              PUSH DPL
  271.              PUSH DPH
  272.              RETI
  273. ERR1:        MOV POWER,#0AAH
  274.              CLR A
  275.              PUSH ACC
  276.              PUSH ACC
  277.              RETI
  278.              END
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表