8051单晶片原理与程式设计

合集下载

8051单片机程序设计

8051单片机程序设计

8051单片机程序设计8051单片机是一种广泛应用于嵌入式系统中的微控制器。

它由英特尔公司在20世纪80年代推出,现在已经成为了嵌入式系统设计中最常用的单片机之一。

本文将介绍8051单片机程序设计的基本原理和方法。

8051单片机程序设计主要涉及到三个方面:硬件设计、软件设计和系统调试。

首先,我们需要通过硬件设计来搭建一个适合单片机工作的电路。

通常,我们会使用外部晶振来提供时钟信号,以确保单片机能够按照我们预期的速度运行。

此外,我们还需要为单片机提供适当的电源和外部存储器。

这些硬件设计的要点在此不再赘述,读者可以参考相关资料深入了解。

在硬件设计完成后,我们就可以开始编写单片机的软件了。

8051单片机程序设计主要使用汇编语言或C语言进行编程。

汇编语言是一种底层的机器语言,直接操作单片机的寄存器和指令集。

相比之下,C语言更加高级,提供了许多方便的编程工具和函数库。

因此,大多数人更倾向于使用C语言进行单片机程序设计。

无论我们选择使用汇编语言还是C语言进行编程,我们都需要掌握8051单片机的指令集。

8051单片机的指令集包括了大量的指令,可以进行各种运算、逻辑判断和数据传输等操作。

我们需要根据具体的需求选择合适的指令进行编程。

例如,如果我们需要将一个数值存储到内存中,我们可以使用MOV指令来实现。

而如果我们需要进行条件判断,我们可以使用JMP或JZ等分支指令来实现。

在编写单片机程序时,我们还需要注意内存的分配和使用。

由于8051单片机的存储空间有限,我们需要合理地分配内存空间,以避免程序运行时的内存溢出或冲突。

为了提高程序的效率,我们还可以使用一些优化技巧,如循环展开和指令重排等。

在编写完程序后,我们需要通过系统调试来验证程序的正确性。

调试是一个迭代的过程,我们需要不断地检查程序的错误和优化程序的性能。

为了方便调试,我们可以使用调试工具,如仿真器或调试器,来监控程序的执行过程。

通过这些工具,我们可以逐步执行程序,查看寄存器和内存的值,以及输出的结果,从而找出程序中的错误和问题。

8051单晶片原理简介

8051单晶片原理简介

