单片机学习过程中需要布鲁姆掌握学习理论哪些

您的举报已经提交成功,我们将尽快处理,谢谢!
买一块实验板,再按教程做实验,从51系列开始学比较容易入门。
一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个...
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'单片机学习中几个不易掌握的概念
14:44:38&&&来源:diangon &&
开始学习知识,因单片机的内容比较抽象,相对电子爱好者已熟悉的模拟电路、数字电路,单片机中有一些新的概念,这些概念非常基本以至于一般作者不屑去谈,教材自然也不会很深入地讲解这些概念,但这些内容又是学习中必须要理解的,下面就结合作者的学习、教学经验,对这些最基本概念作一说明,希望对自学者有所帮助。
  &一、总线:
   我们知道,一个电路总是由通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
  &二、数据、地址、指令:
   之所以将这三者放在一起,是因为这三者的本质都是一样的──数字,或者说都是一串&0&和&1&组成的序列。换言之,地址、指令也都是数据。
   指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。
   地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。
   数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。&
方式字或控制字(如MOV TMOD,#3),3即是控制字。&
常数(如MOV TH0,#10H)10H即定时常数。&
实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于的字形码,也是实际输出的值。&
   理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
  &三、P0口、P2口和P3的第二功能用法:
   初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上&不能作为通用I/O口使用&也并不是&不能&而是(使用者)&不会&将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常这会导致系统的崩溃(即死机)。
  &四、程序的执行过程
   单片机在通电复位后8051内的程序计数器(PC)中的值为&0000&,所以程序总是从&0000&单元开始执行,也就是说:在系统的ROM中一定要存在&0000&这个单元,并且在&0000&单元中存放的一定是一条指令。
  &五、堆栈:
   堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的&先进后出,后进先出&,并且堆栈有特殊的数据传输指令,即&PUSH&和&POP&,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的浑乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
  &六、单片机的开发过程
   这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编缉器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:
表1:源程序
ORG 0000H&&
LJMP START&&
ORG 040H&&
START: MOV SP,#5FH& ;设堆栈&
LOOP: NOP&&
LJMP LOOP& ;循环&
END& ;结束&
02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43&
   表1为源程序。
   表2是汇编后得到的HEX文件。
   表3是由HEX文件转换成的目标文件,也就是最终写入EPROM的文件,它由编程器转换得到,也可以由HEXBIN一类的程序转换得到。学过手工汇编者应当不难找出表3与表1的一一对应关系,值得注意的是从02 00 40后开始的一长串&FF&,直到75 81,这是由于伪指令:ORG 040H造成的结果。
  &七、仿真、仿真机
   仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务,一般产品开发过程中都要进行仿真,仿真的主要目的是进行软件调试,当然借助仿真机,也能进行一些硬件排错。
   一块单片机应用电路板包括单片机部份及为达到使用目的而设计的应用电路,仿真就是利用仿真机来代替应用电路板(称目标机)的单片机部份,对应用电路部份进行测试、调试。仿真有CPU仿真和ROM仿真两种,所谓CPU仿真是指用仿真机代替目标机的CPU,由仿真机向目标机的应用电路部份提供各种信号、数据,进行调试的方法。
   这种仿真可以通过单步运行、连续运行等多种方法来运行程序,并能观察到单片机内部的变化,便于改正程序中的错误。
   所谓ROM仿真,就是用仿真机代替目标机的ROM,目标机的CPU工作时,从仿真机中读取程序,并执行。这种仿真其实就是将仿真机当成一片EPROM,只是省去了擦片、写片的麻烦,并没有多少调试手段可言。通常这是二种不同类型的仿真机,也就是说,一台仿真机不能既做CPU仿真,又做ROM仿真。可能的情况下,当然以CPU仿真好。
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
单片机相关资源
电子爱好者相关资源
元器件相关资源
编辑:什么鱼
本文引用地址:
本周热门资源推荐
EEWORLD独家订阅今日头条
当前位置:>>>单片机学习应用六大重要部分
单片机学习应用六大重要部分
发布时间:
来源:中国自动化网
深圳信盈达,专业为个人和企业提供嵌入式培训、嵌入式解决方案!
技术交流& 找杨工 Q
一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为
一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,
它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要
的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多
得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部
接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据
,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控
制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)
。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部
存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电
信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总
  二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的——数字
,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯
片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片
机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地
址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址
单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应
用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
  1?地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
  2?方式字或控制字(如MOV TMOD,#3),3即是控制字。
  3?常数(如MOV TH0,#10H)10H即定时常数。
  4?实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行
指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的
  理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执
  三、P0口、P2口和P3的第二功能用法:初学时往往对P0口、P2口和P3口的第二功能用法迷惑不
解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第
二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微片理机外接
RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到
MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用
I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指
令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使
用者不会这么去做,因为这通常会导致系统的崩溃。
  四、程序的执行过程: 单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,
所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元
,并且在‘0000’单元中存放的一定是一条指令。
  五、堆栈: 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部
RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈
有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP
,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在
原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了
SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就
时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令
,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是
8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,
初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为
一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内
  六、单片机的开发过程: 这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假
设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址
,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,
其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(
如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,
除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就
可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编
程器能够识别这种格式的文件,只要将此文件调入即可写片。
在此,为使大家对整个过程有个认识,举一例说明:
  &&&&&&&& ORG 0000H
  &&&&&&&& LJMP START
&&&&&&&&&&&&&& ORG 040H
START: MOV SP,#5FH ;设堆栈
LOOP: NOP
&&&&&&&&&&&& LJMP LOOP ;循环
 &&&&&  END ;结束
更多详情请登录
技术咨询:杨老师& QQ:&
★这里是【深圳信盈达嵌入式实训学院】,单片机培训、嵌入式ARM培训、linux培训、PCB培训、
FPGA培训,汇编C语言培训、Android培训、数电模电培训
cortex-m3培训!
本文地址:本文地址:
/apply/d_1nsq72m1oqep1_1.html
版权声明:版权归中国自动化网所有,转载请注明出处!
相关技术文章
热门技术前沿
热门技术文章
更多精彩信息看点 请扫描以下二维码二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(8981)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_086074',
blogTitle:'学习单片机第一步:如何将程序(控制思想)下载到单片机中',
blogAbstract:'
单片机是什么,这个问题不需要解释了。解释了就多余了。。它可以加载人的思想,根据人的意愿替代人去完成非常繁琐的事情。
下面看个视频吧,这里演示了,如何将我们要控制LED的思想加载到单片机控制板的过程,一起来看看吧。通过这个视频的演示,你能了解到如何将程序下载到单片机中,让单片机的开发不再神秘,并进入单片机开的第一步:
一定要看哦。。通过这个视频的短短讲解可以收获不小哦。
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:5,
permalink:'blog/static/',
commentCount:7,
mainCommentCount:7,
recommendCount:3,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 掌握需求过程 pdf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信