郭天祥的 单片机书 足矣 里面还有光盘 郭天祥讲的 10天学会单片机。我们老师只推荐这一本。容易看懂。
⑵ 程序代码开发中怎样才能提高我们的开发效率呢
提高开发效率可以从以下几个方面进行学习。
首先多多学习开源项目,分析别人的代码架构,吸取对方优秀的编程思想,理解后下次开发用上
第二:记住系统提供给我们的快速开发的方法,常用的方法都有日期函数,字符串函数,文件函数等,比如下面的函数:
一个不透明的结构, 它指向一条线程并间接(通过该线程)引用了整个 Lu a 解释器的状态。 L ua 库是完全可重入的: 它没有任何全局变量。 状态机所有的信息都可以通过这个结构访问到。
这个结构的指针必须作为第一个参数传递给每一个库函数。 l ua_newstate 是一个例外, 这个函数会从头创建一个 L ua 状态机。
l。a_status
返回线程 L 的状态。
正常的线程状态是 0 (LUA_OK)。 当线程用 lua_resume 执行完毕并抛出了一个错误时, 状态值是错误码。 如果线程被挂起,状态为 LUA_YIELD 。
你只能在状态为 LUA_OK 的线程中调用函数。 你可以延续一个状态为 LUA_OK 的线程 (用于开始新协程)或是状态为 LUA_YIELD 的线程 (用于延续协程)。
lu a_stringtonumber
size_t lu a_stringtonumber (l ua_State *L, const char *s);
将一个零结尾的字符串 s 转换为一个数字, 将这个数字压栈,并返回字符串的总长度(即长度加一)。 转换的结果可能是整数也可能是浮点数, 这取决于 Lua 的转换语法(。 这个字符串可以有前置和后置的空格以及符号。 如果字符串并非一个有效的数字,返回 0 并不把任何东西压栈。 (注意,这个结果可以当成一个布尔量使用,为真即转换成功。)
lu a_toboolean
int lu a_toboolean (lu a_State *L, int index);
把给定索引处的 Lu a 值转换为一个 C 中的布尔量( 0 或是 1 )。 和 L ua 中做的所有测试一样, lua_toboolean 会把任何不同于 false 和 nil 的值当作真返回; 否则就返回假。 (如果你想只接收真正的 boolean 值, 就需要使用 lua_isboolean 来测试值的类型。)
lu a_tocfunction
lu a_CFunction lua_tocfunction (lu a_State *L, int index);
把给定索引处的 L ua 值转换为一个 C 函数。 这个值必须是一个 C 函数; 如果不是就返回 NULL 。
lu a_tointeger
lua_Integer l ua_tointeger (lu a_State *L, int index);
等价于调用 l ua_tointegerx, 其参数 isnum 为 NULL。
lu a_tointegerx
l ua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);
将给定索引处的 L。a 值转换为带符号的整数类型 lu a_Integer。 这个 Lu a 值必须是一个整数,或是一个可以被转换为整数 (3)的数字或字符串; 否则,lua_tointegerx 返回 0 。
如果 isnum 不是 NULL, *isnum 会被设为操作是否成功。
lu a_tolstring
const char *lu a_tolstring (lu a_State *L, int index, size_t *len);
把给定索引处的 Lua 值转换为一个 C 字符串。 如果 len 不为 NULL , 它还把字符串长度设到 *len 中。 这个 L ua 值必须是一个字符串或是一个数字; 否则返回返回 NULL 。 如果值是一个数字, lua_tolstring 还会 把堆栈中的那个值的实际类型转换为一个字符串。 (当遍历一张表的时候, 若把 lua_tolstring 作用在键上, 这个转换有可能导致 lua_next 弄错。)
lua_tolstring 返回一个已对齐指针 指向 Lua 状态机中的字符串。 这个字符串总能保证 ( C 要求的)最后一个字符为零 ('\0') , 而且它允许在字符串内包含多个这样的零。
因为 Lua 中可能发生垃圾收集, 所以不保证 lua_tolstring 返回的指针, 在对应的值从堆栈中移除后依然有效。
⑶ 老师,您好,我现在在学习51单片机,在读一些实例,该如何深入的掌握它还有,以后我还想学习avr和arm,
1读一些开发板带的实例,同时学习c语言相关知识,包括一些编程思想,如状态机,时间片触发等等
2上论坛做一下开源的小作品,ouravr挺好的,不只是avr的。
3如果环境好的话这时就可接一些小的项目,主要是在老师的指导下作,可以积累些实际经验,经验指的是用哪个片子稳定,pcb如何画等等
4现在就可以学arm了,主要是学习下操作系统如ucos等等,还有fatfs文件系统,ucgui。
这你就可以知道mp3,或者一些仪表或控制板的工作的原理
5如果你很强再学arm9这个级别的东西吧,反正我是不会了,感觉像是计算机人学的,反正挺困难的
至于avr应该在51熟了的基础上,一两周就能搞定。
ps:avr片子挺贵的,如果不是工作建议还是买51自己做东西吧
⑷ 如何提高单片机,
单片机控制大部分是面向硬件的,关于这些物理硬件的控制,最重要的就是调节速度和精度,表现在单片机内部算法上,我认为就是时间和空间的合理运用,而这些对算法的要求是什么呢,或者说作为单片机开发者来说,应该怎么样考虑自己的单片机程序呢?
第一,程序结构
我知道你肯定不会想去仔细研究数据结构,那太抽象了。在这里我直接告诉你,基于“状态机”的程序结构更加适合单片机,确切的说是有限状态机。状态机编程技术将直接促使你解决程序的时间问题,并且程序结构可大可小,普通状态机和层次式状态机能让你对绝大多数项目手到擒来。当然状态机编程技术也是需要学习的,但这比你直接去学数据结构要轻松的多。
第二,使用适合的算法
我们编程时要明白一个道理,再多复杂的算法也不能证明你的程序是一个好程序,那什么才是呢?是简洁明了和可靠稳定。大道至简放在编程上不是一句空话,同样一个冒泡排序算法,有的人写出来死板的很,有的人却能独具效率,这是对算法的理解高度不同。我认为与其学习更为复杂的控制算法,不如加深自己对现有算法的理解。通样的PID算法程序,有的人能加上积分分离,有的人能用上环境自适应,这里面差别不可谓不大啊。
最后希望你能早日从自己的工作中形成自己独到的理解,精益求精。
⑸ 自己学编程3个月了,感觉越来越瓶颈,不照葫芦画瓢写不出来
JS本就是个先天残废的语言,能把DOM操作好就行了。。。真要搞大一点的项目,你有更好的语言可以学。。。
由于JS的诸多劣根性,不面向对象,弱类型,动态语言。。。其实靠学习JS,很难养成逻辑思维。。我相信录制视频的那个老师,在只学过JS,而没学过其他语言的时期,也是写不出2048的。。。
其实编程语言的特性和设计模式有很多,而JS的语言劣根性,导致其只具备了其中最基础的部分。。。稍微高级一些的东西。。在JS里其实是没有的。。所以JS即便学得再精。。。其实编程思想依然只是小学生水平。。。
比如继承,多态,委托,工厂模式,观察者模式,单例模式,二叉树,行为树,状态机,等等。。。如果只是通过学习JS,而不接触一门强类型,面向对象语言的话,这些特性,永远都无法涉足。。。所谓编程思想,也就止步于小学生水平了。。
这里推荐C#。。。为什么?因为它是未来JS改进方向的参照原形。。。2.0版的JAVASCRIPT,基本就可以看作是C#的山寨版。。。ECMA的JS改进计划,就是让JS越来越像C#。。当你学到这一步,会接触到一个叫unity 3d的东西,到时候你自然就能做出2048了。。。甚至你可以做出一个CS之类的3D游戏来。。。
不过这是以后的事情了。。。学习是一个循序渐进的过程,没有谁是一步登天的。。在学习JS的阶段,能把DOM操作好就足够了。。。这才是JS的本分。。。不需要指望JS再去干那些“与自己无关的事情”。。。那些都是一群学了JAVA,C#或者C++的老东西们,跑回JS的新手圈炫技装逼的产物而已。。。。。。。
⑹ labview中常用的程序结构有哪几种
三种范式:面向过程、面向事件,面向对象;
六种模式:标准状态机、消息队列、生产者/消费者(事件)、生产者/消费者(数据)、用户界面事件处理、主/从
详见《LabVIEW编程思想》
⑺ 中断按键与普通按键有什么区别按键状态机编程利用了什么思想
公证案件以普通按键有什么区别?案件状况疾病禁用有什么意思?这个东东啊?建议古龙了,就这样没什么区别案件状态它的按键不是一样的吗?只不过他这个,有好坏的有好多各种各样的,所以就案件的区别也没有什么叫他跪就有那个按键就稍微好一点点。质量好一点。
⑻ 如何学好OpenGl
首先:
OpenGl的编程思想与别的语言不太一样,正如每本书都会说的一样OpenGl是一个状态机。
所以,掌握OpenGl的原理特别重要。
这里推荐两本书:一本是老一点的红宝书《OpenGl编程指南》(一般都会推介这本书),另一本我觉的《OpenGl超级宝典》不错,案例多,讲的也不错,后起之秀吧。
一般学习过程是:从基本的二维画图开始,理解OpenGl里面不同的坐标,然后在扩展到三维,然后在学高级的载入3D,纹理等。