关于单片机蜂鸣器汇编语言汇编语言,不会的绕道别浪费我时间

单片机c语言学习心得 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
单片机c语言学习心得
14:05:31  
29082&查看
很多想学单片机的人问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。
先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。
有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。
总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。
步骤:1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)
2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)
3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)
4.自己完全设计具有个人风格的电路,产品,。。。你已经是高手了。 。。。。
看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。
我的单片机学习心得。&&很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用C语言为单片机编程,既省时间,学起来又容易,进步速度会很快。在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。&&单片机的学习实践。&&单片机提高重在实践,想要学好单片机,软件编程必不可少。但是熟悉硬件对于学好单片机的也是非常重要的。如何学习好硬件,动手实践是必不可少的。我们可以通过自己动手做一个自己的电子制作,通过完成它,以提高我的对一些芯片的了解和熟练运用它。这样我们就可以多一些了解芯片的结构。我相信,你完成了一个属于自己的电子制作,你的单片机水平就会有一个质的提高。& &这就是我学习单片机的心得体会,希望给单片机的爱好者学好单片机有所帮助。
使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或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招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了!!
5回答者: -
19:27:04  
这个可以定
17:24:50  
19:01:31  
19:55:51  
22:16:52  
22:46:23  
受益匪浅啊...感谢分享...
00:43:39  
楼主说的很好的,都是自己的真心话, 我看后也和有感触,我现在也处于学习单片机的重要时期,希望有机会与大虾交流学习
10:59:47  
受教了,谢谢
18:17:49  
18:52:43  
15:18:22  
来学习一下
21:37:55  
这个好&&让我这个新人学到了不少
助理工程师
22:45:43  
顶顶顶顶顶顶上
12:54:20  
对于初学者&&是个不错的建议啊
19:19:52  
10:11:38  
10:31:54  
08:54:45  
很不错的思路
09:03:59  
得到顶顶顶顶顶顶顶顶顶顶
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司&&关于单片机汇编语言无符号数4字节除以2字节的除法程序
关于单片机汇编语言无符号数4字节除以2字节的除法程序
用MCS-51单片机汇编语言实现,我弄了1天还是弄不出来,R7R6R5R4/R3R2 商放在R7R6R5R4 余数放在R1R0(R7、R3、R1分别是最高位) 求高手帮忙解决~~高分求救!!我能编程实现一个·但有个缺点就是除数R3R2的最高位必须为0才能除正确,要是最高位是1的话容易出错~~~~~~~解决好了有加分~~~~!!!!谢谢。。。 问题补充:是没人回还是分太低??
ProteUS 调试通过! BUF1 EQU 2000H BUF2 EQU 3000H ORG 00H AJMP _INIT_SYS _INIT_SYS: MOV SP,#80H ; R7R6R5R4/R3R2 = R7R6R5R4 ... R1R0 MOV R2,#00H MOV R3,#0FH MOV R4,#04H MOV R5,#05H MOV R6,#06H MOV R7,#08H LCALL _DIV AJMP $ _DIV: ;{ CLR C MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 _DIV_LOOP: CLR C MOV A,R4 SUBB A,R2 MOV R4,A MOV A,R5 SUBB A,R3 MOV R5,A MOV A,R6 SUBB A,#0 MOV R6,A MOV A,R7 SUBB A,#0 MOV R7,A JC _DIV_END _INC_SHANG: CLR C MOV A,30H ADDC A,#1 MOV 30H,A MOV A,31H ADDC A,#0 MOV 31H,A MOV A,32H ADDC A,#0 MOV 32H,A MOV A,33H ADDC A,#0 MOV 33H,A LJMP _DIV_LOOP _DIV_END: CLR C MOV A,R2 ADDC A,R4 MOV R0,A MOV A,R3 ADDC A,R5 MOV R1,A MOV R4,30H MOV R5,31H MOV R6,32H MOV R7,33H RET ;} END
提问者的感言:谢谢您的解答!
问答为您推荐
市场价:暂无
网友正在问
||||||||||
Copyright (C)
Yesky.com, All Rights Reserved 版权所有 天极网络单片机汇编语言详解
> 单片机汇编语言详解
单片机汇编语言详解
数制的概念    数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制和十六进制。   数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理,存储和传输。 十进制数(Decimal)  人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的.   在计算机中,除了十进制数外,经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的法则. 二进制数(Binary)  二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。   为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示。   例如:二进制数可以写成(,或写成B,对于十进制数可以不加注.计算机中的数据均采用二进制数表示,这是因为二进制数具有以下特点:   1) 二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器件。例如,电路中有,无电流,有电流用1表示,无电流用0表示。类似的还比如电路中电压的高,低,晶体管的导通和截止等。   2) 二进制数运算简单,大大简化了计算中运算部件的结构。   二进制数的加法和乘法运算如下:   0+0=0 0+1=1+0=1 1+1=10   0×0=0 0×1=1×0=0 1×1=1 八进制数(Octal)  由于二进制数据的基R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加Q表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应 八进制数据 ( 3 5 2 . 2 6 4 )8或352.264Q. 十六进制数(Hex)  由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数   十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。   例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。 数的位权概念  对于形式化的进制表示,我们可以从0开始,对数字的各个数位进行编号,即个位起往左依次为编号0,1,2,……;对称的,从小数点后的数位则是-1,-2,……   进行进制转换时,我们不妨设源进制(转换前所用进制)的基为R1,目标进制(转换后所用进制)的基为R2,原数值的表示按数位为AnA(n-1)……A2A1A0.A-1A-2……,R1在R2中的表示为R,则有(AnA(n-1)……A2A1A0.A-1A-2……)R1=(An*R^n+A(n-1)*R^(n-1)+……+A2*R^2+A1*R^1+A0*R^0+A-1*R^(-1)+A-2*R^(-2))R2   (由于此处不可选择字体,说明如下:An,A2,A-1等符号中,n,2,-1等均应改为下标,而上标的幂次均用^作为前缀)   举例:   一个十进制数110,其中百位上的1表示1个10^2,既100,十位的1表示1个10^1,即10,个位的0表示0个100,即0。   一个二进制数110,其中高位的1表示1个2^2,即4,低位的1表示1个2^1,即2,最低位的0表示0个2^0,即0。   一个十六进制数110,其中高位的1表示1个16^2,即256,低位的1表示1个16^1,即16,最低位的0表示0个16^0,即0。   可见,在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的位权。   十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。 进数制之间的转换  1.二进制数、十六进制数转换为十进制数(按权求和)   二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.   例如:把(转换为十进制数。   解:(   =1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)   =8+0+0+1+0+0.25   =9.25   把(38A.11)16转换为十进制数   解:(38A.11)16   =3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方   =768+128+10+0.9   =906.0664   2.十进制数转换为二进制数,十六进制数(除2/16取余法)   整数转换.一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.   例:将25转换为二进制数   解:25÷2=12 余数1   12÷2=6 余数0   6÷2=3 余数0   3÷2=1 余数1   1÷2=0 余数1   所以25=(11001)2   同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.   例:将25转换为十六进制数   解:25÷16=1 余数9   1÷16=0 余数1   所以25=(19)16   3.二进制数与十六进制数之间的转换   由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.   (1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.   例:将(4AF8B)16转换为二进制数.   解: 4 A F 8 B   11
  所以(4AF8B)16=(   (2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.   例:将二进制数()2转换为十六进制数.   解: 10   1 D 6   所以(=(1D6)16   转换时注意最后一组不足4位时必须加0补齐4位 数制转换的一般化  1)R进制转换成十进制   任意R进制数据按权展开、相加即可得十进制数据。 例如:N = B = 1*2^3+1*2^2+0*21+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125   N = 5A.8 H = 5*161+A*160+8*16-1 = 80+10+0.5 = 90.5   2)十进制转换R 进制   十进制数转换成R 进制数,须将整数部分和小数部分分别转换.   1.整数转换----除R 取余法 规则:(1)用R 去除给出的十进制数的整数部分,取其余数作为转换后的R 进制数据的整数部分最低位数字; (2)再用2去除所得的商,取其余数作为转换后的R 进制数据的高一位数字; (3)重复执行(2)操作,一直到商为0结束。 例如: 115 转换成 Binary数据和Hexadecimal数据 (图2-4) 所以 115 = 1110011 B = 73 H   2.小数转换-----乘R 取整法 规则:(1)用R 去除给出的十进制数的小数部分,取乘积的整数部分作为转换后R 进制小数点后第一位数字; (2)再用R 去乘上一步乘积的小数部分,然后取新乘积的整数部分作为转换后R 进制小数的低一位数字; (3)重复(2)操作,一直到乘积为0,或已得到要求精度数位为止。
单片机相关文章:
单片机相关文章:
单片机相关文章:
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一没有更多推荐了,
不良信息举报
举报内容:
用51单片机汇编语言,编写“键控加减一”的程序
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!已解决问题
单片机汇编语言中 CY AC OV 分别是什么意思?
提问时间: 04:38:24
单片机汇编语言中CYACOV分别是什么意思?
浏览次数:5949
该答案已经被保护
2;32的余数就是要测试的位;源操作数OPS必须是8位立即数或者是与目的操作数等长的16&#47.从这个最低位向地址高端每位依次增量.在指令中:MOVEAX之间,有符号源操作数就指示要测试的位,用于指定要测试的位,OPS----功能.举例,5,则源操作数除以16&#47.如果目的操作数是寄存器,向地址代低端每位依次减量,它在0-15&#47:BTOPD;CF,用于指定要测试的数据BT指令格式:目的操作数OPD中由源操作数OPS指定的位送CF标志说明;32位通用寄存器;EAX=HBTEAX,EAX=H注意.此时,这部分存储器数据作为一个2G-1~-2G长的位串,目的操作数OPD只能是16&#47:如果目的操作数是存储单元,则该单元的最低位为0;32位通用寄存器或存储单元;EAX的D5位=1--&gt:1。
答案创立者
以企业身份回答&
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题

我要回帖

更多关于 单片机汇编语言教程 的文章

 

随机推荐