(2001-04-21)F±G }~¨} (2001-04-27)C §R° :8051 ¤ù-ìz¤ 1. LBz§-zLBz°ò[cp 1A ¤@¨ A¤@-¤ùLBzO ¤¤Bz¤ Central Processing ] UnitA CPU °Oé MemoryA]A RAMAROM éXé¤J¤(I/O, B ^ ] ^ B Input/Output )¤T-÷¨C§R° : 1. LBz°ò[c éXé¤J¤Oó±N§@üO B ìP¤Hé¤J¤ùA gL ¤ù¤{§@AíBzPB±o¨ìGAzLéX¤h±±¨~q A B ] A O°T§¨¨D C CPU OLBz¤ A ±±¨-LBzB§@ ¨¨UN A B èB¤èP§P_U\à C °Oé O¨xs{XP±` B¤±|ê CRAM OH÷s¨ú°O é(Random Access Memory)A ¨§@°{]-p¤¤ FROM O°°O é(Read Only Memory)A óxs{P{¤¤-n ¨ì±`C 8051 Oe-±¤W¨üw¨¤ùLBz¤§¤@ A O INTEL ¤q }oX¨ Mab¤u~¤¤ 󨨤A A C \h]-pbé¤ù ¤q¤]syP 8051 e¤ùA ¨p ATMEL ¤qsy 89C51 ¤ùKPINTEL ¤q 8051 §eA ¨¤j¤PO 89C51 OiH- NA 8051 h§_C¨LWMicrochip PIC(16CXX)¨tCA xW°êEM78XX ¨tCBXbé HT -XXXX ¨tCA ií× I C¤°w89C51 ¤ù°¤C2. 89C51 -ìz¤2.1 89C51 S 89C51 O¤@-¤Kì¤ (8-bit) CMOS ¤ùLBz A XMCS-51 ¤u~ Cp 2 A89C51 ¤§t 4K-byte §°{°Oé(Flash Memory)Ai-N {F 1000 H¤W F128-byte RAM {°Oé §@°{° F¨¨ A 32 ± I/O Hu - 16-bit -p(Timer)B-p(Counter)A A2 ¤@-ùVê C°(RS-232 Serial Port)A M¤--¤¤_Vq\àC 2. 89C51 ¤¤è 89C51 ¤T§A°OéA ¤§O ° 1. 1. 2. 2. 3. 3.¤ù¤°Oé ¤ù~ ¤ù~(On Chip Memory)CROMA~{X°Oé A iXR¨ì 64KC RAMA~±ê°Oé iXR¨ì 64KC A¤ù¤°OéOüêsbó89C51 ¤°OéA ]A 4K-byte §°{°O é(Flash ROM)B128-byte RAM MSí\às°(Special Function Register, SFR)C128-byte RAM q±`¤°¤-°°ìA ¨C¤@-°°ì¤Pì§} RAMA ¤§O ° 1. 1. 2. 2. 3. 3. 4. 4. 5. 5. 6. 6.sw sw sw sw0(00H~07H) 1(08H~0FH) 2(10H~17H) 3(18H~1FH) (30H~7FH)bit address ì¤w§}°(20H~2FH)¤@~Sí\àsO¤@Sí°Oé A¨ 89C51 ¨¨ì¤~iHs ¨úCí¨]-p{ A `N°OéW ×§KLkw±A A -P{ °O館O¤Xz-¨ A ¨{ù LkF¨-n\àC A 2.2 89C51 ±`s l l A [(Accumulator)A O ¤ @ s ¨ í § @ ü O B D - nA¤ ¤ @ - A C O 8-bit(1-byte)s A \h 89C51 üOA sA ¨p MOV ADD A, #25 A, #35°§@O±N M35 [ A 25 G°60A ¨±NGs¤JA ¤¤C l l Rn sRn s]A R0BR1… R7 ¤K-sA 8 ì¤sAq±`í ° §@§UsAH¤W-z¨¤l¨A pGR5 ¤wg]§t 35 -AR5 ií¨ ¤@- A h{§¨G MOV ADD A, #25 A, R5{ A GP°60Cl lB sB sO¤@- ì¤sA 8 D-nó-kP°küO ¤]ií§@ A ¤@s¨ C l l{Ar¤(Program Status Word, PSW){Ar¤óxs¤@¨--n±±¨°T§ A±`¨ìiìX(Carry Flag)MìX (Overflow Flag)A iìX\à[kiì BìP LB¤§[ FìX\à°í§@[k¤§BG C 2.3 89C51 w§}PXy¨ w§}D-nO¨¨pós¨úY¤@°Oéìm ¨ A 89C51 w§}]AH¤U¤ G 1. 1. 2. 2. 3. 3. 4. 4. 5. 5. 6. 6.§Yw§}k ±w§}k ±w§}k sw§}k ¤w§}k ì¤w§}k¤@±`w§}°§Yw§}k±w§}k ±w§}kPsw§} B B kA ¤§Oúp¤U G 1. §Yw§}k ±NY¤@-N¤JY-s¤ AM ì§}¤A R -e-±[ # Cúp¤UG MOV MOV MOV A, #30H 45H, #60H R3, #50H F±N- 30H s¤J A sAA ° 30H F±N°Oé45H ¤e]w° 60H F±NR3 s]w° 50H2. ±w§}k O±NY¤@ê°Oé¤eX¨B A ¨¤JY-sC úp¤U GMOV MOV A, 40H A, WORD, 20HF±N°Oé40H ¤e-s¤J A s F±N°Oé20H ¤e-s¤J WORD3. ±w§}k ±w§}kO¨sR0 R1 °°ü ±¨ú±oü¤- B A A e-±[¤Wem Cúp¤U @ G MOV MOV R0, #20H A, @R0 F±N°Oé20H s¤Js R0 ¤¤ F±Ns R0 -s¤J A ¤¤AA ° 20H4. sw§}k §bSí\às§@B A¨ ABRn Aúp¤U G MOV MOV A, R5 R1, A F±NR5 ¤es¤J A s F±NA ¤es¤J R1 sH¤Wú A89C51 Xy¨üO¤°|-÷A p¤UGl l°O°Oe¤iA °OW¤@-rO-^¤r¤j¤pg§i A A °Oá-±[¤W_G ( )Ci§@°°{WO{°±óD {Dì§}C l lBXBX°O¨ ¤]iíüONq ¨p“MOV”O§@ê A A h°§@üO C l lB¤B¤OBXBzê B¤-¨üO-nw A Cl lùùH¤@-¤ (F)§@°}YA --n\àbóW[{iP @A iú{]-pP¤èk A °§U]-p¤F{\ C3. 89C51 {oiy{ {y¨¤@¤°°y¨P§Cy¨ A °y¨p ASICBCBPASCAL BF§Cy¨p÷±y¨PXy¨C89C51 {oiy{p 3 A iH¨ °y¨{y¨A -YO¨°y¨¨]-p A ¨p C y¨A gL° y¨ss¨Xy¨A AgL{÷X ási A s A -niHü¤J¨wA i° C-Y¨Xy¨¨g±±¨{A h±°e¤Ji¤u§@C H°y¨i{]-p A v°A i ¤U¤jq}o°ùA [t~¤WA 89C51 ¤ù±`¨ C y¨sA UP¤P\àA ùq±`bU¤H¤Wó A O¤@~l±aO¤@-¤¤p-tá C3. 89C51 {oiy{ 8051/89C51 Oe-±¤Wí¨üw¤ùLBz¤§¤@ A¨~ PD±`hA ó±B ¤A PC \h 8051 -Bu¤W êwH¤§KOoi¤u¨ iH±q¤W¤Uüò±o 8051/89C51 A A ¤ùí¤èK C8051/89C51 ¤ù°¤F±±¨\à~A i§Q-ìêC-±A f°tP PC q{A zL TCP/IP -ìzA ¨¤ùW[i\à A dòiL±C°êé B ±i A 8051 ê§@PNs§@ A§¤§A2000C8051 ¤JùP¤-±±±¨A Q±^§ A1999C §B°êFA8051 ¤ùLq-ìzPê§@ A§L§A1995C。

8051_芯片手册

8051_芯片手册

8051芯片手册目录1 NL06F86 芯片概述 (1)1.1结构框图 (1)1.2NL06F86 性能 (1)1.3外设连接示意图 (4)1.4管脚定义 (5)1.5NL06F86 最小系统 (18)1.6部分管脚的配臵电路 (18)2 内存映射 (20)3 CPU内核 (23)3.1概述 (23)3.2CPU编程模型 (24)3.3处理器寻址方式 (28)3.4CPU指令集 (32)3.5MMU和Cache (48)4 外设功能 (61)4.1 功能综述 (61)4.2 所有寄存器列表 (62)4.3 外设使用说明 (71)4.4 编程实例 (71)5 程序起动描述 (73)6 存储器控制器 (74)6.2 寄存器表 (74)6.3 寄存器功能描述 (74)6.4 模块管脚描述 (76)6.5 典型电路 (80)6.6 编程实例 (81)7 中断控制器 (83)7.1 功能综述 (83)7.2 寄存器表 (84)7.3 寄存器功能描述 (84)7.4 编程实例 (86)8 定时器 (88)8.1 功能综述 (88)8.2 寄存器表 (88)8.3 寄存器功能描述 (89)8.4 编程实例 (90)9 通用I/O (91)9.1 功能综述 (91)9.2 寄存器表 (91)9.3 寄存器功能描述 (93)9.4 编程实例 (96)10 HW控制器 (98)10.1 功能综述 (98)10.2 寄存器表 (98)10.4 编程实例 (99)11 以太网MAC控制器 (100)11.1 功能综述 (100)11.2 寄存器表 (100)11.3 寄存器功能描述 (101)11.4 模块管脚描述 (106)11.5 典型电路 (107)11.6 编程实例 (107)12 通用异步收发器UARTs (112)12.1 功能综述 (112)12.2 UART寄存器表 (112)12.3 寄存器功能描述 (113)12.4 模块管脚描述 (117)12.5 编程实例 (118)13 I2C总线接口 (122)13.1 功能综述 (122)13.2 寄存器表 (122)13.3 寄存器功能描述 (122)13.4 时序波形图 (123)13.5 模块管脚描述 (125)13.6 典型电路 (125)13.7 编程实例 (126)14 低速外设接口 (128)14.2 寄存器表 (128)14.3 寄存器功能描述 (128)14.4 模块管脚描述 (130)14.5 典型电路 (131)14.6 编程实例 (132)15 显示接口 (134)15.1 功能总述 (134)15.2 寄存器表 (134)15.3 寄存器功能描述 (136)15.4 模块管脚描述 (143)15.5 典型电路 (144)15.6 编程实例 (145)16 磁卡接口 (149)16.1 功能综述 (149)16.2 寄存器表 (149)16.3 寄存器功能描述 (149)16.4 模块管脚描述 (151)16.5 编程实例 (151)17 IC卡接口 (153)17.1 功能综述 (153)17.2 寄存器表 (153)17.3 寄存器功能描述 (154)17.4 模块管脚描述 (156)17.6 编程实例 (157)18 打印机接口 (159)18.1 功能综述 (159)18.2 寄存器表 (159)18.3 寄存器功能描述 (159)18.4 模块管脚描述 (161)18.5 典型电路 (162)18.6 编程实例 (162)19 PC键盘接口 (164)19.1 功能综述 (164)19.2 寄存器表 (164)19.3 寄存器功能描述 (164)19.4 模块管脚描述 (165)19.5 数据格式和时序图 (166)19.6 典型电路 (166)19.7 编程实例 (167)20 PWM接口 (169)20.1 功能综述 (169)20.2 寄存器表 (169)20.3 寄存器功能描述 (170)20.4 模块管脚描述 (171)20.5 典型电路 (171)20.6 编程实例 (172)21 蜂鸣器 (173)21.1 功能综述 (173)21.2 寄存器表 (173)21.3 寄存器功能描述 (173)21.4 模块管脚描述 (174)21.5 典型电路 (174)21.6 编程实例 (175)22 DES控制器 (176)22.1 功能综述 (176)22.2 寄存器表 (176)22.3 寄存器功能描述 (176)22.4 编程实例 (177)23 封装尺寸 (179)1. 8051 芯片概述8051微控制器属于MCS-51系列,自其1980年由Inter公司设计以来,由于其完善的指令集,在嵌入式系统应用中占有很大的市场。

8051单片机的基本结构及工作原理 _2013

8051单片机的基本结构及工作原理 _2013

2区
1区
0区
返回上一次
继续
2FH
7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F
7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06
7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05
TH0 TL0

◦ MOV 8CH,#01H ;为TH0赋值 ◦ MOV 8AH,#20H ;为TL0赋值

串行数据缓冲器SBUF:它是专门用来存放发送或接收的 数据,实际上它是两个独立的寄存器。尽管在SFR中的 RAM地址只是99H,但根据指令“发送”或“接收”两种 不同的操作,有两个独立的缓存存在,硬件会自动的区分, 将数据送如对应的缓冲单元。 MOV SBUF,A ;A→SBUF (引发串口通信)
78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00
字节地址
20H
07
返回上一次

位寻址区内的地址是位地址。共有00-7FH(共128个位); 要区分字节地址和位地址这两个不同的地址概念: MOV A, 20H ;将RAM的20单元内容送累加器A; MOV C ,20H ;将RAM位寻址区中20H位送CY中。
7FH
SP
60H
61H 60H
08H 07H
改变堆栈位置示意图
注意:FILO( First In Last Out)

并行端口P0-P3:80H、90H、A0H、B0H。
如:
MOV 80H,A ;将累加器中的数据送到P0口输出 MOV A,90H ;将P1口的数据输入到累加器A中

8051单片机的内核的结构及运行过程解析

8051单片机的内核的结构及运行过程解析

8051单片机的内核的结构及运行过程解析1.ALU(算术逻辑单元):8051单片机内置了一个8位ALU,负责执行算术和逻辑运算。

ALU可以进行加法、减法、与、或、非、异或等操作。

2.寄存器组:8051单片机包括4个8位的通用寄存器(R0~R7)和一个16位的程序计数器(PC)。

通用寄存器可用于保存临时数据和中间结果,程序计数器则记录当前执行指令的地址。

3.存储器:8051单片机的存储器包括内部存储器和外部扩展存储器。

内部存储器包括片内RAM和片内ROM两部分。

片内RAM可以分为128字节的数据存储器(IDATA)和256字节的数据存储器(XDATA)。

片内ROM则存储程序代码。

4.定时器/计数器:8051单片机内核包含两个定时器/计数器(T0、T1)。

定时器模式用于产生一定的时间延迟,计数器模式用于计数外部事件的个数。

定时器/计数器具有可编程的工作模式和计数值。

5.中断源:8051单片机支持多组中断源,包括外部中断INT0和INT1、定时器/计数器中断、串口中断等。

中断源的优先级可以通过程序设置,以满足不同应用场景的需求。

1.取指令阶段:程序计数器(PC)保存了当前指令的地址。

8051单片机通过将PC指针输出地址,从存储器中读取指令。

读取的指令存储于指令寄存器(IR)中。

2.译码阶段:指令寄存器(IR)中的指令会被译码器解码,生成相应的控制信号和操作码。

控制信号会对单片机的内部功能模块进行控制,操作码则确定执行的操作类型。

3.执行阶段:根据指令的操作码,单片机执行相应的操作。

例如,如果操作码指示进行加法运算,则ALU会执行加法操作,并将结果保存在指定的寄存器或存储单元中。

4.访存阶段:在执行一些指令时,单片机需要从存储器中读取或写入数据。

在访存阶段,单片机会将需要访问的存储器地址输出,并根据控制信号读取或写入数据。

5.写回阶段:在一些指令执行结束后,单片机会将执行结果写回到寄存器或存储器中。

写回阶段会更新相应的寄存器或存储单元,以保存最新的结果。

8051单片机教程

8051单片机教程

8051单片机教程一、认识8051单片机8051单片机是一款经典的微控制器,自1981年由英特尔公司推出以来,便广泛应用于工业控制、智能家居、嵌入式系统等领域。

本教程将带领大家了解8051单片机的结构、原理及其编程方法。

1. 8051单片机的基本结构(1)中央处理器(CPU):负责执行程序指令,进行数据处理和控制。

(2)存储器:包括程序存储器(ROM)和数据存储器(RAM)。

程序存储器用于存放程序代码,数据存储器用于存放运行过程中的数据和变量。

(3)定时器/计数器:用于实现定时或计数功能,可应用于各种场合,如延时、脉冲计数等。

(4)并行I/O口:共有4个8位的并行I/O口,可用于连接外部设备,进行数据输入输出。

(5)串行通信接口:用于与其他设备进行串行通信,可实现数据的长距离传输。

(6)中断系统:允许外部设备或内部事件打断正常的程序执行流程,提高系统的实时性。

2. 8051单片机的特点(1)指令丰富:8051单片机拥有111条指令,包括数据传送、逻辑运算、算术运算、位操作等。

(2)硬件资源丰富:具备定时器、串行通信接口、中断系统等硬件资源,易于实现各种功能。

(3)扩展性强:可通过外部总线扩展存储器、I/O口等资源。

(4)功耗低:适用于电池供电的便携式设备。

(5)成本低:8051单片机价格低廉,性价比高。

二、8051单片机的编程基础1. 汇编语言与C语言2. 开发环境搭建(1)并安装Keil软件。

(2)创建一个新项目,选择8051单片机型号。

(3)编写,并将文件添加到项目中。

(4)编译、项目,可执行文件。

(5)将可执行文件到8051单片机中,进行调试和运行。

3. 基本语法与编程规范(1)变量定义:在C语言中,使用变量前需先进行定义。

例如:unsigned char count; // 定义一个无符号字符型变量count(2)数据类型:8051单片机支持多种数据类型,如char、int、long等。

8051工作原理

8051工作原理

8051工作原理8051是一款8位单片机,由Intel公司设计和生产。

它使用了哈佛结构,具有内部ROM、RAM、I/O端口和定时器等功能,可以实现复杂的计算和控制任务。

8051的工作原理可以简述为以下几个步骤:1. 初始化:首先将8051的寄存器和内存初始化为默认值,设置好时钟和外部设备。

2. 程序执行:8051按照程序存储器中的指令逐条执行,从程序存储器中读取指令并解码。

指令可以包括算术逻辑运算、数据传输、I/O操作等。

3. 存储器和寄存器访问:根据指令的要求,8051会访问存储器和寄存器来读取或写入数据。

存储器包括RAM、ROM和特殊功能寄存器(SFR),寄存器则包括通用寄存器、计数器、状态寄存器等。

4. I/O操作:如果指令需要对外部设备进行操作,8051会通过相应的I/O端口与外部设备进行数据交互。

这些外部设备可以是LED、LCD、键盘、传感器等。

5. 中断处理:当外部设备产生中断信号时,8051会暂时停止执行主程序,转向中断处理程序来处理中断请求。

中断可以是外部中断、定时器中断或串行口中断等。

6. 定时器和计数器:8051内部集成了一个或多个定时器和计数器,可以用来进行时间计数、波特率生成、定时任务等。

这些定时器和计数器可以根据需要进行配置和控制。

7. 控制跳转:根据程序中的控制语句(如if、for、while等),8051可以根据条件跳转到指定的地址继续执行相应的代码段。

上述是8051的基本工作原理,它能够通过灵活的编程和配置,实现各种不同的应用,包括嵌入式系统、自动控制系统、通信系统等。

二、8051的结构和原理

二、8051的结构和原理
PSW (Program Status Word ):程序状态字。
PSW是8位寄存器,用于作为程序运行状态的标志。这是一 个很重要的部件,里面存放了CPU工作时的很多状态,借此,我 们可以了解CPU的当前状态,并作出相应的处理。
当CPU进行各种逻辑操作或算术运算时,为反映操 作或运算结果的状态,把相应的标志位置1或清0。这 些标志的状态,可由专门的指令来测试,也可通过指 令来读出。它为计算机确定程序的下一步进行方向提 供依据。PSW寄存器中各位的名称及位置如下表所示, 下面说明各标志位的作用。
它的各位功能如下:
PSW位地址 D7 D6 D5 D4 D3 D2 D1 D0
CY AC F0 RS1 RS0 OV
P
PSW位地址 D7 D6 D5 D4 D3 D2 D1 D0
CY AC F0 RS1 RS0 OV
P
▪ CY:进位标志。 加减运算时,保存最高位进位、借位状态。
▪ AC:半进位标志。 例:78H+97H 0111 1000 +1001 0111 1 0000 1111
片内数据存储器空间分布图
7FH
通用RAM区
(80B)
.........
通用RAM区
共80个字节,作为一般的数据缓冲 区并可设置堆栈区
30H
位地址区 2FH
(16B) 20H
寄存器3组 寄存器2组 寄存器1组
1FH
...
寄存器0组 00H
三、特殊功能寄存器(21个字节)
SFR (Special Functional Register) 见书P6表1-3 ①与ALU相关的(3个)
片内数据存储器空间分布图
7FH
通用RAM区
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

單晶片原理與程式設計第一章單晶片微電腦簡介第二章程式與編譯第三章8051單晶片程式指令第四章暫存器與資料記憶體第五章8051基本電路與輸出輸入實例第六章計時/計數器第七章中斷服務與中斷設定第八章串列埠第一章單晶片微電腦簡介1.1 微電腦硬體結構微電腦硬體結構包含中央處理單元、記憶體單元、輸入單元與輸出單元等四個主要單元,其結構關係則如下圖所示。

其中,中央處理單元則是由運算單元與控制單元兩部分所組成的單元,即是一般所通稱的CPU(Center Processing Unit),此為微電腦最重要的部分。

以下就微電腦中各單元的功能做簡單介紹:1. 運算單元(Arithmetic Logic Unit,簡稱ALU)運算單元又稱為算數邏輯單元,在中央處理單元中可用於執行算數運算,(如:加、減、乘、除等),以及邏輯運算(如:AND、OR、NOT等),能將記憶體單元或輸入單元送至中央處理單元的資料執行各種運算。

當運算完成後再由控制單元將結果資料送至記憶體單元或輸出單元。

2. 控制單元(Control Unit,簡稱CU)此單元在中央處理單元中,負責協調與指揮各單元間的資料傳送與運作,使得微電腦可依照指令的要求完成工作。

在執行一個指令時,控制單元先予以解碼(Decode),瞭解指令的動作意義後再執行(Execute)該指令,因此控制單元將指令逐一執行,直到做完整個程式的所有指令為止。

3. 輸入單元(Input Unit,簡稱IU)此單元是用以將外部的資訊傳送到CPU做運算處理或存入記憶體單元,一般在為電腦的輸入單元有鍵盤、磁碟機、光碟機、滑鼠、光筆、掃描器或讀卡機等週邊設備。

4. 輸出單元(Output Unit,簡稱OU)此單元是用以將CPU處理過的資料輸出或儲存傳送外部週邊設備,一般在為電腦的輸出單元有顯示器、印表機、繪圖機、燒錄機或磁碟機等週邊設備。

5. 記憶體單元(Memory Unit,簡稱MU)記憶體單元是用來儲存輸入單元傳送來的資料,或儲存經過中央處理單元處理完成的資料。

記憶體單元之記憶體可分為主記憶體(Main Memory)與輔助記憶體(Auxiliary Memory)兩種,而主記憶體依存取方式不同,又可分為唯讀記憶體(Read Only Memory,簡稱ROM)與隨機存取記憶體(Random Access Memory,簡稱RAM)。

ROM所儲存的資料,在微電腦中只能被讀出但不能被寫入,也不會因為關機斷電而使資料流失;至於RAM在微電腦中,則可被讀出或寫入資料,但在關機斷電後儲存於RAM中的資料將會流失。

輔助記憶體則是指磁片、硬碟或磁帶等週邊硬體,一般亦為輸出入單元,主要用來彌補主記憶體的不足,其容量可無限制擴充。

1-2 8051單片的內部結構:8051為Intel公司所推出的MCS-51系列產品之一,其內部結構如下:8051單片具有以下之特性:1.專為控制使用所設計的8位元單晶片。

2.具有位元邏輯運算能力。

3.具有128位元的RAM,以及4K位元的ROM。

4.具有4個8位元I/O埠。

5.具有2個16位元的計時/計數器。

6.具有全雙工的UART。

7.具有5個中斷源及兩層中斷優先權結構。

8.具有時脈產生電路。

具有外部電路擴充64位元程式記憶體的能力。

1-3 8051單晶片的接腳:8051為40支接腳之單晶片,其接腳圖與功能說明如下:1.Vcc:+5電源供應接腳。

2.GND:接地接腳。

3. P0.0~P0.7:埠0,為開洩極(Open Drain)雙向I/O埠。

在做為外部擴充記憶體時,可低八位元位址線(A0~A7 address line)與資料匯流排(data bus)雙重功能。

在做為一般I/O埠時必頇加上如下之外部提升電路。

4.P1.0~P1.7:埠1,為具有內部提升電路的雙向I/O埠。

5.P2.0~P2.7:埠2,為具有內部提升電路的雙向I/O埠。

在做為外部擴充記憶體時,可為高八位元位址線(A8~A15 address line)。

6.P3.0~P3.7:埠3,為具有內部提升電路的雙向I/O埠。

此外,埠3的每支接腳都具有另一特殊功能,其功能如下:RXD(P3.0):串列傳輸的接收端。

TXD(P3.1):串列傳輸的輸出端。

(P3.2):外部中斷輸入端。

(P3.3):外部中斷輸入端。

T0(P3.4):計時/計數器外部輸入端。

T1(P3.5):計時/計數器外部輸入端。

(P3.6):外部資料記憶體寫入激發信號(Strobe)。

(P3.7):外部資料記憶體讀取激發信號(Strobe)。

7.RST:重置信號(Reset)輸入端。

在單晶片工作時,將此腳保持在“Hi”兩個機械週期,CPU將重置。

8.ALE:位址鎖住致能(Address Latch Enable),在每個機械週期都會出現,可做為外部電路的時脈源。

9.:程式激發致能(Program Strobe Enable),可輸入外部程式記憶體的讀取信號。

10.:外部存取致能(External Access Enable),當EA 接腳為“L0”時,則讀取外部程式記憶體執行。

11. XTAL1:反相振盪放大器的輸入端。

12. XTAL2:反相振盪放大器的輸出端。

其基本電路連接如下: 基本電路圖18311912MHz第二章程式與編譯§ 2-1 程式編寫流程8051單晶片應用於控制上時,整體系統的設計包括軟體程式及硬體電路兩方面。

硬體電路設計是依受控系統之不同而異,雖然有時候系統的某些功能可以採用軟體或硬體來完成,但在考量硬體成本及8051單晶片運算能力所及程度,以軟體程式來完成為較佳方法。

對於8051單晶片之編譯流程如下:編譯流程圖§ 2-2 8051組合語言程式的格式8051組合語言程式是由一列一列的敘述(statement)所組成,而程式的執行則頇先經8051組譯器編譯後,並經燒錄器燒錄至8051單晶片中方可執行。

而8051組合語言的格式則是由4個欄位所構成,其格式如下:〔Label〕〔Mnemonic〕〔Operand〕〔Comment〕標記欄指令欄運算元欄註解欄1.標記欄(Label)標記的功用是用以替代繁複的記憶體位址計算,以方便程式的編寫、分析與維護。

標記的編寫必頇從文書編輯軟體的第一格開始,標記可以由英文字母、阿拉伯數字、問號及底線字元組合而成,長度最多可以達32個位元,最後必頇以冒號來結束。

2.指令欄(Mnemonic)指令可分為兩種,一種是8051單片指令,另一種則是編譯程式的虛指令,用以通知編譯器對程式作某些特定的處理。

如果一列指令開頭沒有標記時,則指令前必頇保留一個以上的空格。

3.運算元欄(Operand)運算元依指令決定需要與否,且其需要長度亦依指令而異。

4.註解欄(Comment)註解欄是以分號起頭的一段說明文字,直到該行結束。

可提供程式設計師註解說明。

第三章8051單晶片程式指令8051單晶片程式指令依其功能,可分為以下5類:1.算術指令2.邏輯指令3.資料轉移指令4.布林(Boolean)運算指令5.程式跳躍指令以下就上列指令;分別說明每個指令動作、佔用的位元數及執行時間週期:指令表指令符號定義符號定義算數運算指令算數運算指令邏輯運算指令邏輯運算指令資料轉移指令資料轉移指令布林運算指令布林運算指令程式分支指令程式分支指令資料表示形式:以資料的轉移為例,來說明直接資料、直接定址位址、間接定址位址的差異:1.假設Acc的值為0,執行直接資料轉移。

Mov A #FFH ;十六進制值表示法(或Mov A #255);十進制值表示法則Acc的值變為2552.假設Acc的值為0,執行直接定址位址之資料轉移。

Mov A #40H(或Mov A #64)則Acc的值變為2553.假設Acc的值為0,且記憶體位址40H的內容FFH與暫存器R0的內容為40H。

Mov A @R0則Acc的值變為255以上三種資料轉移方式都會使Acc變為255以圖示來說明其差異:直接資料AccFFH(或255)Acc間接定址位址(暫存器) (內容)R0 :40H (位址) (內容)40H :FFH直接定址定址Acc(位址) (內容)40H :FFH第四章暫存器與資料記憶體§4-1累加器累加器(Accumulator)一般以A或Acc簡稱,是使用頻率最高的暫存器,許多算數運算、邏輯運算及資料搬移等工作,都需要藉由累加器來完成。

§4-2工作暫存器在8051中共有8個8位元(bits)工作暫存器,分別為0、1、2、3、4、5、6及7。

這些工作暫存器可用以輔助累加器在運算上的不足,如儲存即將被處理的資料,或已完成的結果及迴圈數值控制等。

由於在撰寫較複雜程式尤其是呼叫副程式時,為了避免工作暫存器之內容遭到破壞,在8051中提供四個暫存器庫,分別為RB、RB1、RB及RB3,每一個暫存器庫均有個8位元工作暫存器,並可經由工作暫存器0~7來存取,但程式執行中只能選擇四個暫存器庫中的一個暫存器來使用,而其選擇方法則可透過設定RS1與RS0此兩位元來選擇:RS1 RS0 暫存器庫位址0 0 RB0 00H~07H0 1 RB1 08H~0FH1 0 RB2 10H~17H1 1 RB3 18H~1FH當8051選擇使用RB0時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址00H~07H的內容;而使用RB1時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址08H~0FH的內容;而使用RB2時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址10H~17H的內容;而使用RB3時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址18H~1FH的內容。

所以在複雜程式中,主程式與副程式可分配使用不同暫存器庫,即可避免暫存器的值被破壞。

§4-3輸出/輸入埠暫存器8051具有4個8位元(bits)的輸出輸入埠,經由這四個輸出輸入埠與外界進行資料交換因此在8051內部用個暫存器來記錄輸出/輸入接腳的狀態,分別為資料記憶體80H、90H、A0H、B0H等四個位元組(byte),並一輸出/輸入埠分別命名為P0、P1、P2及P3。

當軟體程式對輸出輸入埠P0~3作輸出/輸入的動作,即是對80H、90H、A0H及B0H等四個位元組作寫入/讀出的動作。

§4-4 資料記憶體8051的記憶體可分為兩大部份,一是程式記憶體,即是使用者撰寫軟體程式的存放記憶體區塊;另一是資料記憶體,是用以存放程式執行結果所使用的記憶體。

而在8051中暫存器與資料記憶體則是結合在一起,均存放在資料記憶體中,及結構如下圖所示:SFR的內部結構F8 FFF0 F7E8 EFE0 E7D8 DFD0 D7C8 CFC0 C7B8 BFB0 B7A8 AFA0 A798 9F90 9788 8F80 87此行記憶體位元組可做位元定址。

相关文档
最新文档