单片机程 MCS-51系列) 为目的数。为了简单,我这里只讲整数部分的转换。这种转换叫做除基取余法,具体做法是用欲转换数 制的基数去除十进制数的整数部分,第一次除所得余数为目的数的最低位,把得到的商再除以该基数 所得余数为目的数的次低位,依次类推,继续上面的过程,直至商位为0,此时所得余数为目的数的最 高位 比如:将十进制数53D转换成二进制数为53D=110101B。 2L53 2.二进制数与十六进制数之间的转换 四位二进制共有16种组合,而这16种组合正好与十六进制数的16个基数一致,所以每4位二 进制数对应一位十六进制数,我们只要把二进制数的整数部分自右向左每4位一组,最后不足4位的用 0补足;小数部分自左向右每4位一组,最后不足4位的在右面补0,再将每4位二进制数对应的十六 进制数写出即可。相反,如果将十六进制数转换为二进制数只需将每位十六进制数写成对应的4位二进 制数即可。 比如:将1101011B转换成十六进制数为D6H,再比如:将FOFH转换成二进制数为111100011 十进制数 进制数 十六进制数 0000 01234 0001 0010 012 001 0100 0101 0111 1000 9012345 1010 1011 6789ABC 1101 D 1110 E 1111 10000 上面的表格就是二进制数、十进制数和十六进制数之间的对应关系 三.立即数的写法 通过前面一小节的讲解,我们已经懂了,MVR7,#250和MOVR7,#OFH中#250和#0FFH原来 是十进制数250D和十六进制数FFH的区别,在单片机中,通常我们把这个数称之为立即数,那么如果 我在编写指令时把立即数#0FFH写成二进制数(即11111或用十进制写法(255)是不是可以呢? 当然可以,立即数既可以是二进制数,也可以是十进制数或十六进制数。不过有一点再重复一遍:那就 是当用十六进制格式表示一个立即数时,如果高位的数字为“A-F”时,高位前面要加上个“0”,请大 家务必记住了 这里再讲一下,关于数制以及二进制、十进制和十六进制数的关系,大家可以在以后的实践中慢 慢去理解和掌握,如果您一时记不住,千万不要刻意地去死记硬背!下面让我们来讨论另一个问题 单片机之友QQ:280919249
单片机教程 (MCS-51 系列) 24 为目的数。为了简单,我这里只讲整数部分的转换。这种转换叫做除基取余法,具体做法是用欲转换数 制的基数去除十进制数的整数部分,第一次除所得余数为目的数的最低位,把得到的商再除以该基数, 所得余数为目的数的次低位,依次类推,继续上面的过程,直至商位为 0,此时所得余数为目的数的最 高位。 比如:将十进制数 53D 转换成二进制数为 53D=110101B。 2└53 2└26……1 2└13……0 2└6……1 2└3……0 2└1……1 0 ……1 2. 二进制数与十六进制数之间的转换 四位二进制共有 16 种组合,而这 16 种组合正好与十六进制数的 16 个基数一致,所以每 4 位二 进制数对应一位十六进制数,我们只要把二进制数的整数部分自右向左每 4 位一组,最后不足 4 位的用 0 补足;小数部分自左向右每 4 位一组,最后不足 4 位的在右面补 0,再将每 4 位二进制数对应的十六 进制数写出即可。相反,如果将十六进制数转换为二进制数只需将每位十六进制数写成对应的 4 位二进 制数即可。 比如:将 1101011B 转换成十六进制数为 D6H,再比如:将 F0FH 转换成二进制数为 111100001111B。 十进制数 二进制数 十六进制数 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10 上面的表格就是二进制数、十进制数和十六进制数之间的对应关系。 三. 立即数的写法 通过前面一小节的讲解,我们已经懂了,MOV R7,#250 和 MOV R7,#OFFH 中#250 和#0FFH 原来 是十进制数 250D 和十六进制数 FFH 的区别,在单片机中,通常我们把这个数称之为立即数,那么如果 我在编写指令时把立即数#0FFH 写成二进制数(即 11111111)或用十进制写法(255)是不是可以呢? 当然可以,立即数既可以是二进制数,也可以是十进制数或十六进制数。不过有一点再重复一遍:那就 是当用十六进制格式表示一个立即数时,如果高位的数字为“A-F”时,高位前面要加上个“0”,请大 家务必记住了。 这里再讲一下,关于数制以及二进制、十进制和十六进制数的关系,大家可以在以后的实践中慢 慢去理解和掌握,如果您一时记不住,千万不要刻意地去死记硬背!下面让我们来讨论另一个问题: 单片机之友 QQ:280919249
单片机程 MCS-51系列) 四.存储器的地址 什么是存储器的地址,地址和数据又有什么关系呢?这个问题往往让初学者非常的难以理解,既 然单片机存储器内存放的是数据,为什么还要有地址的概念?让我们从生活中的一个例子谈起:大家都 知道寄信是怎么回事吧!我们要寄一封信就必须写好信的内容,然后在信的封面写上详细地址,邮局才 能按地址把它寄出去:我们给单片机送数也一样,除了要给出立即数(犹如信的内容),还必须知道这 个数送达的地址(犹如信的地址或邮政编码),所以就必须给每个寄存器(即半导体存储器)都规定不 同的地址,只不过在单片机中地址的编码也是用数字来表示的,那么单片机中有多少个寄存器呢?它们 的地址又是如何规定的呢 前面我们学过,单片机有两种存储器,即只读存储器ROM和随机存储器RAM,它们都被规定了各 自的地址,我们把它称做寻址空间。既然是空间,就必然有一个范围的概念,接下来就让我们看看MCS-51 单片机中程序存储器ROM的寻址范围 内部ROM的寻址范围 89C51的内部有4K的 FLASH ROM空间,其寻址范围为000H-0FFH(16*16*16),这4K的ROM空 间就是用来存放我们为单片机编写的程序的,单片机执行指令时就是一条一条地顺序地从ROM中寻找指 令进行执行。了解了ROM的寻址范围,让我们接着来看另一种存储器:内部RAM的寻址范围 单片机的内部RAM共有256个字节,寻址范围为00H-FFH(即16*16),它被分为两个部分:第 部分从O0H7FH共128个字节是真正的RAM区,可以用来读写各种数据,在这128个字节中,又分成三 个区域:第一个区域00-1FH安排了4组工作寄存器,每组用8个字节,共32个字节,分别为R0R7, 当然在同一时刻,只能用其中的一组工作寄存器,怎么来控制它,就要用程序状态字PWS中的RS0、RS1 两位,(这我们后面再讲):第二个区域20H2FH共16个字节除了可以作为一般的RAM单元读写外,还 可以对每个字节的每一位(即每一个抽屉中的每一个小盒子)进行操作,并且对这些位都规定了固定的 位地址:从20H单元的第0位开始到2FH单元的第7位结束共128位:第三个区域就是一般的RAM单元 地址为30H-7FH,共80个字节:第二部分从80H-FFH是专门用于特殊功能寄存器(SFR)的,89C51共 用21个特殊功能寄存器(这些我们都将在下一课中讲解),它们每个也都有8位,这部分的128个字节 并没有全部用完 为了加深印象,大家可以打开DBUG8051软件看一下它们的内部组成 五,本课总结 本课主要讲述了数据与地址两个概念,其中第一部分的内容在学习数字电路时大家应该学过,我 这里把与单片机有关的内容再讲解一下,目的是希望各位能掌握这些知识,因为它对我们学习单片机是 非常有用的:地址也是单片机中一个非常重要的概念,在我们以后的学习中,大家会发现,每一个存储 器都与地址有关 六.第7课习题 1.二进制、十进制、十六进制的规则分别是什么? 2.什么叫立即数? 3.单片机RAM的寻址空间为多少?它包括哪两个部分? 4.单片机ROM的寻址空间为多少? 5.把下面的立即数转换成二进制: 100:250;100H:4AH;FFH 6.把下面的立即数转换成十进制: 0001;0011;1111:AOH:FFH 7.把下面的立即数转换成十六进制: 100;255;;00111100:11110101 单片机之友QQ:280919249
单片机教程 (MCS-51 系列) 25 四. 存储器的地址 什么是存储器的地址,地址和数据又有什么关系呢?这个问题往往让初学者非常的难以理解,既 然单片机存储器内存放的是数据,为什么还要有地址的概念?让我们从生活中的一个例子谈起:大家都 知道寄信是怎么回事吧!我们要寄一封信就必须写好信的内容,然后在信的封面写上详细地址,邮局才 能按地址把它寄出去;我们给单片机送数也一样,除了要给出立即数(犹如信的内容),还必须知道这 个数送达的地址(犹如信的地址或邮政编码),所以就必须给每个寄存器(即半导体存储器)都规定不 同的地址,只不过在单片机中地址的编码也是用数字来表示的,那么单片机中有多少个寄存器呢?它们 的地址又是如何规定的呢? 前面我们学过,单片机有两种存储器,即只读存储器 ROM 和随机存储器 RAM,它们都被规定了各 自的地址,我们把它称做寻址空间。既然是空间,就必然有一个范围的概念,接下来就让我们看看 MCS-51 单片机中程序存储器 ROM 的寻址范围: 1. 内部 R0M 的寻址范围 89C51 的内部有 4K 的 FLASH ROM 空间,其寻址范围为 000H-0FFH(16*16*16),这 4K 的 ROM 空 间就是用来存放我们为单片机编写的程序的,单片机执行指令时就是一条一条地顺序地从 ROM 中寻找指 令进行执行。 了解了 ROM 的寻址范围,让我们接着来看另一种存储器:内部 RAM 的寻址范围 单片机的内部 RAM 共有 256 个字节,寻址范围为 00H-FFH(即 16*16),它被分为两个部分:第一 部分从 00H-7FH 共 128 个字节是真正的 RAM 区,可以用来读写各种数据,在这 128 个字节中,又分成三 个区域:第一个区域 00H-1FH 安排了 4 组工作寄存器,每组用 8 个字节,共 32 个字节,分别为 R0-R7, 当然在同一时刻,只能用其中的一组工作寄存器,怎么来控制它,就要用程序状态字 PWS 中的 RS0、RS1 两位,(这我们后面再讲);第二个区域 20H-2FH 共 16 个字节除了可以作为一般的 RAM 单元读写外,还 可以对每个字节的每一位(即每一个抽屉中的每一个小盒子)进行操作,并且对这些位都规定了固定的 位地址:从 20H 单元的第 0 位开始到 2FH 单元的第 7 位结束共 128 位;第三个区域就是一般的 RAM 单元, 地址为 30H-7FH,共 80 个字节;第二部分从 80H-FFH 是专门用于特殊功能寄存器(SFR)的,89C51 共 用 21 个特殊功能寄存器(这些我们都将在下一课中讲解),它们每个也都有 8 位,这部分的 128 个字节 并没有全部用完。 为了加深印象,大家可以打开 DBUG8051 软件看一下它们的内部组成。 五. 本课总结 本课主要讲述了数据与地址两个概念,其中第一部分的内容在学习数字电路时大家应该学过,我 这里把与单片机有关的内容再讲解一下,目的是希望各位能掌握这些知识,因为它对我们学习单片机是 非常有用的;地址也是单片机中一个非常重要的概念,在我们以后的学习中,大家会发现,每一个存储 器都与地址有关。 六.第 7 课习题 1.二进制、十进制、十六进制的规则分别是什么? 2.什么叫立即数? 3.单片机 RAM 的寻址空间为多少?它包括哪两个部分? 4.单片机 ROM 的寻址空间为多少? 5.把下面的立即数转换成二进制: 100;250;100H;4AH;FFH 6.把下面的立即数转换成十进制: 0001;0011;1111;A0H;FFH 7.把下面的立即数转换成十六进制: 100;255;;00111100;11110101 单片机之友 QQ:280919249
单片机程 MCS-51系列) 第八课单片机的内部结构(六) 前面我们已经讲过,R7,R6是工作寄存器,PO,P1,P2,P3是并行口,那么单片机中还有些什 么东西?它们的结构又是怎么样的呢?这就是本课要讨论的问题。 .单片机的特殊功能寄存器 看第三课的单片机内部结构图,在单片机中,除了前面介绍的RAM,ROM,P0-P3和CPU外,方框 内的还有许多其他的东西它们被称为特殊功能寄存器,英文简写SFR,下表例出的就是MCS-51单片机 中几个常用的特殊功能寄存器。这一课我们先来介绍几个 二.几个常用的特殊功能寄存器 1.累加器ACC 通常用A表示,它是一个什么东西呢?我们知道单片机在做运算时它的中间结果需要放在某个地 方,这个地方就是累加器,它的名字很特殊,功能也很特殊,几乎所有的运算类指令都离不开它。 2.寄存器B 寄存器在做乘法时用来存放一个乘数,在做除法时用来存放一个除数,不做乘除法时随你怎么 用 3.程序状态字PSW 它是一个很重要的东西,里面放了CPU工作时的很多状态,知道它就可以了解CPU当前的工作状 态,它有点象平时看书用的目录,我们浏览它就可以了解一本书的内容。它是一个8位的寄存器,用到 了其中的7位。其格式如下 歐十叶 下面来逐位介绍它的功能: (1)CY:进位标志位 MS-51是一种8位的单片机,它的运算结果只能表示到2(即0-255),但我们有时候的运算结 果要超过255,怎么办呢?就要用CY位。例如:79H+87H(01111001+01010111)=10000000这里的 “1”就进到了CY中去了。 (2)AC:半进位标志位 当D3位向D4位进位/借位时,AC=1,通常用于十进制调整运算中 (3)FO:用户自定义标志位 由编程人员自行决定,什么时候用,什么时候不用 (4)RS1、RSO:工作寄存器组选择位 RS 工作寄存器组 0组(00H-07H) 1组(08H-OFH) 2组(10H-17H) 3组(18H-1FH) 前面讲到单片机共有四个工作寄存器组(0组-3组),它们就是由RS1,RS0来控制,这两位就在 这里,它共有四种组合状态,看上面的表格:每个工作寄存器组有8个字节,分别记为R0R7,当然在 某一时刻,CPU只使用其中的一组。 假设PSW为“10”(即00010001),那么RS1=1,RS0=0,则用到了第2组寄存器组(地址10H-17H), ROR7即为10H-17H,用DUBG8051软件输入数值,看看内部RAM中地址为10H-17H中的值是不是为输入 (5)0V:溢出标志位 什么时候溢出,我们讲到定时器时再研究 单片机之友QQ:280919249
单片机教程 (MCS-51 系列) 26 第八课 单片机的内部结构(六) 前面我们已经讲过,R7,R6 是工作寄存器,P0,P1,P2,P3 是并行口,那么单片机中还有些什 么东西?它们的结构又是怎么样的呢?这就是本课要讨论的问题。 一. 单片机的特殊功能寄存器 看第三课的单片机内部结构图,在单片机中,除了前面介绍的 RAM,ROM,P0-P3 和 CPU 外,方框 内的还有许多其他的东西它们被称为特殊功能寄存器,英文简写 SFR,下表例出的就是 MCS-51 单片机 中几个常用的特殊功能寄存器。这一课我们先来介绍几个: 二.几个常用的特殊功能寄存器 1.累加器 ACC 通常用 A 表示,它是一个什么东西呢?我们知道单片机在做运算时它的中间结果需要放在某个地 方,这个地方就是累加器,它的名字很特殊,功能也很特殊,几乎所有的运算类指令都离不开它。 2.寄存器 B B 寄存器在做乘法时用来存放一个乘数,在做除法时用来存放一个除数,不做乘除法时随你怎么 用。 3.程序状态字 PSW 它是一个很重要的东西,里面放了 CPU 工作时的很多状态,知道它就可以了解 CPU 当前的工作状 态,它有点象平时看书用的目录,我们浏览它就可以了解一本书的内容。它是一个 8 位的寄存器,用到 了其中的 7 位。其格式如下: D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 0V P 下面来逐位介绍它的功能: (1)CY:进位标志位 MCS-51 是一种 8 位的单片机,它的运算结果只能表示到 2 8 (即 0-255),但我们有时候的运算结 果要超过 255,怎么办呢?就要用 CY 位。例如:79H+87H(01111001+01010111)=1 00000000,这里的 “1”就进到了 CY 中去了。 (2)AC:半进位标志位 当 D3 位向 D4 位进位/借位时,AC=1,通常用于十进制调整运算中。 (3)F0:用户自定义标志位 由编程人员自行决定,什么时候用,什么时候不用。 (4) RS1、RS0:工作寄存器组选择位 RS1 RS0 工作寄存器组 0 0 0 组(00H-07H) 0 1 1 组(08H-0FH) 1 0 2 组(10H-17H) 1 1 3 组(18H-1FH) 前面讲到单片机共有四个工作寄存器组(0 组-3 组),它们就是由 RS1,RS0 来控制,这两位就在 这里,它共有四种组合状态,看上面的表格:每个工作寄存器组有 8 个字节,分别记为 R0-R7,当然在 某一时刻,CPU 只使用其中的一组。 假设 PSW 为“10”(即 00010001),那么 RS1=1,RS0=0,则用到了第 2 组寄存器组(地址 10H-17H), RO-R7 即为 10H-17H,用 DUBG8051 软件输入数值,看看内部 RAM 中地址为 10H-17H 中的值是不是为输入 值。 (5) 0V:溢出标志位 什么时候溢出,我们讲到定时器时再研究。 单片机之友 QQ:280919249
单片机歆程 MCS-51系列) (6)P:奇偶检验位 每次运算结束后若A中二进制数“1”的个数为奇数,则P=1,否则P=0。例:某运算结果是58H (01011000),显然“1”的个数为奇数,所以P=1 4.DPTR(DPH,DPL):数据指针 数据指针是一个16位的寄存器,我们可以用它来访问外部RAM,也可以访问外部ROM中的表格, 具体应用以后再讲。 5.SP:堆栈指针: 让我们先来理解一下堆栈是什么意思?你在家洗碗吗?我们洗好碗之后,是怎么放的呢?一般总 是先洗的放在下面,晚洗的放在上面,然后用的时候呢,总是晚放上去的先用,先放上去的后用:如果 你不洗碗不要紧,知道码头上仓库里堆的货物吗?一般也是先进去的后出来,而后进去的先出来,这种 符合“先进后出,后进先出”存放规则的现象我们就把它叫做“堆栈”。(其实栈在中文中的意思就是码 头)。 在单片机中,我们可以在内部RAM中构造出(注意⑧:是可以构造)这样一个区域,这个区域存 放数据的规则就符合堆栈中“先进后出,后进先出”的原则。为什么要有这样一个区域呢?存储器本身 不也同样可以存放数据吗?是的,知道了存储器地址确实可以读出它里面的内容,但如果我们要读出的 是一批数据,每一个数据都要给出一个地址就会很麻烦,为了简化操作就可以利用堆栈的存放方法来读 取数据,具体的应用我们将在十五课中结合具体实验来讲,这里只是让大家先了解一下。那么堆栈在单 片机的什么地方?也就是说把RAM空间的哪一块区域作为堆栈呢?这就不好定了,因为51系列单片机 是一种通用的单片机,每个人的实际需要各不相同,有人需要多一些堆栈,而有人则不需要那么多堆栈 所以 INTEL公司就干脆不分了,把分的权利让给用户(编程者),也就是说我们可以根据自己的需要来 决定,所以单片机中堆栈的位置是可以变化的,而这种变化就体现在SP中值的变化,看下面的图,SP 中的值等于27H不就相当于是一个指针指向27H单元吗?这就是堆栈指针的由来。 31H 31H 30H 第一个数据 26H 26H 25H 25H 24H 24H 当然在MCS-51单片机中,⑧:指针开始所指的位置并非就是数据存放的位置,而是数据存放的前 一个位置。例如一开始堆栈指针是指向27H单元的,那么第一个数据的存放位置就在28H单元中,而不 是27H单元中,这一点请大家注意。 6.电源控制寄存器PCON 单片机在以电池供电的系统中,有时为了节电,我们需要让它尽量降低电源的消耗,所以单片机 就有多种的工作方式,其中一种就是低功耗方式,PCON寄存器就是用来控制单片机进入低功耗方式的, 有关这方面的知识我们将在下一课的课程中详细介绍 三.本课总结 以上几个寄存器只是单片机中最常用的几个SFR,其他的特殊功能寄存器,我们将在具体应用时 再作详细的介绍。 四.第8课习题 1.累加器A的作用是什么 2.什么是堆栈?堆栈存放数据的规则是什么? 3.单片机中有几组工作寄存器?它们的字节地址是什么? 4.简述PSW各位的作用 单片机之友QQ:280919249
单片机教程 (MCS-51 系列) 27 (6) P:奇偶检验位 每次运算结束后若 A 中二进制数“1”的个数为奇数,则 P=1,否则 P=0。例:某运算结果是 58H (01011000),显然“1”的个数为奇数,所以 P=1。 4.DPTR(DPH,DPL):数据指针 数据指针是一个 16 位的寄存器,我们可以用它来访问外部 RAM,也可以访问外部 ROM 中的表格, 具体应用以后再讲。 5.SP:堆栈指针: 让我们先来理解一下堆栈是什么意思?你在家洗碗吗?我们洗好碗之后,是怎么放的呢?一般总 是先洗的放在下面,晚洗的放在上面,然后用的时候呢,总是晚放上去的先用,先放上去的后用;如果 你不洗碗不要紧,知道码头上仓库里堆的货物吗?一般也是先进去的后出来,而后进去的先出来,这种 符合“先进后出,后进先出”存放规则的现象我们就把它叫做“堆栈”。(其实栈在中文中的意思就是码 头)。 在单片机中,我们可以在内部 RAM 中构造出(注意☺:是可以构造)这样一个区域,这个区域存 放数据的规则就符合堆栈中“先进后出,后进先出”的原则。为什么要有这样一个区域呢?存储器本身 不也同样可以存放数据吗?是的,知道了存储器地址确实可以读出它里面的内容,但如果我们要读出的 是一批数据,每一个数据都要给出一个地址就会很麻烦,为了简化操作就可以利用堆栈的存放方法来读 取数据,具体的应用我们将在十五课中结合具体实验来讲,这里只是让大家先了解一下。那么堆栈在单 片机的什么地方?也就是说把 RAM 空间的哪一块区域作为堆栈呢?这就不好定了,因为 51 系列单片机 是一种通用的单片机,每个人的实际需要各不相同,有人需要多一些堆栈,而有人则不需要那么多堆栈, 所以 INTEL 公司就干脆不分了,把分的权利让给用户(编程者),也就是说我们可以根据自已的需要来 决定,所以单片机中堆栈的位置是可以变化的,而这种变化就体现在 SP 中值的变化,看下面的图,SP 中的值等于 27H 不就相当于是一个指针指向 27H 单元吗?这就是堆栈指针的由来。 31H 31H 30H 30H 29H 29H 28H 28H 27H 27H 26H 26H 25H 25H 24H ←SP 24H 第一个数据 当然在 MCS-51 单片机中,☺:指针开始所指的位置并非就是数据存放的位置,而是数据存放的前 一个位置。例如一开始堆栈指针是指向 27H 单元的,那么第一个数据的存放位置就在 28H 单元中,而不 是 27H 单元中,这一点请大家注意。 6.电源控制寄存器 PCON 单片机在以电池供电的系统中,有时为了节电,我们需要让它尽量降低电源的消耗,所以单片机 就有多种的工作方式,其中一种就是低功耗方式,PCON 寄存器就是用来控制单片机进入低功耗方式的, 有关这方面的知识我们将在下一课的课程中详细介绍。 三. 本课总结 以上几个寄存器只是单片机中最常用的几个 SFR,其他的特殊功能寄存器,我们将在具体应用时 再作详细的介绍。 四.第 8 课习题 1.累加器 A 的作用是什么? 2.什么是堆栈?堆栈存放数据的规则是什么? 3.单片机中有几组工作寄存器?它们的字节地址是什么? 4.简述 PSW 各位的作用。 单片机之友 QQ:280919249
单片机程 MCS-51系列) 第九课单片机的工作方式 上一课中,我们提到了单片机的工作方式,单片机究竟有几种工作方式,它们又是如何工作的呢? 这一课就来讨论这个问题。 单片机的工作方式 单片机共有复位、程序执行、低功耗和编程与加密四种工作方式,下面分别加以介绍。 复位方式 (1)为什么要复位 大家知道,单片机执行程序时总是从地址0000H开始的,所以在进入系统时必须对CPU进行复位, 也叫初始化:另外由于程序运行中的错误或操作失误使系统处于死锁状态时,为了摆脱这种状态,也需 要进行复位,就象电脑死机了要重新启动一样。 (2)复位的原理 单片机复位的方法其实很简单,只要在RST引脚(9脚)上加一个持续时间为24个振荡周期(即 两个机器周期)的高电平就可以了。如果晶振为12M,计算一下这个持续脉冲需要多长时间 (3)如何进行复位 复位操作有上电自动复位、按键复位和外部脉冲复位3种方法,它们的电路分别如下: 外部复位脉冲 上电自动复位是通过外部复位电路的电容充电来实现的,看图1,当电源刚接通时电容C对下拉 电阻开始充电,由于电容两边的电压不能突变,所以RTS端维持高电平,只要这个充电时间不超过1ms 就可以实现对单片机的自动上电复位,即接通电源就完成了系统的初始化,在实际的工程应用中,如果 没有特殊要求,一般都采用这种复位方式:按键复位的电路如图2所示,它其实就是在上电复位的基础 上加了R2和SA,这种电路一般用在需要经常复位的系统中;外部脉冲复位的电路如图3所示,外部复 位通常用于要求比较高的系统,比如希望系统死锁后能自动复位。外部复位是由专门的集成电路来实现 的,也就是我们通常俗称的“看门狗”电路,这种电路有很多,它们不但能完成对单片机的自动复位功 能,而且还有管理电源、用作外部存储器等功能,比如X25045,MAX813L等等就是比较常用的此类芯片, 关于这方面的内容我们将留到下册的教程中再来给大家详细讲解 现在让我们先来看看单片机复位后,它的内部会有些什么变化呢?看下面的表 单片机之友QQ:280919249
单片机教程 (MCS-51 系列) 28 第九课 单片机的工作方式 上一课中,我们提到了单片机的工作方式,单片机究竟有几种工作方式,它们又是如何工作的呢? 这一课就来讨论这个问题。 一. 单片机的工作方式 单片机共有复位、程序执行、低功耗和编程与加密四种工作方式,下面分别加以介绍。 1.复位方式 (1)为什么要复位 大家知道,单片机执行程序时总是从地址 0000H 开始的,所以在进入系统时必须对 CPU 进行复位, 也叫初始化;另外由于程序运行中的错误或操作失误使系统处于死锁状态时,为了摆脱这种状态,也需 要进行复位,就象电脑死机了要重新启动一样。 (2) 复位的原理 单片机复位的方法其实很简单,只要在 RST 引脚(9 脚)上加一个持续时间为 24 个振荡周期(即 两个机器周期)的高电平就可以了。如果晶振为 12M,计算一下这个持续脉冲需要多长时间? (3) 如何进行复位 复位操作有上电自动复位、按键复位和外部脉冲复位 3 种方法,它们的电路分别如下: 上电自动复位是通过外部复位电路的电容充电来实现的,看图 1,当电源刚接通时电容 C 对下拉 电阻开始充电,由于电容两边的电压不能突变,所以 RTS 端维持高电平,只要这个充电时间不超过 1ms, 就可以实现对单片机的自动上电复位,即接通电源就完成了系统的初始化,在实际的工程应用中,如果 没有特殊要求,一般都采用这种复位方式;按键复位的电路如图 2 所示,它其实就是在上电复位的基础 上加了 R2 和 SA,这种电路一般用在需要经常复位的系统中;外部脉冲复位的电路如图 3 所示,外部复 位通常用于要求比较高的系统,比如希望系统死锁后能自动复位。外部复位是由专门的集成电路来实现 的,也就是我们通常俗称的“看门狗”电路,这种电路有很多,它们不但能完成对单片机的自动复位功 能,而且还有管理电源、用作外部存储器等功能,比如 X25045,MAX813L 等等就是比较常用的此类芯片, 关于这方面的内容我们将留到下册的教程中再来给大家详细讲解。 现在让我们先来看看单片机复位后,它的内部会有些什么变化呢?看下面的表: 单片机之友 QQ:280919249