您的位置 首页 芯闻

重温51单片机

今天在图书馆看来一上午的书。。把51的一点知识顺便记了一下。。。感觉很好。。。尤其是汇编那里。。对学习STM32有帮助。。。时钟片内时钟

今天在图书馆看来一上午的书。。把51的一点常识趁便记了一下。。。感觉很好。。。尤其是汇编那里。。对学习STM32有协助。。。

时钟

片内时钟方法;由XTAL1和XTAL2外接石英晶体和震动电容

片外时钟方法;关于一般的8051,外部时钟由XTAL2直接送到单片机内部,XTAL1应直接接地,并且XTAL2引脚的逻辑电平不是TTL电平,应外接上拉电阻。关于CMOS型单片机,其时钟发生器的信号取自于反相放大器的输入端,因而,外部时钟信号应该从XTAL1引脚输入,而XTAL2需求悬空。

特别功用寄存器区,假如某个特别功用寄存器的地址能够被8整除,那么这个寄存器便能够进行位寻址。在位寻址指令中,能够用“寄存器名.位”“字节地址.位”“位地址”“位称号”

如“B.5”表明寄存器B的第五位。其间引脚p0,p1,p2,p3等都能够位寻址。

单片机的指令时序

拍;振动脉冲的周期,为51系列的最小时序单元。时钟周期;时钟周期是单片机CPU中的最基本的时刻单元在一个时刻周期内,CPU仅完结一个最基本的动作,拍经过二分频,便可得到单片机的时钟信号,由所以二分频,因而一个时钟周期包括两个拍。

机器周期;一个机器周期由6个时钟周期构成,也便是12个拍组成。指令周期;指令周期履行一条指令所需求的时刻,不同指令需求不同的指令周期。

掉电维护;

1当检测到电源下降时,触发外部中止2在中止服务子程序中将外部的RAM中的有用数据送到内部的RAM中维护,然后对电源操控寄存器PCON进行设置3切换备用电源,备用电源只为单片机内部RAM和专用寄存器供给保持电流,是这些重要数据不丢掉,而整个外部电路因为电源的中止而中止作业,时钟电路中止震动,CPU也中止作业。4当电源康复时,备用电源也要持续作业10ms左右,以确保外部电路到达安稳状况。

专用寄存器

程序计数器PC

相当于一个转移工,用来不断的将指令转移过来履行,由16个触发器构成,是一个16位二进制的程序地址寄存器,程序计数器PC的编码规模是0000H~FFFFH,寻址规模为64KB.

累加器A8位二进制存储器

寄存器B8位二进制存储器一般和A一同运用,用于乘除法操作指令。

程序状况寄存器PSW8位存储器

数据指针DPTR用于数据存储器的操作,由8位寄存器DPH和DPL组合而成,是一个典型的16位寄存器。DPH为数据指针的高8位,DPL为数据指针的低8位。

汇编语言;

开端伪指令ORG格局:[标号:] ORG 16位地址

在这,16位地址便是汇编程序块或许数据块寄存的开端地址,假如省掉ORG伪指令,则单片机程序代码从默许的0000H单元块开端寄存。

字节保存伪指令DB格局[标号:] DB8位字节数据表其间8位字节数据表能够是一个或许多个字节数据、字符串或许表达式。在数据表中各项用‘,’分隔,一个数据项占一个存储单元,一切的数据项从标号指定的地址单元开端,将数据表中的字节数据按次序顺次保存。数据项能够选用十进制、二进制、或许十六进制数据表明。例如

ORG1100H

DATA1:DB51H,67H,61,90H

DATA2:DB110B,‘B’

字节数据将从1100H地址进行保存字节数据。

内存单元

内容

内存单元

内容

1100H

51H

1103H

90H

1101H

67H

1104H

110B=06H

1102H

61=33H

1105H

‘B’=42H

字保存伪指令DW用于单片机内存中保存双字节数据表,只能对程序存储器进操作。

格局[标号:]DW16位字数据表

其间能够是一个或许多个字节数据、字符串或许表达式。在数据表中各项用‘,’分隔,一个数据项占一个存储单元,一切的数据项从标号指定的地址单元开端,将数据表中的字节数据按次序顺次保存。需求留意的是,16位数据要占用两个单元的存储器,高8位数据存储到低地址字节,低八位数据存入到高地址字节。例如;

ORG1000H

DATA1:DW27AEH, 5CH

字节数据从1000H地址开端保存字数据。

内存单元

内容

内存单元

内容

1000H

21H

1002H

