第2章 51单片机C程序简介
51单片机及C语言入门教程

51单片机及C语言入门教程本教程将介绍51单片机及C语言的入门知识,帮助初学者快速掌握这两个方面的基本内容。
以下是本教程的详细内容:一、51单片机概述(200字)51单片机是由Intel公司推出的一种常见的单片机芯片,具有广泛应用的特点。
它采用了Harvard结构,具有8位数据总线和16位地址总线。
其主要特点是结构简单、易于学习、应用广泛,适用于各种嵌入式系统。
二、C语言基础(300字)C语言是一种高级编程语言,具有跨平台、可移植性强等特点,被广泛应用于各种软件开发和嵌入式系统中。
学习C语言的基础知识是学习51单片机编程的必要前提。
C语言基础知识主要包括数据类型、变量、常量、运算符、表达式、流程控制语句等内容。
这些知识是学习C语言和51单片机编程的基础,需要仔细理解和掌握。
三、51单片机编程入门(400字)1. 搭建开发环境:首先需要安装51单片机的开发工具,如KeilC51等。
然后,连接单片机开发板和电脑,确保硬件连接正确。
2.了解开发板:学习使用51单片机的开发板是学习51单片机编程的第一步。
具体包括开发板上各个接口的功能和使用方法。
3.编写第一个程序:根据教材或教程,编写第一个简单的程序,如让LED灯闪烁等。
学习如何通过C语言编写程序,将其烧录到单片机中,并运行和调试。
四、C语言与51单片机的应用(300字)在学习了C语言和51单片机的基础知识之后,可以进一步学习它们的应用。
1.输入输出操作:学习如何通过51单片机与外部设备进行输入输出操作,如控制LED灯的亮灭、读取按键输入等。
2.定时器和中断:学习如何使用51单片机的定时器和中断功能来实现定时任务和外部事件处理。
3.串口通信:学习如何通过51单片机的串口通信功能与其他设备进行数据交换和通信。
五、实例项目及拓展应用(200字)完成了基础学习后,可以尝试一些实例项目,如温度测量系统、遥控器、电子钟等。
同时,可以进一步学习其他相关知识,如LCD显示、SPI 通信等,以扩展自己的应用能力。
单片机原理 第2章 MCS-51单片机体系结构

2.4.2 MCS-51单片机数据存储器
2.4.2 MCS-51单片机数据存储器
1. 工作寄存器区
字节地址为00H~1FH的32个单元是4组通用工作寄存器区,每组占用8个 字节,都标记为R0~R7。在某一时刻,CPU只能使用其中的一组工作寄存 器,工作寄存器的选择由程序状态字寄存器PSW中RS1、RS0两位来确定 ,如表2-3所示。
2. 数据总线DB 数据总线宽度为8位(D0~D7),由P0提供。
3. 控制总线CB 控制总线由P3口的第二功能状态和4根独立控制线RESET、 和ALE组成。
2.3 MCS-51单片机的中央处理器
• 8051系列单片机的中央处理器CPU是单片机 的指挥中心和执行机构,它的作用是产生合适的 时序,读入和分析每条指令代码,根据每条指令 代码的功能要求,指挥并控制单片机的有关部件 和器件,具体执行指定的操作。
2.2.3 并行I/O引脚
3. P2口
P2口,为准双向I/O口,具有内部上拉电阻。一共8位,有P2.0~P2.7共8 条引脚。当8051系列单片机扩展外部存储器及I/O接口芯片时,P2口作为 地址总线(高8位),和P0输出的低8位地址一起构成16位地址,可以寻址 64KB的地址空间。
P2口位结构图如图2-3 (c)所示,它比P1口多了 一个转换控制部分,当P2 与P0配合作为“地址/数据总 线”方式下的高8位数据线 (A8~A15)时,CPU将写 控制信号“1”使MUX切换到 右边,在“地址/数据总线” 方式下,无论P2口剩余多 少地址线,均不能被用于 普通I/O操作。
(2)控制引脚—— 、
第2章MCS-51单片机基本结构

2.1.4
复位和复位电路
单片机在重新启动时都需要复位,MCS-51 系列单片机有一个复位引脚输入端RST。 1. MCS-51系列的单片机复位方法为:在RST上加
一个维持两个机器周期(24个时钟周期)以上
的高电平,则单片机被复位。 2. 复位时单片机各部分将处于一个固定的状态。
复位后单片机各单元的初始状态
R2 2 00
2 2u F
R S T/VP D
R1 1K
V ss
GND
未稳压电源
WDI R1 PFI MR R2 MAX813L P1.0
RESET
WDO
﹠
RST MCS-51
“看门狗”复位电路
2.1.5 MCS-51单片机的引脚功能
MCS-51单片机采用40脚双列直插式封装形式,主要包括以 下几个部分: 1. 电源引脚Vcc和Vss Vcc(40脚):电源端,为十5V; Vss(20脚):接地端 ,GND。 2. 时钟电路引脚XTAL1和XTAL2 XTAL1为内部振荡电路反相放大器的输入端 。 XTAL2为内部振荡电路反相放大器的输出端 。 3. 控制信号引脚RST、ALE、PSEN和EA 4. I/O(输入/输出)端口P0、P1、P2和P3 5. MCS-51单片机P3口的第二功能
单片机各种周期的关系图
机器周期 S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
时钟周期 状态周期
1个机器周期=6个状态周期=12个时钟周期
4、指令周期: 它是指CPU完成一条操作所需的全部
时间。 每条指令执行时间都是有一个或几个机器周
期组成。MCS - 51 系统中, 有单周期指令、双周期指
51单片机编程开发之c语言基础

51单片机编程开发之c语言基础51单片机是一种非常常用的单片机,而C语言是51单片机编程的基础。
本文将从C语言基础的角度,介绍如何在51单片机上进行编程开发。
我们需要了解C语言的基本语法和数据类型。
C语言是一种结构化的、高级的编程语言,它不仅可以进行底层的操作,还具备高级语言的特性。
在C语言中,我们可以使用各种数据类型来存储和处理数据,例如整型、浮点型、字符型等。
同时,C语言还提供了丰富的运算符和控制语句,使得程序的编写更加灵活和高效。
在51单片机上进行C语言编程,我们需要使用相关的开发工具和编译器。
目前,市面上有很多种开发工具可供选择,例如Keil、IAR 等。
这些开发工具可以帮助我们创建、编辑和编译C语言程序,并将其下载到51单片机上运行。
在开始编写程序之前,我们需要对51单片机的硬件结构有一定的了解。
51单片机由CPU、存储器、外设等组成。
我们可以通过C语言编写程序来控制这些硬件,实现各种功能。
例如,我们可以通过C 语言控制LED灯的亮灭、读取按键的状态、驱动液晶屏显示等。
在编写程序时,我们需要熟悉51单片机的寄存器和外设的相关操作。
51单片机的寄存器用于控制和配置各种硬件,我们可以通过C语言对寄存器进行读写操作,来实现对硬件的控制。
同时,51单片机还提供了丰富的外设接口,例如串口、定时器、ADC等,我们可以通过C语言编写程序来实现对这些外设的配置和操作。
在编写程序时,我们需要使用51单片机的特定的编程语法和函数库。
51单片机的编程语法与标准C语言有一些差异,我们需要了解这些差异并进行相应的调整。
同时,51单片机还提供了一些特定的函数库,例如LCD显示库、PWM波形库等,我们可以使用这些函数库来简化编程的过程。
在编写程序时,我们需要注意一些常见的问题和技巧。
例如,51单片机是一种8位的单片机,其存储器空间有限,我们需要合理利用存储空间,避免浪费。
同时,由于51单片机的时钟频率有限,我们需要注意程序的效率,避免出现性能瓶颈。
第2章 MCS-51单片机

