求51单片机进行数据处理时的注意事项,如编程时能进行什么类型的计算,效率有多高等等,100分先奉上

2024-12-04 04:25:00
推荐回答(2个)
回答1:

现在大都在用C语言。注意事项:
数据类型:变量尽量用8位单字节unsigned char型的,或者16位双字节unsigned int。一般足够了。如果只是用真假两种状态,(比如标志位)可以用1位的bit型,才用八分之一个字节。不能像电脑编程那样挥霍内存。浮点数等类型,就算了吧。

计算方面:尽量用加减运算,移位运算,与、或、非、运算。
以上运算一个或几个机器周期就能完成。而一个乘除运算,可能需要接近200个时钟周期!(8位)
经验表明,程序不太复杂的情况,乘除法用用也无妨。但尽量用8位的。
是在需要复杂的函数运算的话,(比如说一些温度补偿运算,复杂的函数)可以用查表法,把可能出现的答案都放在code里面,在C语言里是以数组的方式直接查询答案,非常快,缺点是比较占用flash,现在单片机flash都很大,各方面权衡一下。

另外,如果乘以或者除以一个2的平方数的因子,直接可以用移位代替。比如a除以16,等价于a右移4位。

有一些乘除法可以凑数的,靠近2的平方数比较近的数字,根据上一条:
例如:a*30相当于a*32 - a -a 还相当于 a<<5 - a - a
如此一换算,就把乘法拆分成了加减法和移位。大量节约了资源。

另外,比较高级的单片机AVR,MSP430,PIC,大多数型号都集成了硬件乘法器,做乘法只需要一个机器周期,需要复杂运算的时候可以考虑这些高级单片机。

回答2:

根据51单片机本身的特点,它适合于搞现场控制,并不适合做数据处理。
要进行数据处理,应该选用DSP芯片。

如果非要使用单片机做数据处理,那就是强人所难,呵呵
单片机也累,编程的人也累,费了牛劲,也不会有好的结果。