当前位置:首页 » 操作系统 » 51单片机算法

51单片机算法

发布时间: 2022-11-28 16:59:19

A. 51单片机不能实现弗洛伊德a*算法

不能
从根本而言,51单片机不适合做这种运算。Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。该算法的版本也可用于查找关系R的传递闭包,或(与Schulze投票系统相关)在加权图中所有顶点对之间的最宽路径。在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。该算法的版本也可用于查找关系R的传递闭包,或(与Schulze投票系统相关)在加权图中所有顶点对之间的最宽路径。

B. 51单片机pwm输出频率算法,谁有公式,怎么算的

单片机是独立 pwm硬件产生,还是靠定时器中断产生
普通51单片机没有硬件pwm功能,只能靠 定时器中断来产生,而多数增强型 51单 片机是有硬件pwm功能,一般PWM频率是晶振频率/分频系数/256
如晶振频率12M,分频系数设为2,则PWM频率为12000000/2/256=23.4 KHZ

C. 51单片机如何生成随机数

用定时器加rand()随机函数来实现。

rnda=rand()%2;

rndb=rand()%3;

单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。

在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

具体使用可看一看absacc.h便知,例如:

rval=CBYTE[0x0002];指向程序存贮器的0002h地址

rval=XWORD[0x0002];指向外RAM的0002h地址

_at_关键字

直接在数据定义后加上_at_ const即可,但是注意:

(1)绝对变量不能被初使化;

(2)bit型函数及变量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list结构从40h开始。

xdata char text[25b] _at_0xE000;指定text数组从0E000H开始

提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。

(3)51单片机算法扩展阅读:

统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。

密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。

真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。

D. 51单片机 DIV指令的具体算法

DIV是除法指令,除数放在B寄存器中,被除数放在A寄存器中,DIV执行后结果放在A寄存器中,余数放在B寄存器中

E. 51单片机设计计算器 乘法函数 算法问题

直接浮点运算是可以的,但是时间长,也不容易保证进度。最好是将其转换为整数进行运算,然后加小数点。

比如1.1×1.1,看做是11×11=121,然后根据被乘数和乘数小树的位数之和(2)来确定小数点的位置:那就是两位小数,所以就变成1.21,计算完成。

F. 51单片机实验:无符号双字节乘法运算子程序

以前搞的子程序库里的
(5) 标号: MULD 功能:双字节二进制无符号数乘法

入口条件:被乘数在R2、R3中,乘数在R6、R7中。
出口信息:乘积在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET

G. 完整可用的51单片机PID运算公式

没意义。PID是有很强的针对性的,我以前看到的几个网上的PID程序都还是可以用的。但是需要你自己定的,可不只是PID三个数。采样周期是多少?PID计算后打算用多少位的数据,都是要自己定的,等等。
而所谓温度控制的程序,直接套用的(参数不套用,自己调),没有几个能好用的,要么计算量太大,要么调节不够好。
还是看看公式自己写的好。就算我写了一个在我手上好用的,给你,你那也未必好用,因为还要根据实际去修改一些输出、输入量,或加以限制,不同的系统,这些都是不同的。就像是汽车底盘都是4个轮子,你要的是越野车,我给你个轿车的底盘,上面再怎么改也不好用阿!

H. 求解51单片机延时程序计算

呵呵:一楼错在时钟周期和频率的关系没弄对;
二楼错在内循环没算DJNZ的两个周期
=======================================
正解:
1)首先要知道单片机时钟晶振频率为多少?设fosc=6MHz。
2)时钟周期T是计算机基本时间单位,同单片机使用的晶振频率有关。
那么T =1/fosc=1/6M=166.7ns。
3)机器周期T1是指CPU完成一个基本操作所需要的时间,如取指操作、读数据操作等,机器周期=12 T =166.7ns X 12=2µs。
4)指令周期是指执行一条指令所需要的时间,因此指令周期没有确定值,一般为1~4个T机器周期。
5)本题各指令的机器周期为:
程序 机器周期数 一次用的时间µs
ORG 0050H 0
DELAY:MOV R0,#0AH 1 2
DL2:MOV R1,#7DH 1 2
DL1:NOP 1 2
NOP 1 2
DJNE R1,DL1 2 4
DJNZ R0,DL2 2 4
RET 2 4
6)延时时间:
(1)内循环: 时间
DL1:NOP 2
NOP 2
DJNE R1,DL1 4
内循环的循环次数为125(07DH),延时时间为:125 X (2+2+4)=1000µs=1ms
(2)外循环:外循环的循环次数为10(0AH),
总循环:10 x 1000µs=10000µs=10ms
(3)精确计算:
MOV R0,#0AH 运行了1次用 2µs
DL2:MOV R1,#7DH 运行了10次用2x10µs
DL2:MOV R1,#7DH 运行了10次用4x10µs
RET 运行了1次用4µs
所以精确计算为:10000+2+20+40+4=10066 µs
一般情况下回答延时10000µs即10ms即可
(4)说明若选用的晶振fosc=12MHz 那么以上的计算周期数不变,时间减半,即为10066/2=5033µs,或粗略答为:5000µs(5ms)。

以上答案希望有所帮助,并祝学习进步!

I. 关于51单片机实现数字秒表程序算法出错的问题

你自己都明明知道sec/10=0了,再过1秒,sec加一,sec=1,可问题是,右边图中for循环运算,是在每一秒以后,确保sec加一以后才循环的吗?估计你是在主程中不断执行for循环的,还没等到sec加1,sec还是0就执行for循环的,那sec就无法加1。闪一下,说明在1秒到的时刻,sec确实加1了,可刚显示出1,马上又for循环了,又为0了。还没等看清楚呢就变回0了。
你要想办法,保证在一秒以后,保证sec加一后再for循环。
其实,这么做本就是错误的。你既然知道按左图的算法是对的,何苦还用for计算呢?为自己出难题啊?

J. 51单片机串口波特率的算法求解

这是51单片机的硬件典型结构,串口通信使用的频率是晶振频率的1/32或者1/16(PCON的最高位为1),这就是32的来源。
但是这种模式下,限制了波特率的提高,因此,现在一些改进的51单片机是1/2分频。

热点内容
算法设计与分析课件 发布:2025-05-17 18:21:11 浏览:765
安卓禁止软件安装怎么解除 发布:2025-05-17 18:16:52 浏览:218
绝地求生极客电脑怎么配置 发布:2025-05-17 18:16:50 浏览:50
显卡编程语言 发布:2025-05-17 18:11:46 浏览:919
编程用什么轴机械键盘 发布:2025-05-17 18:10:35 浏览:960
金融工程编程 发布:2025-05-17 18:10:33 浏览:224
私密模式访问 发布:2025-05-17 18:09:44 浏览:787
数据库崩溃原因 发布:2025-05-17 18:09:42 浏览:306
对虾养殖增氧机如何配置 发布:2025-05-17 18:08:20 浏览:442
linux读写权限 发布:2025-05-17 18:08:12 浏览:314