⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 遥控电机程序, 按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转.htm

📁 包含大量程序:AD转换类
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0039)http://www.8951.com/TEST/TEST/tl007.htm -->
<HTML><HEAD><TITLE>单片机通信</TITLE><LINK 
href="遥控电机程序, 按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转.files/gpszx.css" type=text/css 
rel=stylesheet><LINK href="../index.files/gpszx.css" type=text/css 
rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<TABLE height=356 cellSpacing=0 cellPadding=0 width=769 bgColor=#66ccff 
borderColorLight=#000000 border=0>
  <TBODY>
  <TR>
    <TD align=middle width=752 bgColor=#ffffff colSpan=5 height=356>
      <P align=left><FONT font><FONT color=#ff0000>单片机提高</FONT><FONT 
      color=#ff0000><IMG height=11 
      src="遥控电机程序, 按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转.files/gif091.gif" 
      width=28 border=0></FONT><FONT color=#454545>WWW.51C51.COM 
      自学单片机的网站:作中国单片机编程技术普及推广第一站!倚天一出宝刀屠龙</FONT></FONT><IMG height=100 
      src="遥控电机程序, 按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转.files/titou2.jpg" 
      width=760 border=0> <FONT color=#454545 font><A 
      href="http://www.8951.com/index.htm">返回主页 给我留言</A> <A 
      href="http://www.8951.com/jiaoxue.htm">单片机教学</A> <A 
      href="http://www.8951.com/tigao.htm">单片机提高</A>&nbsp; <A 
      href="http://www.8951.com/pinzhi.htm">品质技术</A> <A 
      href="http://www.8951.com/1000/WANGZHI.HTM">单片机网址</A> <A 
      href="http://www.8951.com/down/down.htm">软件下载</A>&nbsp; <A 
      href="http://www.8951.com/yejin/yejin.htm">学液晶显示</A> <A 
      href="http://www.8951.com/chanpin.htm">产品介绍</A> <A 
      href="http://www.8951.com/10/huikan.htm">如何购买</A></FONT><FONT size=2> 
      <BR><BR><BR>;遥控电机程序, 
      按遥控器0-9步进电机正转0-9步,按遥控器11-19步进电器分别反转<BR>;0-9步,同时数码管分别显示当前的数字!<BR>;***************************************************************************<BR>;*&nbsp; 
      E-mail:sxj1974@163.com (51c51 test web)&nbsp; 51单片机学习网,自学单片机的网站&nbsp; 
      *<BR>;* Create by :石学军 <A 
      href="http://www.51c51.com/">http://www.51c51.com/</A>&nbsp;&nbsp; 
      www.8951.com 更多例程请登陆网站&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      *<BR>;***************************************************************************<BR>org 
      00h<BR>JMP MAIN<BR>ORG 30H<BR>MAIN:<BR>MOV P1,#0FFH<BR>MOV P2,#0FFH<BR>MOV 
      P3,#0FFH<BR>START:<BR>JB P3.7,$ ;等待遥控信号出现<BR>SB:<BR>MOV R4,#8 
      ;8毫秒为高电平错误<BR>SBA:<BR>MOV R5,#250<BR>SBB:<BR>JB P3.7,SXB1<BR>DJNZ 
      R5,SBB<BR>DJNZ R4,SBA<BR>MOV R4,#2<BR>JMP SBC<BR>SXB1:<BR>MOV 
      R5,#5<BR>SXB2: ;去掉20US的尖峰干扰信号<BR>JNB P3.7,SBB<BR>DJNZ R5,SXB2<BR>JMP 
      START<BR>SBC:<BR>MOV R5,#250<BR>SB1:<BR>JB P3.7,SB2 
      ;2MS内不为高电平错误(监测9MS的低电平引导码)<BR>DJNZ R5,SB1<BR>DJNZ R4,SBC<BR>JMP 
      START<BR>SB2: ;去掉20US的尖峰干扰信号<BR>MOV R5,#5<BR>SB2_A:<BR>JNB 
      P3.7,SB1<BR>DJNZ R5,SB2_A<BR>MOV R4,#3<BR>SB2_1:<BR>MOV R5,#250<BR>SB3: 
      ;监测4.5MS高电平,如3MS内出现低电平错误<BR>JNB P3.7,SXC<BR>DJNZ R5,SB3<BR>DJNZ 
      R4,SB2_1<BR>MOV R4,#2<BR>JMP SB3_1<BR>SXC: ;去掉20US的尖峰干扰信号<BR>MOV 
      R5,#5<BR>SXC1:<BR>JB P3.7,SB3<BR>DJNZ R5,SXC1<BR>JMP START<BR>SB3_1: 
      ;监测4.5MS高电平,如5MS内不为低电平错误<BR>MOV R5,#250<BR>SB3_2:<BR>JNB P3.7,SB4<BR>DJNZ 
      R5,SB3_2<BR>DJNZ R4,SB3_1<BR>JMP START<BR>SB4: ;去掉20US的尖峰干扰信号<BR>MOV 
      R5,#5<BR>SB4_1:<BR>JB P3.7,SB3_2<BR>DJNZ R5,SB4_1<BR>MOV R1,#1AH 
      ;设定1AH为起始RAM区<BR>MOV R2,#4<BR>PP: MOV R3,#8<BR>JJJJ:<BR>MOV 
      R5,#250<BR>JJJJ2: ;1MS内不为低电平错误<BR>JB P3.7,JJJJ3<BR>DJNZ R5,JJJJ2<BR>JMP 
      START<BR>JJJJ3:<BR>LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态<BR>MOV C,P3.7 
      ;将P3.7引脚此时的电平状态0或1存入C中<BR>JNC UUU ;如果为0就跳转到UUU<BR>MOV 
      R5,#250<BR>JJJJ4:<BR>JNB P3.7,UUU<BR>NOP<BR>DJNZ R5,JJJJ4<BR>JMP 
      START<BR>UUU: MOV A,@R1 ;将R1中地址的给A<BR>RRC A ;将C中的值0或1移入A中的最低位<BR>MOV @R1,A 
      ;将A中的数暂时存放在R1中<BR>DJNZ R3,JJJJ ;接收地址码的高8位<BR>INC R1 
      ;对R1中的值加1,换成下一个RAM<BR>DJNZ R2,PP 
      ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中<BR>;以下对代码是否正确和定义进行识别<BR>MOV 
      A,1AH ;比较高8位地址码<BR>XRL A,#00000000B ;判断1AH的值是否等于00000000,相等的话A为0<BR>JNZ 
      EXIT ;如果不相等说明解码失败退出解码程序<BR>MOV A,1BH ;比较低8位地址<BR>XRL A,#11111111B 
      ;再判断高8位地址是否正确<BR>JNZ EXIT ;如果不相等说明解码失败退出解码程序<BR>LCALL YS3<BR>MOV A,1CH 
      ;比较数据码和数据反码是否正确?<BR>CPL A<BR>XRL A,1DH ;将1CH的值取反后和1DH比较 
      不同则无效丢弃,核对数据是否准确<BR>JNZ EXIT ;如果不相等说明解码失败退出解码程序<BR>LCALL YS3<BR>CLR P2.6 
      ;选中数码管<BR>CLR P3.3 ;解码成功喇叭响?<BR>AJMP BIJIAO<BR>;判断在118毫秒内是否有连发码<BR>AA: MOV 
      R1,#25<BR>XX: ACALL YS2<BR>JNB P3.7,HH ;跳转到判断连发代码是否正确的程序段<BR>DJNZ 
      R1,XX<BR>EXIT: ;对所有端口清零<BR><BR>AJMP START<BR>;连发码判断程序段-----------<BR>HH: 
      MOV R6,#4<BR>S: ACALL YS1 ;调用882微秒延时子程序<BR>JB P3.7,EXIT 
      ;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序<BR>DJNZ R6, S 
      ;重复4次,目的是确认连发码的低电平信号波形<BR>JNB P3.7, $ ;等待高电?<BR>LCALL YS3<BR>AJMP 
      AA<BR><BR>BIJIAO:<BR>MOV R0,#18 ;一共18个按键<BR>MOV DPTR,#TAB_REM 
      ;遥控键值查表<BR>LOOKUP_1:<BR>MOV A,R0 ;查表偏移量<BR>MOVC A,@A+DPTR<BR>XRL A,1cH 
      ;比较键值<BR>JZ REM_BAK0 ;相等转移<BR>DJNZ R0,LOOKUP_1 ;直到18个健比较完毕<BR>JMP EXIT 
      ;都不对退出<BR>REM_BAK0: ;键值处理<BR>MOV A,R0 ;R0<BR>MOV R1,A ;<BR>SUBB A,#9 
      ;如果大于9则反转并将值减去9<BR>JC REM_BAK1 ;小余或等于9到正转<BR>INC A ;加1<BR>MOV R1,A ; 
      查显示码表<BR>MOV DPTR,#TABLE1 ;<BR>MOVC A,@A+DPTR<BR>MOV P0,A ;送显示<BR>CLR P2.6 
      ;开显示<BR><BR>REM_REV: ;反转程序<BR>CALL REV<BR>CALL delay ;转速<BR>DJNZ 
      R1,REM_REV ;转动的步数到了停止<BR>JMP AA<BR>REM_BAK1: ;正转程序<BR>NOP<BR>MOV A,R1 
      ;按键数值判断执<BR>MOV DPTR,#TABLE1 ; 查显示码表<BR>MOVC A,@A+DPTR<BR>MOV P0,A 
      ;送显示<BR>CLR P2.6 ;开显示<BR><BR>REM_FOR: ;正转<BR>CALL FOR<BR>CALL 
      DELAY<BR>DJNZ R1,REM_FOR<BR>JMP AA<BR>for: mov r0,#00h 
      ;正转到tab取码指针初值<BR>for1:mov a,r0 ;取码<BR>mov dptr,#table ;<BR>movc 
      a,@a+dptr<BR>jz FOREXT ;是否到了结束码00h<BR>cpl a ;把acc反向<BR>mov p1,a 
      ;输出到p1开始正转<BR>call delay ;转动的速度<BR>inc r0 ;取下一个码<BR>jmp for1 
      ;继续正转<BR>rev:mov r0,#05h ;反转到tab取码指针初值<BR>rev1:mov a,r0<BR>mov dptr,#table 
      ;取码<BR>movc a,@a+table<BR>jz FOREXT ;是否到了结束码00h<BR>cpl a ;把acc反向<BR>mov 
      p1,a ;输出到p1开始反转<BR>call delay ;转动的速度<BR>inc r0 ;取下一个码<BR>jmp rev1 
      ;继续反转<BR>FOREXT:<BR>RET<BR><BR>YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒<BR>D1: 
      MOV R5,#20<BR>DJNZ R5,$<BR>DJNZ R4,D1<BR>RET<BR>YS2: MOV R4,#10 
      ;延时子程序2,精确延时4740微秒<BR>D2: MOV R5,#235<BR>DJNZ R5,$<BR>DJNZ 
      R4,D2<BR>RET<BR>YS3: MOV R4,#2 ;延时程序3,精确延时1000微秒<BR>D3:MOV R5,#248<BR>DJNZ 
      R5,$<BR>DJNZ R4,D3<BR>RET<BR><BR>TAB_REM: ;遥控的键值<BR>DB 00H<BR>DB 
      10H,03H,01H,06H,09H,1DH,1FH,0DH,19H<BR>DB 
      11H,15H,17H,12H,16H,4CH,40H,48H,04H<BR><BR>delay: mov r3,#40 
      ;步进电机的转速20ms<BR>m3: mov r2,#248<BR>djnz r2,$<BR>djnz 
      r3,m3<BR>ret<BR>TABLE1:db 
      28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h;数码管的码表<BR>;0 1 2 3 4 5 6 7 8 
      9<BR>table:<BR>db 03h,09h,0ch,06h ;正转表<BR>db 00 ;正转结束<BR>db 
      03h,06h,0ch,09h ;反转<BR>db 00 
;反转结束<BR>end<BR><BR></FONT></P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -