几个51单片机简单时钟程序学习的简单程序

学习51单片机必写的几个程序
> 学习51单片机必写的几个程序
学习51单片机必写的几个程序
51单片机偶完全自学的,因为想学的时候离学校开课还早得很。 学完了单片机,现在学校课也开完了,收获很大。现将偶学习经验写出来,供大家交流。本文引用地址:1、因为有了C语言和汇编语言的基础,加上模电学得不错。微机原理也上了。所以我只花了半天的时间把51的引脚功能和内部结构搞清楚了。偶认为学51重要的就是搞清内部结构和地址空间。2、仅用了几个小时简单看了一下51的汇编指令和C语法。 我个人认为学习程序语言的语法规则是很简单的,且各种语言之间都有共通的地方,有了汇编和某种高级语言的基础学其它语言应该能很快上手。3、直接编程练习,软件硬件实现。我的第一个程序是跑马灯程序。这个会让你熟悉端口的用法,普通流程控制。当然是C语言写一个,汇编写一个,实现同样的功能。我的第二个程序是电子钟。这个程序会使你对中断有更深入的了解和学会中断的应用,包括外部中断(调整时间)的应用。同样C和汇编两种方法实现。还会学会数码管的驱动,动态扫描,查表编程等。我的第三个程序 DS1821温度计这个程序使我学习如何从一个不熟悉的器件的数据资料读取其时序图,用单片机来模拟其时序以实现对器件的操作。同样用C和汇编同时实现。我的第四个程序 128&64液晶显示程序。这个程序会学会液晶显示原理,单片机数据口线的操作等。同样两种语言实现。我的第五个程序 IIC通信。ZLG7290作键盘控制。学习用书:《单片微型计算机原理及应用》 张毅坤 西电(关注,回复&课件&获取该书ppt课件)《Keil Cx51 V7.0单片机高级语言编程与uVision2应用技术》 徐爱钧 电子工业出版社最后强调一点: 上面写的五个程序全部做成硬件电路实现。后记: 这只是我个人学习51的一点观点,像某些扩展芯片的使用,偶在微机原理就写过相关程序,其实现在用51教材写的有些芯片是很少用的,所以偶没有做。个人观点:真要是把上面写的5个程序给吃透了,你51也就达到可以应用的级别了。
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一技术小站:
& 时间:8月22日 10:00 - 11:30
& 时间:8月30日 10:00 - 11:30
& 时间:8月24日 14:00 - 15:30
& 时间:9月12日 10:00 - 11:30
张飞电子工程师速成全集
10天掌握PCB AD画板
教你高速PCB项目整体设计
如何设计STM32单片机系统?
物联网操作系统从写到用
讲师:华清远见
讲师:林超文
讲师:郑振宇
讲师:李述铜
移入鼠标可放大二维码
单片机初学者必看:这些单片机学习心得要牢记
来源:互联网 作者:辰光日 16:15
[导读] 对于单片机怎么学习,应该怎样一步步按照什么内容知识点顺序学,学习过程中应该注意哪些事项。其实,我们学习使用单片机,其实需要的就是去理解单片机的硬件结构,以及单片机的具体内部资源是如何应用的,并最后熟练运用汇编或者C语言程序进行各种功能初始化设置、A/D转换、单片机接口通讯、数字I/O输入输出的使用,并学会捕获、比较单片机信号源进行分析、编程、控制。下面我总结了单片机学习需要懂得的几点要素,希望对单片机初学者学习起到一定指引教导作用。
  对于单片机怎么学习,应该怎样一步步按照什么内容知识点顺序学,学习过程中应该注意哪些事项。其实,我们学习使用单片机,其实需要的就是去理解单片机的硬件结构,以及单片机的具体内部资源是如何应用的,并最后熟练运用汇编或者C语言程序进行各种功能初始化设置、A/D转换、单片机接口通讯、数字I/O输入输出的使用,并学会捕获、比较单片机信号源进行分析、编程、控制。下面我总结了单片机学习需要懂得的几点要素,希望对单片机初学者学习起到一定指引教导作用。
  第一步:数字I/O的使用
  使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
  第二步:定时器的使用
  学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实 现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数 字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
  第三步:中断
  单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生 (开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。
  以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。
  第四步:与PC机进行RS232通信
  单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。
  USART 接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用 USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!
  第五步:学会A/D转换
  MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。
  第六步:学会PCI、I2C接口和液晶显示器接口
  这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
  第七步:学会比较、捕捉、PWM功能
  这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
  第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计
  学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
  到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了!!
单片机相关文章
单片机相关下载
第一,坚持质量第一、效益优先的方针。党中央一直要求提高质量效益,把质量效益作为中心等,但一是由于客观上还处于高速增长阶段,二是主观上十二...
目前L3-L5级智能汽车大都需要配备1-4部前置激光雷达,在这一市场上,目前Xilinx的FPGA几乎独占了这一新兴应用市场,市场份额高达90%以上,多家知名一级供...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-21ic官方微信-->
求一个合泰的简单C应用程序,刚上手不会,学习一下。
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
最近有个项目要用合泰的芯片,之前没用过,对它开发的环境不熟。求一个简单C语言应用程序,用来学习一下。先谢谢各位大神。邮箱:
高级技术员, 积分 606, 距离下一级还需 394 积分
高级技术员, 积分 606, 距离下一级还需 394 积分
高级技术员, 积分 606, 距离下一级还需 394 积分
高级技术员, 积分 606, 距离下一级还需 394 积分
1.找你的代理商,开发工具、代理商有工程人员可以帮助你;
2.官网下载(找对应的料号对应的Sample Code),一般官网都有,难度合泰的没有?如果没有,请参考第一条
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
好吧,自己找找. 谢了!
扫描二维码,随时随地手机跟帖
技术新星奖章
人才类勋章
时间类勋章
您需要登录后才可以回帖
热门推荐 /6学习单片机的八个步骤-电子工程网
学习单片机的八个步骤学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。
第一步:数字I/O的使用
&&使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二步:定时器的使用& &学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
第三步:中断
&&单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某
种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等 。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。
以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。
第四步:与PC机进行RS232通信
&&单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。
&&USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!
第五步:学会A/D转换
&&MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。
使用A/D转换功能的简单的例子是设计一个电压表。
第六步:学会PCI、I2C接口和液晶显示器接口
&&这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
第七步:学会比较、捕捉、PWM功能
&&这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。
如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计
&&学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了。
更多嵌入式、物联网,智能硬件学习交流
欢迎咨询余老师QQ学习单片机八大步骤
我的图书馆
学习单片机八大步骤
转http://user.qzone.qq.com//blog/:学习单片机八大步骤学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。第一步:数字I/O的使用使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。第二步:定时器的使用学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。第三步:中断单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。第四步:与PC机进行RS232通信单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!第五步:学会A/D转换MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。第六步:学会PCI、I2C接口和液晶显示器接口这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。第七步:学会比较、捕捉、PWM功能这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。1、C开发经验条件:linux(这都有吧)方法:随便,主要是掌握ansiC编程(不包括gtk,qt等图形可视化开发)2、网络、操作系统、体系结构条件:linux,各种书,算法、例程。方法:通过C编程实现简单的网络等知识的算法和过程。3、嵌入式系统概念条件:各个嵌入式网站,讨论组,书籍方法:少提问(尤其是等着天上掉馅饼,这主要是防止增长惰性,也解决不了实际问题),多思考。4、嵌入式开发实践条件:各种嵌入式系统开发工具的demo版(或者D版,如果有的话),包括编译器,仿真器。可以找高手们要,也可以下载。方法:这里有两个分支,一个是基于mcu/dsp的嵌入式系统开发,一个是象palmos,wince,ucos等rtos下的应用软件开发。对硬件感兴趣,想成为真正高手的由第一个分支入手,以后进入第二个分支;如果十分厌烦硬件,只想停留在软件开发上的,可以只由第二个分支入手,以后就和pc上的开发没有什么本质上的区别了,找份不错的工作应该没问题,可以不用进行下面的步骤了,感兴趣可以参考第6条。5、硬件开发条件:各种嵌入式芯片、存储器等电路器件,protel99等电路设计软件,电路板制作。方法:这时候该有开发条件了,最起码是51系列,这个比较方便。电路的设计内容较多,不过看起来吓人,实际上比软件要简单的多。只要下功夫,实践会告诉你一切。6、硬件工程/软件工程/项目管理条件:各个芯片详细资料和使用经验,软件工程知识,项目管理知识,培训,大型项目参与经验方法:已经是高手了,但是学无止境,沾沾自喜于已有的知识是致命的。那个下一步。。。,你该是管理者了。补充几点.要想成为高手中的高手,最好从钻研如下领域修炼:1,分析一种RTOS的源代码--UCOS最容易;2,分析一种通讯协议栈的实现方式--TCP/IP最实用;3,精通一种DSP的开发集成环境--TI CCS2.1最优秀,精华在其内带的RTOS;4,精通一种单片机的开发集成环境--keil C最经典;5,精通一种MCU的开发集成环境--ADS 1.2最流行;要想成为大师级人物再从如下领域开始修炼:1,精通一种系统建模语言和工具--Telelogic tau SDL/UML suit最经典;2,精通一种算法仿真工具--Matlab simulink 最便宜;要想检验一下自己是否到达了至尊级人物,可以做如下的事:动手搭建一套红外或者蓝牙通讯原型系统,模拟前端可以用现成的,基带用DSP,主控用个32BMCU,DSP和协议软件自己写。当然不可能做全,做个子集就可以了C语言编程方法[
11:22:20 | Author: bug ]1、选择合适的算法和数据结构应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。2、使用尽量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。在ICCAVR中,可以在Options中设定使用printf参数,尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符),少用长整型参数(%ld、%lu、%lx和%lX格式说明符),至于浮点型的参数(%f)则尽量不要使用,其它C编译器也一样。在其它条件不变的情况下,使用%f参数,会使生成的代码的数量增加很多,执行速度降低。3、使用自加、自减指令通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编译器通常都能够生成inc和dec之类的指令,而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令。在AVR单片适用的ICCAVR、GCCAVR、IAR等C编译器以上几种书写方式生成的代码是一样的,也能够生成高质量的inc和dec之类的的代码。4、减少运算的强度可以使用运算量小但功能相同的表达式替换原来复杂的的表达式。如下:(1)、求余运算。a=a%8;可以改为:a=a&7;说明:位操作只需一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成,代码长、执行速度慢。通常,只要求是求2n方的余数,均可使用位操作的方法来代替。(2)、平方运算a=pow(a,2.0);可以改为:a=a*a;说明:在有内置硬件乘法器的单片机中(如51系列),乘法运算比求平方运算快得多,因为浮点数的求平方是通过调用子程序来实现的,在自带硬件乘法器的AVR单片机中,如ATMega163中,乘法运算只需2个时钟周期就可以完成。既使是在没有内置硬件乘法器的AVR单片机中,乘法运算的子程序比平方运算的子程序代码短,执行速度快。如果是求3次方,如:a=pow(a,3.0);更改为:a=a*a*a;则效率的改善更明显。(3)、用移位实现乘除法运算a=a*4;b=b/4;可以改为:a=a&&2;b=b&&2;说明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,如果乘以2n,都可以生成左移的代码,而乘以其它的整数或除以任何数,均调用乘除法子程序。用移位的方法得到代码比调用乘除法子程序生成的代码效率高。实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果,如:a=a*9可以改为:a=(a&&3)+a5、循环(1)、循环语对于一些不需要循环变量参加运算的任务可以把它们放到循环外面,这里的任务包括表达式、函数的调用、指针运算、数组访问等,应该将没有必要执行多次的操作全部集合在一起,放到一个init的初始化程序中进行。(2)、延时函数:通常使用的延时函数均采用自加的形式:void delay (void){for (i=0;i&1000;i++);}将其改为自减延时函数:void delay (void){for (i=1000;i&0;i--);}两个函数的延时效果相似,但几乎所有的C编译对后一种函数生成的代码均比前一种代码少1~3个字节,因为几乎所有的MCU均有为0转移的指令,采用后一种方式能够生成这类指令。在使用while循环时也一样,使用自减指令控制循环会比使用自加指令控制循环生成的代码更少1~3个字母。但是在循环中有通过循环变量“i”读写数组的指令时,使用预减循环时有可能使数组超界,要引起注意。(3)while循环和do…while循环用while循环时有以下两种循环形式:i=0;while (i&1000){i++;//用户程序}或:i=1000;doi--;//用户程序while (i&0);在这两种循环中,使用do…while循环编译后生成的代码的长度短于while循环。6、查表在程序中一般不进行非常复杂的运算,如浮点数的乘除及开方等,以及一些复杂的数学模型的插补运算,对这些即消耗时间又消费资源的运算,应尽量使用查表的方式,并且将数据表置于程序存储区。如果直接生成所需的表比较困难,也尽量在启了,减少了程序执行过程中重复计算的工作量。7、其它比如使用在线汇编及将字符串和一些常量保存在程序存储器中,均有利于优化一般我们现在用的比较多的是MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。学习并不是一件容易的事,有时要经过不断地琢磨、探讨、钻研,才能弄懂一个问题。这就要靠坚持不懈的决心。有疑难时,可以将问题搁置一下,但决不能碰到困难就放弃不干。失败乃成功之母。在失败中也有重要的经验可汲取。成功贵在坚持。贵在坚持不懈的信心和毅力,要有屡败屡战的韧性。有人说:“所谓英雄,并不比普通人更有运气,只是比普通人更具有延续最后5分钟的勇气”。这句话说得很有道理,也就是坚持到最后才能看见胜利。现在,社会进步了,知识普及了,学习电子技术就更加有条件了。有一位学习电子技术的技校学生,刚到企业时对电子电路很感兴趣,学习进步也较快,后来,渐渐地兴趣索然了。为什么呢?用他的话说:看见这一大块线路板就头晕。这就是在工作中遭遇困唯时,产生畏难情绪了。不进则退,这是学习的大忌。而另一位大专生,喜欢抢着参加电路装配和电路实验,对一些实验的电路,他主动帮着焊接、测试数据,并对于不了解的电路原理,能够勤问、勤学习。因此,他进步很快,不到两年,就掌握了许多自动控制方面的技术。我认为学习电子制作要注意几点:1.根据实际情况扎实地学习好电子电路的基础知识。比如:模拟电路方面的运放电路使用知识;常用电路基础知识(如三极管的常用电路知识等);常用模拟电路的使用知识(如555时基电路);数字电路方面的ttl电路使用常识;coms电路使用常识等。这些电路并不能在几个月内就会很好地掌握,而是需要掌握先用先学,急用先学,常用先学的原则。并要坚持系统地学习。2.要勤动手。要对感兴趣的电路进行实验制作。学习电子电路的特点是:只有动手制作才能真正学会电子技术。如果单纯理论学习,不动手实践,就是学习一辈子也只能“纸上谈兵”,不会得到真才实学。因为,只有在实践制作中才会碰到各式各样的问题,而解决问题的能力,便是电子技术的精髓所在。一张设计得再好的线路图,如果没有进行实际制作和实验,就无法知道电路的性能优劣。因此,勤学苦练是学习电子制作的至关重要。3.要注意学习的方法和实践的难易程度。学习应该先易后难,步步深入,不能妄想一口吃成个大胖子。要多读电子书刊。肯于为购买图书投点资。另外,要尽量扩展知识面,以获举一反三的借鉴之功。实践时要根据自己的条件来决定,不要做自己根本不能完成的事情。只有力所能及才能不至于影响到自己进一步学习的兴趣。其实,再复杂的电路也是由一个个小电路组成的。我们只要掌握了常用电路的特性,就能灵活地组成各种复杂的电路。4.要培养自己的浓烈兴趣爱好习惯。兴趣爱好是学习电子技术的动力。有兴趣爱好的人学习电子技术再累也不会觉得累。他会自觉自愿地放弃休息而废寝忘食地进行学习和实验。电子制作对于爱好者来说是一种“娱乐”,是一种“享受”。5.当掌握了一定的电子技术后,就要努力制作一些对社会,对单位有贡献的电子产品,那怕是改进同类产品也好。开发产品之余,应主动去解决一些生产现场的实际问题,以获得更好学习的支持,为自己的进一步学习和锻炼打下基础。我曾接触过许多刚踏上工作岗位的中专生、大学生,高中生等。一些学习过电子电路、自动化控制的大学生,满怀信心地走上工作岗位,想用自己的知识为企业大干一场。可是,走到企业看到一大堆电子线路板就懵了。这些复杂的电子电路,在书本上没有讲过,有许多元件不认识。这是由于我们的教育脱离实践的一方面表现。教材往往比企业的实用电子技术要晚上几年。因此,即使是学电子的大学生,走上工作岗位后,还是要坚持不懈地进行学习,才能掌握好实用的电子技术。如果在读书时就热爱电子制作,实际接触电子制作,这对将来走上工作岗位后的开展工作会有很大的帮助。这些道理要等到走上工作岗位后才能明白。学习电子制作,文化程度不一定是根本条件,即便是初中以上的文化程度,也能够掌握一定的电子制作技术。关键是你对电子制作技术兴趣的浓烈程度如何。实践证明,有浓烈兴趣的电子爱好者,经过十几年的刻苦勤劳的学习,其掌握电子技术的水平会大大提高,总是会引人注目地成为电子技术上的能手。真正喜爱电子制作的爱好者,大多有坚持不懈的精神。电子技术就是在不断的学习和实验中得到了提高。学习电子技术并不是短期行为,而是要持之以恒,矢志不渝地学习一生的技术。电子技术不断推陈出新的趋势,就是我们电子爱好者不断学习新技术的动力。本人做过技术开发工作多年,从焊电路板的小工程师逐渐做到项目经理、研发经理,现在做到总工程师,作为工程师有亲身的感受,作为研发主管,对工程师的性格、心理和知识结构有非常深入的了解,现在把自己的一点感悟与大家分享,希望大家批评指正,欢迎补充完善。有强烈的好奇心。这是成为高手的必要条件,喜欢新生事物,对问题喜欢刨根问底,以钻研为乐趣。那种得过且过,敷衍了事,仅仅把工作当作饭碗的人连熟手都成不了,更何况高手。有好奇心的人,可以为解决一个问题通宵干,躺在床上也在寻思解决方案,这样的人就是高手的胚子!做事谨慎细致,考虑问题全面。技术工作来不得半点粗心马虎,否则问题多多,后患无穷。甚至给生产、产品品质造成重大影响,给公司造成重大经济损失。马虎的人不可能成为优秀的工程师,只可能当当助手,哪个上司敢把项目交给一个马大哈?改,难呐,本性难移!趁早找个理由炒他鱿鱼!模拟、数字,高频、低频,软件、硬件,模具、结构,甚至文字功底也必不可少(撰写产品使用手册、工艺指导书等等也可看出一个人的专业水准)具备完善的知识体系。企业中的工程师不是研究学问,也没指望成为科学家,是为企业的产品服务的。因此,全面的知识架构对于迅速完成产品开发任务非常重要,复合型人才更为难得。既然是高手,当然十八般兵器样样精通,否则,难以独挑大梁,只能做配角。没有全面的知识,要上升到项目经理、研发经理层面是不可能的。企业中的工程师必须时刻关注成本、生产工艺、用户需求、测试环境、采购渠道、配套厂家工艺水平等等许多方面,一点不慎后续问题就冒出来了。你的设计再好,工艺性差,车间生产装配调试困难,导致生产成本急剧上升,或者配套厂家工艺水平达不到又有什么用?或者器件采购困难,经常影响按期交货也同样对企业不利。时刻提醒自己,产品是赚钱的工具,自己才能的张扬要服从这一大前提。这里要特别提醒那些学历高,某方面技术精深,但对企业运作、生产工艺、生产流程、物流管理、行销模式、市场调查、用户心理是“二把刀”的人,不要自恃一点dsp皮毛就以为可以天下无敌,谦虚地深入基层,熟悉一切,虚心学习其他方面的知识,才有大为!思路开阔,能从市场、用户和生产工艺角度考虑产品开发。唯技术至上的人,思路狭隘,即使聪明过人,只能扮演一个处理具体问题的小角色。企业的唯一目标是赚钱,能赚钱就是好产品,不能赚钱就等于零。这就能解释为什么很多研究所、大学开发的产品填补了多少多少空白,但在产业化过程中却总赚不到钱,最后落满灰尘。企业的工程师,务必坚持市场第一,用户至上的开发思路,你的工作仅仅是开发出低成本的、工艺性好的、品质稳定的,最关键是满足目标用户需求的产品,不能凭想象发挥,自以为是,要知道,用户永远是对的,你不能让他们服从你的思路,你每天窝在实验室,对市场又了解多少?,对消费心理又知道多少,别自以为聪明,道听途说几句话就轻易下结论!现实、灵活的开发思路是高手的重要特征。企业的产品开发是和市场紧密联系在一起的,不是国家拨款的基础理论研究。树立市场化的研发策略是高手必备的素质!不要指望你能搞出超英赶美的世界级产品,你现在的实验条件、项目管理水平、人员素质、资金投入、信息交流等等和人家相比差了十万八千里,你凭什么搞出世界级的东西?家电巨头投下数亿元开发手机,高手云集,十余年了,手机的核心技术还是人家的。你做过的电路、编写过的程序千万人做过,你只不过东拼西凑地组合出了一个东西而已,必须要清醒地、谦虚地认识到这一层面。因此,在开发过程中,不要一切都自己开发、研究,大胆地借鉴国外的东西,绝大多数产品人家早已经普及,不妨照搬其中的功能模块,再结合自己实际情况,去搞开发才是高明的做法。再者别人的产品经过现场用户的使用,许多隐患已经消除,水平再高的人做的新产品也会从用户哪里反馈回来一些缺陷,直接模仿别人的产品,即可消除许多缺陷点。同时,可以大大缩短研发周期,减少研发费用,抢先一步推向市场,绝对是上策。当然,受到专利保护的技术要注意,仔细看看相关法律,在法律允许范围内从事,体会一下总还是有办法的!这里要一再强调,我所指的是“企业里受欢迎的高手!”不是科学院里的专家,不是陈景润!这是截然不同的概念。企业里的高手,不仅仅要了解技术、工艺以及生产方面的知识,团队意识,管理才能,协调沟通能力,系统规划能力,甚至语言表达能力都是很重要的,这些是高手的综合素质的体现。特别对毕业2-4年的年轻工程师提个醒,要清楚认识自己,知道自己的斤两,不要以为做过2-3个项目就飘飘然,人家也是那样过来的!其实还差得远!等到了二十七、八岁,你会逐渐明白的。学海无涯,除过极个别特殊天才人物,大家都是普通人,互有长短,谦虚谨慎,心态平和是成就大事的基础,总那么浮躁,狂妄,藐视他人,将导致团队合作困难,同事关系紧张,项目的进展必然不顺利,从而延长成为高手的时间,单纯从技术来看,不过在某个狭小领域有小小心得而已,距离经验丰富、技能全面的高手还有八年抗战的历程。一般来讲,毕业5-6年,技术初步达到全面成熟(那些得过且过的人,二十年也成熟不了,现在几十岁来应聘的人也不少,水平还是马马乎乎),再逐渐吸收管理知识、市场知识等其他企业里所涉及的方面的技能,30岁左右基本圆满已经非常不简单了!时刻要有谦和的心态,是在团队中脱颖而出的必须条件。
喜欢该文的人也喜欢

我要回帖

更多关于 51单片机简单闹钟程序 的文章

 

随机推荐