00H

1001H

AEH

1003H

5CH

空间预留伪指令DS用于在单片机内存中划分出必定的存储空间用作备用区域,只能对程序存储器进行操作,[标号:]DS表达式这儿,表达式表达了从标号指定的地址单元开端,保存存储器单元的个数。

ORG1100H

BUF:DS08H

即从地址1100H开端划分出8个内存单元,从1108H之后的单元才能够进行其他操作。

位变量伪指令BIT用于给位地址界说一个字符称号

字符称号BIT位地址

如;P1BITP2.4

P2BITP2.6

在这儿,位地址P2.4和P2.6赋给P1和P2 ,尔后,遇到P1,P2的当地,就相当于运用P2.4和P2.6。

单片机指令的寻址方法

当即寻址直接寻址寄存器寻址寄存器直接寻址变址寻址相对寻址和位寻址

当即寻址相当于直接给出操作数,此刻的操作数成为当即数。前面用“#”来标明

十六进制结束用H十进制结束用D八进制结束用O二进制结束用B

典型寻址

MOVA ,#37H//把当即数37H这个数自身送到累加器A中,指令操作码74H,操作数37H

MOVDPTR,#1122H//其间1122H为16位当即数,该指令将当即数的高8位11H送入到DPH中,将低8位22H送入到DPL中,操作码是90H,操作数是1122H。

直接寻址便是将操作数寄存的地址告知指令单片机中能够直接寻址的两类存储空间,1片内RAM的低128个字节单元其地址00H~7FH.2特别功用寄存器,其直接地址也能够用特别功用寄存器的符号称号表明,直接寻址是拜访特别功用寄存器的仅有方法。

例如

MOVA,2EH

这儿,“2EH”便是直接寻址的地址,该指令的操作码是E5H,功用是把内部RAM地址为2EH中的内容传给累加器A。

寄存器寻址便是告知指令操作数所寄存的寄存器,此刻寄存器的内容便是操作数。因为寄存器存坐落CPU内部,所以寄存器寻址速度比其他几种方法快。

MOVA,R1//便是将寄存器R1的数据传送给累加器A

寄存器直接寻址相当于绕了一个大弯,此刻数据寄存到RAM中,而该RAM的地址放在寄存器中,这样经过拜访寄存器来取得RAM中的操作数的寻址方法便是寄存器直接寻址。

单片机能够运用此方法寻址的空间:

1片内RAM的低128字节单元,此刻需求R0,R1作为直接寻址的寄存器

2片外RA M,假如用R0,R1作为直接寻址的寄存器,能够寻址256个单元。假如选用16位的DPTR作为直接寻址的寄存器,能够寻完整个外部RAM 64KB地址空间。

在寻址指令中,寻址的寄存器钱需求加“@”标明符,这样就和寄存器寻址区分隔。

变址寻址供给了16位地址的寻址才能,它选用基址寄存器加变址寄存器方法来寻址,其间基址寄存器为DPTR或许PC,变址寄存器为累加器A,用于寄存地址偏移量。

变址寻址的两种方法;

MOVA,@A+DPTR//功用是将累加器A的内容和数据指针DPTR的内容相加构成操作数的地址,即程序存储器的16位地址。

MOVA,@A+PC//功用是将累加器A的内容和PC的内容相加构成操作数的地址,即程序存储器的16位地址。

相对寻址是依据指定地址的偏移量,然后从当时PC值跳转到偏移量所指向的地址的方法,这儿的地址偏移量为带符号的8位二进制数,其取值规模是-128~+127,因而相对寻址能够寻址当时的PC的-128~+127之间的某段程序存储器。

例如SJMP33H//本指令占用两个字节,因而PC指针的当时值为PC+2.地址偏移量是33H,则程序跳转的地址为PC+2+33H.

位寻址是特别为位操作区域供给的寻址方法,在指令中给出位地址即可。

51单片机中,能够位寻址的区域;

1片内RAM的20H~2FH单元,共16*8=128位,能够直接运用位地址来表明,例如,20H单元的0~7位的位地址是00H~07H,也能够运用RAM地址加序位号表明,例如2AH.1表明2AH单元的D1位。

2可位寻址的特别功用寄存器相应位,这些为均有特定的称号,因而能够直接选用位称号来表明,或许选用寄存器符号加位序号表明,例如PSW.3表明PSW寄存器中的D3位。

典型表明;

MOVC,2AH.5//把地址2AH中的第六位D5,即2AH.5的值(0或1)传送到位累加器CY中。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/258491.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部