请哪位大神帮我看看我这个pic单片机汇编编程序有问题没? ( 不长挺短的)

小弟我是大一新生 小弟我有思路但是不会写程序 求教 急 - 单片机当前位置:& &&&小弟我是大一新生 小弟我有思路但是不会写程序 求教小弟我是大一新生 小弟我有思路但是不会写程序 求教 急&&网友分享于:&&浏览:1次我是大一新生 我有思路但是不会写程序 求教 急啊!!!
我是大一学生,刚接触了2周单片机,老师搞了个竞赛,现在要求是有电机A,老师给定电机B,电机B装有叶片(匀速转动,可以改变转速),我要使我的电机A可以与它的电机保持同转速(最好是相位都一样,我没打算做),在开始前和达到相同速度之后均以灯光方式表示。
用的芯片是AT89S51;
p0.0、p0.1是两个红色led,低电平亮;p2.1和p2.0是两个按动按钮,按下为低电平;p2.4是电机,低电平运行;p2.5是一个红外接受管,发射管始终发射,用来测叶片经过次数;p2.3是另外一套红外,用来测我自己电机的叶片(这红外就等于是一个光电门);复位电路和晶振(12mhz)都装好了。
我现在考虑:
1.我要电机可以匀速,我就给p2.4端口高低电平交替变换的方波,通过改变高低电平时间的比例来使它在不同速度稳定(要用计时器t0)
2.我要同时使用r1和r2来记录一定时间内(用计时器t1)叶片转过次数(p2.3和p2.5由高变低再变高的过程),通过比较来确定转速,以此来达到同转速的效果(这里要循环,但是我没想好怎么跳出循环,因为转速相同不好操作)
3.最后就是怎么加上灯光的提示,特别是最后的。
现在就是这样,第一天过去了,上午把板子焊好了,一下午就在研究怎么写代码,之前老师讲过一点汇编,所以最好有哪位大神可以给我把这个程序写一下啊,是在不行用c也可以啊,有说明就更加棒了!
明天还有一上午,求各路大神一起帮帮我啊!!
------解决方案--------------------周末大家都玩去了,没人在的,你自己想办法了,定时器和外部中断你学会用法了就知道该怎么写了。才上两周课就要焊板写程序感觉急燥了点。------解决方案--------------------电机B的转速是匀速吗,要是匀速,你能测出来转速,直接在程序中使用定时器来让电机A转动即可------解决方案--------------------1、简单地看了一下你的板子,没有发现电机驱动的电路,我先对你的电机A能转动质疑。
2、检测电机B的转动(无论是否匀速,都不要紧的),其实就是脉冲检测,获得当前脉冲的周期。这个可以先把定时器0设置为1ms或者更小的定时,然后使用外中断0检测脉冲的下降沿来触发定时器计数的开始和停止,将周期保存到一个变量如MotorB_Cycle中。
3、检测你的电机A对应的光电对管的脉冲周期,(使用外中断1和定时器1,等同于2),保存在MotorA_Cycle中,使用PID算法,通过调节电机A的输入端的PWM占空比来对电机A进行调速,将MotorA_Cycle的值尽量靠近MotorB_Cycle的值。
这个是我的思路,如果大家对这里有质疑的话可以提出来,一起讨论一下。------解决方案--------------------个人感觉这个题目对新手来说太难了,很多单片机的熟手都未必能做得下来,或者说我把题目想得太难了?
有时间的话我会尝试做一下这个题目,印证我的想法。------解决方案--------------------引用:1、简单地看了一下你的板子,没有发现电机驱动的电路,我先对你的电机A能转动质疑。
2、检测电机B的转动(无论是否匀速,都不要紧的),其实就是脉冲检测,获得当前脉冲的周期。这个可以先把定时器0设置为1ms或者更小的定时,然后使用外中断0检测脉冲的下降沿来触发定时器计数的开始和停止,将周期保存到一个变量如MotorB_Cycle中。
3、检测你的电机A对应的光电对管的脉冲周期,(使用外中断1和定时器1,等同于2),保存在MotorA_Cycle中,使用PID算法,通过调节电机A的输入端的PWM占空比来对电机A进行调速,将MotorA_Cycle的值尽量靠近MotorB_Cycle的值。
这个是我的思路,如果大家对这里有质疑的话可以提出来,一起讨论一下。
只要能知道流程&程序就容易写------解决方案--------------------多谢版主大大支持------解决方案--------------------
基本上可以这样:
你设置一个有符号数据类型的计数器变量,用来保存和比较两个电机转动的周数。
你要做的,是不断地增减比较变量的值。
当检测到&A&转动一周,变量加&1;检测到&B&转动一周,变量减&1。
当变量绝对值在&0&和&1&之间跳变时,说明转速相同。
当绝对值大于某一个阈值时,说明相差太大,需要调整。
如果是正值,你就要提高电机&B&的供电电压,反之亦反。改变电压后,变量清零,进入新一轮检测。------解决方案--------------------为什么不用&C,汇编看不懂
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有求大神帮我看看这个单片机程序。-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
求大神帮我看看这个单片机程序。
来源:互联网 发表时间: 9:47:04 责任编辑:鲁晓倩字体:
为了帮助网友解决“求大神帮我看看这个单片机程序。”相关的问题,中国学网通过互联网对“求大神帮我看看这个单片机程序。”相关的解决方案进行了整理,用户详细问题包括:or(i=0。用keil写的;i++){P1^0=1;i&2;P1^1=0;t=~s1[ss1];P1^3=0;P1^2=0;}不知道错哪了,具体解决方案如下:解决方案1:
1^0这个用法不对。sbit P1_0 = P1^0;P1_0 = 0;这样才行。这是keil自定义的语法,不是标准C语法,只能在位定义的时候用
提问者评价
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号单片机中智能电子钟设计的汇编语言代码和我给的图能对应吗?为什么仿真不出来,有代码有图,求大神讲解。_百度知道
单片机中智能电子钟设计的汇编语言代码和我给的图能对应吗?为什么仿真不出来,有代码有图,求大神讲解。
baidu.jpg" esrc="http://c./zhidao/wh%3D450%2C600/sign=4cef3d8fb4ec348f91e127/a2cc7cd98d1001e9bcd8d2b3bb0e7bec55e797a2://f.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><a href="/zhidao/wh%3D600%2C800/sign=/zhidao/pic/item//zhidao/pic/item//zhidao/pic//zhidao/wh%3D450%2C600/sign=f13c6edc4cc2d562f25dd8e9d221bcd9/e0cf39fce8efbe09aa55<a href="http
源代码太长不能打上去。代码意思不怎么明白,求大神给我讲解大概原理
必须用汇编吗我做单片机设计的
也可以用c语言,但是,我都研究这个汇编程序一天了,不想半途而费,求大神给解释一下吧。实在不行也可以用c,只是又要重新研究
汇编我很久没用了我这里可以做设计
来自团队:
其他类似问题
为您推荐:
汇编语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机汇编高手请进,帮我看看这个程序有什么问题!_百度知道
单片机汇编高手请进,帮我看看这个程序有什么问题!
目的是方便控制台阶数.7接
@DPTR,变为1台阶数
SJMP LPLP:mov A;台阶增幅&#57348: MOV R6;在0000H单元存放转移指令
;按下K_UP键,但是编译始终有问题,假定P2,返回
MOV TJS,0832为功放,TJS
TJS:MOV A: MOV
A;未到10,LP
,来个大神帮我改改吧(芯片是89c51;产生下一台阶DELAY10台阶数加1
CJNE A;送数据至 ;NEXT, #1010ms延时&#57348,01H读取端口
DJNZ R7,最后要用于仿真)ORG
DPTR;不到 10 台阶转移&# 的地址送DPTR;转移到主程序START
0100H主程序从0100H开始START;
R1,转K_UPK_UP,DEL2
, #00H10ms延时程序DEL2;到10,P2产生下一个周期&#57348;累加器A清0&#57348, A
DJNZ R6,TJS
MOV R7,#10;
程序目的是输出阶梯波,我在原程序上加了控制台阶数的按钮
提问者采纳
51单片机的汇编语言里?根本没有定义,只能是RAM里的地址,TJS
INC A,SETCNT你的SETCNT是什么,是ROM中的程序地址,其他任何指令不允许操作ROM里的地址,除了跳转指令外,你以上三条指令根本就是错误的。MOV A。所以,TJS
MOV TJS,也就是说,除了跳转指令,其他任何指令都不允许操作跳转标号,01H 你看一下TJS,跳转标号本质,你定义的是个跳转标号MOV
那我该怎么改啊,我也是刚刚学这个,有很多地方不懂,时间还有点急,能不能详细说说啊,谢谢了
提问者评价
来自团队:
其他类似问题
为您推荐:
其他1条回答
标号在哪条语句中用到了吗:这个是你全部的程序吗我看了一下;EQU xxH,请增加符号赋值伪指令,作为地址或立即数&nbsp,如,请把软件的提示信息发上来看下&nbsp:TJS EQU xxH,请删掉如果改完还是无法编译的话;SETCNT&xxH可以为8位数也可以为16位数;你的TJS?如果没有用到,有这么几个问题问下?如果是的话
您可能关注的推广
单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求会51单片机的大神帮忙给汇编程序加点注释!!_百度知道
求会51单片机的大神帮忙给汇编程序加点注释!!
TMOD ,SBUF MOV
flagC_STARTUP,#0x20
RI(0x98,#0xFD MOV
TL1(0x8B),#0xFD
ser.0) MOV
提问者采纳
TMOD ;允许串口中断
RI(0x98;初始化串口子程序返回
同上一起设置 SETB
REN;定时器1启动
SM0,#0x01,当波特率发生器用
TH1 ,#0xFD
TR1;定时器工作模式设为定时器1为软起动定时工作方式2;串口接收到的数据保存到rec_data MOV
flag,#0x20;设串口工作方式1(9位为一帧波特率可调UART)
SM1;跳转到STARTUP1
init,SBUFC_STARTUP,#0xFD;串口中断服务程序进来后先清中断标志位 MOV
rec_data;9600bps MOV
TL1(0x8B);允许接收
EA;开总中断
提问者评价
其他类似问题
为您推荐:
51单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 pic单片机汇编 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信