单片机学习要点Word格式文档下载.docx
- 文档编号:22431693
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:35.92KB
单片机学习要点Word格式文档下载.docx
《单片机学习要点Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机学习要点Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
如:
音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。
在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
7.单片机在汽车设备领域中的应用
单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
编辑本段学习应用六大重要部分
单片机学习应用的六大重要部分
一、总线:
我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?
这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。
器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。
在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
二、数据、地址、指令:
之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。
换言之,地址、指令也都是数据。
指令:
由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。
地址:
是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。
数据:
这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
1?
地址(如MOVDPTR,1000H),即地址1000H送入DPTR。
2?
方式字或控制字(如MOVTMOD,#3),3即是控制字。
3?
常数(如MOVTH0,#10H)10H即定时常数。
4?
实际输出值(如P1口接彩灯,要灯全亮,则执行指令:
MOVP1,#0FFH,要灯全暗,则执行指令:
MOVP1,#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口使用。
你完全可以在指令中按排一条SETBP3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。
四、程序的执行过程:
单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:
在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
五、堆栈:
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。
由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOVSP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。
一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。
不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。
当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
六、单片机的开发过程:
这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。
在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。
如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。
然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。
运行正确后,就可以写片(将程序固化在EPROM中)。
在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。
在此,为使大家对整个过程有个认识,举一例说明:
单片机试验板
ORG0000H
LJMPSTART
ORG040H
START:
MOVSP,#5FH;
设堆栈
LOOP:
NOP
LJMPLOOP;
循环
END;
结束
编辑本段单片机学习
目前,很多人对汇编语言并不认可。
可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。
不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。
如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!
可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者,因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的。
单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序,毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。
还有就是在单片机编程中C语言虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10%到20%,所以用什么语言编写程序是要看具体用在什么场合下。
总的来说做单片机编程要灵活使用汇编语言与C语言,让单片机的强大功能以最高是效率展示给用户。
以8051单片机为例讲解单片机的引脚及相关功能;
《单片机引脚图》
40个引脚按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
注:
用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。
⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根,
⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)
5.P3口第二功能
P30RXD串行输入口
P31TXD串行输出口
P32INT0外部中断0(低电平有效)
P33INT1外部中断1(低电平有效)
P34T0定时计数器0
P35T1定时计数器1
P36WR外部数据存储器写选通(低电平有效)
P37RD外部数据存储器读选通(低电平有效)
编辑本段单片机指令功能一览表
一、传送操作
助记符代码说明
MOVA,RnE8~EF寄存器A
MOVA,directE5dircet直接字节送A
MOVA,@RiER~E7间接RAM送A
MOVA,#data74data立即数送A
MOVRn,AF8~FFA送寄存器
MOVRn,dircetA8~AFdircet直接字节送寄存器
MOVRn,#data78~7Fdata立即数送寄存器
MOVdircet,AF5dircetA送直接字节
MOVdircet,Rn88~8Fdircet寄存器送直接字节
MOVdircet1,dircet285dircet1dircet2直接字节送直接字节
MOVdircet,@Ro86~87间接RAM送直接字节
MOVdircet,#data75dircetdata立即数送直接字节
MOV@Ri,AF6~F7A送间接RAM
MOV@Ri,#data76~77data直接字节送间接RAM
MOV@Ri,#data76~77data立即数送间接RAM
MOVDPTR,#data1690data15~816位常数送数据指针
data7~0
MOVCA,@A+DPTR93由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVCA,@A+PC83由((A)+(PC));
寻址的程序存贮器字节送A
MOVXA,@RiE2~E3送外部数据(8位地址)送A
MOVXA,@DPTRE0送外部数据(16位地址)送A
MOVX@Ri,AF2~F3A送外部数据(8位地址)
MOVX@DPTR,AF0A送外部数据(16位地址)
PUSHdircetC0dircet直接字节进栈,SP加1
POPdircetD0dircet直接字节退栈,SP减1
XCHA,RnC8~CF交换A和寄存器
XCHA,dircetC5dircet交换A和直接字节
XCHA,@RiC6~C7交换A和间接RAM
XCHA,@RiD6~D7交换A和间接RAM的低位
SWAPAC4
二、算术操作
(A的二个半字节交换)
ADDA,Rn28~2F寄存器加到A
ADDA,dircet25dircet直接字节加到A
ADDA,@Ri26~27间接RAM加到A
ADDA,#data24data立即数加到A
ADDA,Rn38~3F寄存器和进位位加到A
ADDA,dircet35dircet直接字节和进位位加到A
ADDA,@Ri36~37间接字节和进位位加到A
ADDA,data34data立即数和进位位加到A
ADDA,Rn98~9FA减去寄存器和进位位
ADDA,dircet95dircetA减去直接字节和进位位
ADDA,@Ri36~37间接RAM和进位位加到A
SUBBA,Rn98~9FA减去寄存器和进位位
SUBBA,dircet95dircetA减去直接字节和进位位
SUBBA,@Ri96~97A减去间接RAM和进位位
SUBBA,#data94dataA减去立即数和进位位
INCA04A加1
INCRn08~0F寄存器加1
INCdircet05dircet直接字节加1
INC@Ri06~07间接RAM加1
DECA14A减1
DECRn18~1F寄存器减1
DECdircet15dircet直接字节减1
DEC@Ri16~17间接RAM减1
INCDPTRA3数据指针加1
MULABA4A乘以B
DIVAB84A除以B
DAAD4A的十进制加法调整
三、逻辑操作
ANLA,Rn58~5F寄存器“与”到A
ANLA,dircet55dircet直接字节“与”到A
ANLA,@Ri56~57间接RAm“与”到A
ANLA,#data54data立即数“与”到A
ANLdircetA52dircetA“与”到直接字节
ANLdircet,#data53dircetdata立即数“与”到直接字节
ORLA,Rn48~4F寄存器“或”到A
ORLA,dircet45dircet直接字节“或”到A
ORLA,@Ri46~47间接RAM“或”到A
ORLA,#data44data立即数“或”到A
ORLdircet,A42dircetA“或”到直接字节
ORLdircet,#data43dircetdata立即数“或”到直接字节
XRLA,Rn68~6F寄存器“异或”到A
XRLA,dircet65dircet直接字节“异或”到A
XRLA,@Ri66~67间接RAM“异或”到A
XRLA,#data64data立即数“异或”到A
XRLdircetA62dircetA“异或”到直接字节
XRLdircet,#data63dircetdata立即数“异或”到直接字节
CLRAE4清零
CPLAF4A取反
RLA23A左环移
RLCA33A通过进位左环移
RRA03A右环移
RRCA13A通过进位右环移
四、控制程序转移
ACALLaddr11*1addr(a7~a0)绝对子程序调用
LCALLaddr1612addr(15~8)长子程序调用
addr(7~0)
RET22子程序调用返回
RETIaddr1132中断调用返回
AJMPaddr11△1addr(a7~a6)绝对转移
LJMPaddr1602addr(15~8)长转移
SJMPrel80rel短转移,相对转移
JMP@A+DPTR73相对于DPTR间接转移
JZrel60relA为零转移
JNZrel70relA为零转移
CJNEA,dircet,relB5dircetrel直接字节与A比较,不等则转移
CJNEA,#data,relB4datarel立即数与A比较,不等则转移
CJNEA,Rn,#data,relB8~BFdatarel立即数与寄存器比较,不等则转移
CJNE@Ri,#data,relB6~B7datarel立即数与间接RAM比较,不等则转移
DJNZRn,relD8~DFrel寄存器减1,不为零则转移
DJNZdircet,relB5dircetrel直接字节减1,不为零则转移
NOP00空操作
*=a10a9a8l
△=a10a9a80
五、布尔变量操作
CLRCC3清零进位
CLRbitC2清零直接位
SETBCD3置位进位
SETBbitD2置位直接位
CPLCB3进位取反
CPLbitB2直接位取反
ANLC,bit82dit直接数“与”到进位
ANLC,/bitB0直接位的反“与”到进位
ORLC,bit72bit直接位“或”到进位
ORLC,/bitA0bit直接位的反“或”到进位
MOVC,bitA2bit直接位送进位
MOVbit,C92bit进位送直接位
JCrel40rel进位位为1转移
JNCrel50rel进位位为0转移
JBbit,rel20bitrel直接位为1相对转移
JNBbit,rel30bitrel直接位为0相对转移
JBCbit,rel10bitrel直接位为1相对转移,然后清零该位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 学习 要点