(4)可寻址外部程序存储器和数据存储器,各64KB;
(5)两个16位定时器/计数器; (6)32位可编程并行I/O口; (7)一个可编程全双工串行I/O口; (8)二十多个特殊功能寄存器; (9)5个中断源,两个优先级嵌套中断结构。
2. 微处理器 8051微处理器的组成如下所示:
累 加 器 ACC( Accumulator) 程 序 状 态 字 寄 存 器 PSW( Program Status Word) 运算器 暂存寄存器 CPU 寄存器B 指 令 寄 存 器 IR 控制器 指 令 译 码 器 ID 程 序 计 数 器 PC
(2)位寻址区
内部RAM的0x20~0x2F为位寻址区,这16个字节的每
一位都对应一个8位地址,位地址范围为0x00~0x7F。该区 域可按字节读写,也可按位读写,位地址从0x20单元最低位 开始,共有16×8位,即128个位地址。 如果系统需要位操作,最好保留0x20~0x2F单元的部分
或全部,作为位存储区,以支持位处理操作。位寻址区的每
一位都可以直接进行位操作。通常把各种程序状态标志位控 制变量,设在位寻址区内,同时,位寻址区的RAM单元也 可以作一般的数据缓冲器使用。RAM寻址区位地址映象如 表2-5所示。
位 寻 址 区 地 址 映 象
(3)缓冲器区
内部RAM的0x30~0x7F的地址区,可作为数据缓冲器 使用,存放数据,由于该区有丰富的操作指令,使用十分 方便。 2.外部数据存储器 在51系列中,允许用户扩展外部数据存储器和I/O接口, 用户可以通过P0、P2口最多扩展连接64K个外部单元(每
片机系统。
MCS-51的典型产品是8051、8031、8751。8051是ROM型单片 机,内部有 4KB 掩膜 ROM ; 8031 无片内 ROM , 8751 片内有
第二课_51单片机C程序设计基础

第二课 51单片机C程序设计基础教学内容:51单片机C程序基础知识教学重点: 51单片机C程序基础知识教学难点:51单片机C程序基础知识教学目的:1、掌握51单片机C程序基础知识2、掌握KEILC51软件使用从一个例子开始:/********************************************************// 第一个发光管以间隔200ms闪烁// 晶振为11.0592M/*********************************************************/#include<reg52.h> //52单片机头文件#define uint unsigned int //宏定义#define uchar unsigned char //宏定义sbit led1=P0^0; //单片机管脚位声明void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms.uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main() //主函数{while(1) //大循环{led1=0; //点亮小灯delay(200); //延时200毫秒led1=1; //熄灭小灯delay(200); //延时200毫秒}}●C-51与ASM-51相比,具有如下优点:1)不需要了解51单片机的指令系统,仅仅要求对存储器结构有初步了解2)寄存器分配,存储器寻址以及数据类型等细节可由编译器管理3)程序有规范的结构,课分为不同函数,使得程序结构化4)程序更具可读性5)高的编程及程序调试效率6)提供的库包含许多标准子程序,具有较强的数据处理能力7)程序易于做到模块化,便于移植一、数据结构●数据的不同格式称为数据类型●数据按一定的数据类型进行的排列、组合、架构称为数据结构1、数据类型1)char(字符型):unsigned char 0~255signed char -128~+127例:#define uchar unsigned charuchar i,j;一般使用无符号数据类型,因为,有符号运算比无符号运算耗资源2)int(整型):unsigned int 0~65535Signed int -32767~+32768例: #define uint unsigned intuint x,y;一般能用char就不用int,节省空间3)* 指针型*——地址——数据类似于寄存器间接寻址4)C-51的数据类型扩充定义sfr :特殊功能寄存器声明sfr16:16位特殊功能寄存器声明sbit:特殊功能位声明bit:位变量声明例:sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;2、常量与变量●常量:在程序运行过程中值不能改变的量●变量:在程序运行过程中值不断能改变化的量二、运算符与表达式●>> 位右移●<< 位左移补0●i++ 使用后+1,i=1, i+1=2●++i 使用前+1 , i+1=2, i=2●== 测试等于●!= 测试不等于●&& 逻辑与三、main 函数●格式:void main()●特点:无返回值,无参任何一个C程序有且仅有一个main函数,它是整个程序开始执行的入口●例:void main(){总程序从这里开始;其他语句;}四、小结:通过本次课的学习,学生必须掌握C-51的一些基本特点,能读懂一些简单的程序。
第2章 MCS-51单片机的硬件结构

(2)通用I/O接口功能
P2口作准双向口使用,与P1口相同,也有输入、 输出、端口操作三种工作方式。
3.P2口负载能力
4个LSTTL负载,输出电流≥ 400uA
三、P3口
1. P3口1位结构原理图如图所示
P 奇偶标志
A中1的个数若为奇数P=1,否则P=0
例如:MOV A, #7FH ADD A, #4FH 0111,1111B + 0100,1111B 1100,0110B
结果:(A)=C6H, C=0,AC=1,OV=1,P=0
2.控制器 3.片内存储器
4.4个I/O接口
5.串行接口
6.定时/计数器
先片内、后片外,片内片外连续,二者 一般不作重叠。 EA=0,只访问片外程序存储器 EA=1,先访问片内程序存储器。当PC >0FFFH(51子系统)或PC>1FFFH(52子系统) ,再去访问片外程序存储器。
存储器编址图如下图所示
0000H
片内ROM /EA=1 0FFFH 0FFFH 1000H 片外ROM 0000H 片外ROM /EA=0 00H 7FH 80H FFH 片外RAM 片内RAM 0000H
有5个中断源
11.111条指令,含乘、除法,有很强
的位处理能力 12.片内采用单总线结构,单一+5V
电源
52系列主要有8032、8052两种机型。 与51系列不同在于:片内数据存储器增 至256个字节,3个16位定时/计数器,6 个中断源。
二、内部结构
MCS-51系列单片机的内部结构如 下图所示:
1 2 . . .
第二章 MCS-51系列单片机结构与工作

2.3.1运算器 2.3.1运算器
• 4.程序状态字寄存器PSW • 程序状态字寄存器PSW是8位寄存器,用来存储当前指令执行后的状 态,便于程序查询和判别。程序状态字寄存器各位的定义如表2-2。
• (1)进位标志位C:又名CY,在加法和减法运算时, 表示运算结果 最高位的进位或借位情况。
2.3.1运算器 2.3.1运算器
2.2.1 MCS-51系列单片机的引脚与功能 MCS-51系列单片机的引脚与功能
• (8)XTAL2(18脚):片内振荡电路反向放大器的输出端,采用外 部时钟时该引脚为振荡信号的输入端。 • (9)P0口:P0.0~P0.7依次为第39~32脚,P0口除了可以作普通 的双向I/O口使用外,也可以在访问外部存储器时用作低8位地址线和 数据总线。 • (10)P1口:P1.0~P1.7依次为第1~8脚,P1口是带内部上拉电 阻的双向I/O口,向P1口写入“1” 时,P1口被内部上拉为高电平, 可用作输入口。当作为输出脚时,被外部拉低的P1口会因为内部上拉 电阻的存在而输出电流。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2.4 变量
《单片机技术基础教程与实践
1. 变量的定义 在C语言中,定义变量需要四方面的内容: (1)变量的数据类型,例如int, char 等 (2)变量的作用范围,与变量声明的位置有关 (3)变量的存储种类,就是在变量的存储方法,不同的存储方法,影响变量的存 在时间。 (4)变量的存储类型,就是确定变量的存储在哪类存储器中。 2. 变量的定义格式 定义一个变量的格式如下: [存储种类] 数据类型 [存储类型] 变量名表 (1)在定义格式中除了数据类型和变量名表是必要的,其它是可选项。 (2)变量的存储类型 按照变量的有效作用范围,可以将变量划分为局部变量和全局变量,还可以按照 作者:夏路易 电子工业出版社所有 变量的存储种类对变量进行划分。
(4)符号常量 代替常量的标识符,称为符号常量。例如,语句#define DATA 60中,DATA就是代 表常数60的符号常量。符号常量不是变量,常用大写字母书写,而变量常用小写字 母书写。 符号常量的定义: #difine False 0x0; //用预定义语句可以定义常量
作者:夏路易
电子工业出版社所有
作者:夏路易
电子工业出版社所有
(3)long 长整型
《单片机技术基础教程与实践
长整型长度为四个字节,用于存放一个四字节数据。分有符号long长整型signed long和无符号长整型unsigned long,默认值为signed long类型。signed int表示的数 值范围是-2147483648~+2147483647,字节中最高位表示数据的符号,"0"表示 正数,"1"表示负数。unsigned long表示的数值范围是0~4294967295。 (4)float 浮点型 浮点型符合IEEE-754标准的单精度浮点型数据,占用四个字节(32位二进制数)。 (5)* 指针型 指针型本身就是一个变量,在这个变量中存放指向另一个数据的地址。这个指针 变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度 一般为1~3个字节。指针变量也具有类型。 (6)bit 位标量 位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义 位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高 级语言中的Boolean类型中的True和False。与51单片机有关的位操作必须定位在片 内RAM中的位寻址空间。
作者:夏路易
电子工业出版社所有
3. 特殊功能寄存器SFR
《单片机技术基础教程与实践
SFR中很多寄存器都可位寻址,而且可以通过名字进行引用,例如如果要对中 断使能寄存器IE中的EA 位进行寻址,可使用EA或IE.7或0AFH,SFR中包含控制定 时/计数器、串行口中断源及中断优先级等寄存器,他们的寻址方式和DATA区中的 其它字节和位一样可位寻址。 4. IDATA 区 51系列中的一些单片机,如8052,有附加的128字节的内部RAM,位于从80H 开始的地址空间中,被称为IDATA。虽然IDATA区的地址和SFR的地址是重叠的, 但因为IDATA区只能通过间接寻址来访问,所以可以分别寻址。
.
特殊功能 寄存器
F0H E0H D0H B8H B0H A8H A0H 98H 90H 88H 80H
FFFFH
位寻址区
RAM
内部 EA=1
0FFFH 0000H
外部 EA=0
30H 2FH 20H 1FH 00H
数据 缓冲区 位寻址区 工作 寄存器区 内部数据存储器 0000H 外部数据存储器
.
数据类型 char 字符 unsigned char signed char int 整型 unsigned int signed int long 长整型 unsigned long signed long 浮点 指针 位标量 特殊寄存器 16位特殊 可寻址位 float * bit sfr sfr16 sbit 长度 单字节 单字节 双字节 双字节 四字节 四字节 四字节 1~3字节 位 单字节 双字节 位 值域 0~255 -128~+127 0~65535 -32768~+32767 0~4294967295 -2147483648~+2147483647 ±1.175494E-38~±3.402823E+38 对象的地址 0或1 0~255 0~65535 0或1 默认 默认 默认 说明
这样在以后的程序语句中就可以用P1_1来对P1口的引脚1进行读写操作了,
以上所述的数据类型中,只有bit与unsigned char两种数据类型可以直接机器指令。
作者:夏路易
电子工业出版社所有
2.2.3 常量
《单片机技术基础教程与实践
在程序运行过程中,数值不改变的量称为常量。 (1)整型常量可以表示为十进制如123,0,-89等。十六进制则以0x开头如0x34,0x3B等。长整型就在数字后面加字母L,如104L,034L,0xF340等。 (2)字符型常量是单引号内的字符,如'a','d'等,不可以显示的控制字符,可以 在该字符前面加一个反斜杠"\"组成专用转义字符。
作者:夏路易
电子工业出版社所有
(1)char字符类型
《单片机技术基础教程与实践
char类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字 符类型unsigned char和有符号字符类型signed char,默认值为signed char类型。 signed char类型用字节中最高位字节表示数据的符号,"0"表示正数,"1"表示负数, 负数用补码表示。所能表示的数值范围是-128~+127。unsigned char常用于处理 ASCII字符或用于处理小于或等于255的整型数。正数的补码与原码相同,负数的补 码等于它的绝对值按位取反后加1。 unsigned char类型用字节中所有的位来表示数值,所可表达的数值范围是0~255; 非常适合51单片机使用,因为51单片机每次处理8位数据。 (2)int 整型 整型长度为两个字节,用于存放一个双字节数据。分有符号int整型数signed int和 无符号整型数unsigned int,默认值为signed int类型。signed int表示的数值范围是- 32768~+32767,字节中最高位表示数据的符号,"0"表示正数,"1"表示负数。 unsigned int表示的数值范围是0~65535。
作者:夏路易
电子工业出版社所有
(9)sbit 可寻址位
《单片机技术基础教程与实践
sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或 特殊功能寄存器中的可寻址位。 例如,sfr P0 = 0x80; //因P1端口的寄存器是可位寻址的,所以我们可以定义 sbit P0_1 = P0^1; //P1_1为P1中的P1.1引脚 //同样我们可以用P1.1的地址去写,如sbit P1_1 = 0x91;
Flash代码存储器
作者:夏路易
电子工业出版社所有
《单片机技术基础教程与实践 1. 代码区CODE 代码区又称为代码段,用来存放可执行代码,对于51单片机存储代码的片内部空间 为4K,外部空间为64k。
2. 数据区DATA 51单片机能直接访问的片内128字节内部RAM称为数据段DATA,常把频繁使用的变 量或局部变量存储在DATA 段。 位寻址段BDATA是片内RAM中的可位寻址字节,包括16个字节共128位,每一位 都可单独寻址;这使得程序控制非常方便。
第2章 51单片机程序的C语言描述 51单片机程序的C 单片机程序的
《单片机技术基础教程与实践
使用C语言进行51单片机编程是单片机系统开发的发展方向, C语言是通用计算机程序设计语言,但现在也广泛用于单片 机开发,C语言与汇编语言相比具有使用容易、可移植性好、 可以直接操作硬件的特点,特别是在单片机上采用操作系统, 则必须采用C语言编程。 对于初学单片机来说,采用C语言入门单片机也是一个好的 选择,使用C语言可以避免汇编语言需要记忆大量指令的缺 点,快速学会单片机。 Keil软件是一个简单易学的单片机C语言开发工具,Keil软 件具有使用简单,功能强的特点。Keil软件加上C语言,是 开发51单片机的利器,也是初学单片机必须掌握的单片机开 发手段。
《单片机技术基础教程与实践 变量分为:内部变量(自动变量(auto)、静态变量(static)、寄存器变量 (register) 外部变量(全局变量、静态变量)
自动变量: 在变量前加存储种类说明符号 auto 则该变量是自动变量。在函数体内部定义的 变量,如果没有存储类型说明,都是自动变量。自动变量的作用范围在定义它的函 数体内部。自动类变量在动态存储器中分配单元,调用函数时,建立该变量存储单 元,函数返回时,该变量存储单元自动放弃。 外部变量: 使用存储类型说明符号extern定义的变量为外部变量,凡是在所有函数之前, 在函数外部定义的变量都是外部变量,定义时可以没有说明符号extern,但是一个函 数体内说明一个已经定义过的外部变量时,则必须有说明符号extern。一个外部变量 被定义后,就为它分配了固定的内存空间,外部变量的生存期是整个程序执行时间, 一直占用存储单元,因此外部变量是全局变量。各个函数使用的外部变量,只需要 在一个函数中定义,在使用该变量的函数中用extern说明就可以使用了。 若一个源文件中要引用其他源文件中定义的全局变量,就需要在文件的开头用 关键字extern说明引进的变量,例如,extern int x;则说明x是其他文件中已经定义 的全局变量。
作者:夏路易
电子工业出版社所有
2.2 C语言基础知识 语言基础知识
《单片机技术基础教程与实践
2.2.1 C语言的标识符和关键字 语言的标识符和关键字