51单片机原理与实践 C语言版 高卫东 第三章 C51程序设计基础

合集下载

c51程序设计基础doc - 第一讲 建立您的第一个C项目-推荐下载

c51程序设计基础doc - 第一讲 建立您的第一个C项目-推荐下载

C51 程序设计基础
3
C51 程序设计基础
出菜单,在这里可以做在项目中增加减少文件等操作。我们?quot;Add File to Group 'Source Group 1'"弹出文件窗口,选择刚刚保存的文件,按 ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在 Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击 它可以展开查看。
怀化职业技术学院电子电气工程系——自动化教研室 11/28/2006
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

单片机基础与应用(C语言版)第3章 C51程序设计基础

单片机基础与应用(C语言版)第3章 C51程序设计基础
第3章 C51程序设计基础
教学内容 认识C51语言 C51数据类型 C51运算符 C51程序结构 C51函数 C51数组
认识C语言
C语言程序以函数形式组织程序结构,C程序中的函数与其他语言中 所描述的“子程序”或“过程”的概念是一样的。
C程序
预编译命令 主函数
函数1 … … 函数i
函数定义
C程序基本结构
浮点型常量可分为十进制表示形式和指数表示形式两种,如0.888、 3345.345、125e3、-3.0e-3。 字符型常量是用单引号括起来的单一字符,如‘a’、‘9’等。 字符串型常量是用双引号括起来的一串字符,如“test”、“OK”等。 位类型的值是一个二进制数。如1或0。
变量
变量是一种在程序执行过程中其值能不断变化的量。
+ =、a-*==、b*+=5 等价于 a = a * (b + 5) 、%x=%、=/=3 等价于 x = x%3
算术运算符
+(加法运算) -(减法运算) * (乘法运算符) /(除法运算符) % (求余运算符,或称模运算符)如: ++ (变量自加1) -- (变量自减1)
4 % 2=0
注意
两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。 如果参加运算的两个数中有一个数为实数,则结果是实型。 求余运算要求%两侧都是整型数据。
一个变量由变量名和变量值组成,变量名是存储单元 地址的符号表示,而变量的值就是该单元存放的内容。
变量必须先定义后使用,用标识符作为变量名,并指 出所用的数据类型和存储模式,这样编译系统才能为变 量分配相应的存储空间。
变量
void delay(unsigned char i) //延时函数1 {

单片机原理与应用及C51编程技术课件第三章 单片机汇编程序设计

单片机原理与应用及C51编程技术课件第三章 单片机汇编程序设计

3.2.6 变址寻址 变址寻址是指操作数的地址由基址寄存器的地址加 上变址寄存器的地址得到。
它是以数据指针寄存器DPTR或程序计数器PC为基 址,累加器A为变址,两者相加得存储单元的地址, 所访问的存储器为程序存储器。
MOVC A,@A+DPTR MOVC A, @A+PC
•变址寻址
设指令执行前数据指针寄存器DPTR的值为 2000H,累加器A的值为05H,程序存储器 2005H单元的内容为30H,则指令执行后,累加器 A中的内容为30H。示意图如图所示。
MOV A,R0
其功能是把R0寄存器中的数送给累加器A。
Hale Waihona Puke 2021/1/57
3.2.3 直接寻址
直接寻址是指数据在存储器单元中,在指令中直 接提供存储器单元的地址。
这种寻址方式针对的是片内数据存储器和特殊 功能寄存器。例如:
MOV A,20H
直接寻址方式的寻址范围包括: 1.低128单元。在指令中直接以单元地址形式给 出。 2.专用寄存器。专用寄存器除了以单元地址形式 给出外,还可以以寄存器符号形式给出。 直接寻址是访问专用寄存器的唯一方法。 例如指令:
INC direct
;direct← (direct)+ 1
INC @Ri ;(Ri)←((Ri))+ 1
INC DPTR
;DPTR← (DPTR) + 1
其中,ADD和ADDC指令在执行时要影响CY、 AC、OV和P标志位。而INC指令除了INC A要 影响P标志位外,对其它标志位都没有影响。
在MCS-51单片机中,常用ADD和ADDC配 合使用实现多字节加法运算。
2021/1/5
2
§3.1 51系列单片机指令系统概述

《C51编程基础》课件

《C51编程基础》课件

3 中断寄存器
详细介绍和配置C51中断相关的寄存器,实 现中断程序的注册和响应。
4 中断编程实现
编写中断程序的代码,充分利用中断功能实 现各种实时性要求的应用场景。
串口编程
1 串口的基本原理
学习串口通信的基本原理和通讯流程,理解 其在C51编程中的应用。
2 串口的寄存器
介绍串口通信相关的寄存器和控制字,帮助 您配置并控制串口通信。
了解GPIO的基本概念和作用,学习如何使用GPIO进行输入和输出控制。
2 GPIO配置和初始化
掌握如何配置和初始化GPIO口,使其适应不同的应用场景和需求。
3 GPIO读写操作
学习如何读取和写入GPIO口的状态,实现与外部设备的数据交互。
定时器/计数器编程
1 定时器/计数器的基本原理
了解定时器/计数器的工作原理和应用场景,理解它们在C51编程中的重要性。
C51芯片介绍
内部结构和寄存器
详细介绍C51芯片的内部结构 和各类寄存器,以及如何使用 这些寄存器进行硬件控制。
最小系统电路图
展示C51芯片最小系统的电路 图,帮助您理解C51芯片的原 理和工作方式。
引脚定义和初始化
介绍C51芯片引脚的定义和初 始化方法,使您能够将芯片与 外部电路连接并正确配置。
3 串口的配置和初始化
掌握配置和初始化串口的方法,实现与外部 设备之间的数据传输。
4 串口数据传输实现
编写程序代码,实现串口间的数据传输,用 于与其他设备进行通信。
《C51编程基础》PPT课 件
C51编程基础PPT课件,旨在介绍C51编程的基础知识和技巧。通过这套课件, 您将掌握C语言基础、C51芯片的特性和编程方法,并了解常见的硬件应用场 景。

C51单片机应用与C语言程序设计第三章讲解精品PPT课件

C51单片机应用与C语言程序设计第三章讲解精品PPT课件

任务三 用函数调用简化运动程序
• main函数是不能被其它函数调用的,那它的返回值类型int是怎么 回事呢?
– 其实不难理解,main函数执行完之后,它的返回值是给操作系统的。 虽然在main函数体内并没有什么语句来指出返回值的大小,但系统默 认的处理方式是:当main函数成功执行,它的返回值为1;否则为0。
© 2008 Open-Tech. All rights reserved. 2021/1/31
任务一 基本巡航动作
• 命令组合,让机器人向前走、左转、右转和向后走。
– 源程序请参照教材第39页的ForwardLeftRightBackward.c。
• 尝试1个轮子不动,另一个轮子全速旋转,从而以一个轮子 为支点,原地旋转。
© 2008 Open-Tech. All rights reserved. 2021/1/31
任务三 用函数调用简化运动程序
• 下边的Forward函数可以使机器人向前运动1.5秒。该函数是无形参、无 返回值的函数,没有太大的使用价值。
void Forward(void) {
int i; for(i=1;i<=65;i++)
void Forward(int PulseCount,int Velocity) /* Velocity should be between 0 and 200 */ {
• 无论机器人要执行何种动作,都离不开前面讨论的各种基本动作。为了 各种应用程序方便使用这些基本动作程序,你可以将这些基本动作放在 函数中,供其它函数调用来简化程序。
© 2008 Open-Tech. All rights reserved. 2021/1/31
任务三 用函数调用简化运动程序

单片机C51语言及程序设计PPT课件

单片机C51语言及程序设计PPT课件
* 括号项——可以缺省(但需有缺省值)
.
9
【存储类别】 数据类型 【存储器类型】 变量名
共有四个说明符: 1、auto(自动型)——变量的作用范围在定义它的函数体或
语句块内。执行结束后,变量所占内存即被释放。 2、extern(外部型) ——在一个源文件中被定义为外部型的
变量,在其它源文件中需要通过extern说明方可使用。 3、static(静态型) ——利用static可使变量定义所在的函数
【存储类别】 数据类型 【存储器类型】 变量名
三种编译模式分别对应于三种缺省存储类型:
C51编译器可根据当前采取的编译模式自动认定默认的存 储类型
约定:若无特殊声明,一般均为“SMALL编译模式”
.
22
【存储类别】 数据类型 【存储器类型】 变量名
变量名可以由字母、数字和下划线三种字符组成,且第一个 字符必须为字母或下划线,变量名长度随编译系统而定。 变量名具有字母大小写的敏感性,如SUM和sum代表不同的 变量。
计算表达式或数据类型的字节数
静态变量
结构类型数据
构成Switch选择结构
重新进行数据类型定义
联合类型数据
无符号数数据
无类型数据
该变量在程序执行中可被隐含地改变
. 构成while和do…while循环结构
6
Keil C51编译器除了有ANSI C标准的32个关键字外,还根据51单片机的特点扩 展了相应的关键字。在Keil C51开发环境的文本编辑器中编写C程序,系统可 以把保留字以不同的颜色显示,缺省颜色为蓝色。下表为Keil C51编译器扩展
51单片机的 三个逻辑存储空间: 片内数据存储器,片外数据存储器和程序存储器。
.

单片机高级语言C51程序的设计ppt课件

单片机高级语言C51程序的设计ppt课件

二.C51言语的标识符和关键字
C51扩展的关键字
三.C51的数据类型及运算符
1.根本数据类型的长度
2.C51言语的扩展
3.特殊功能存放器的数据类型
4.DATA 存储类型
5.BDATA 存储类型
6.IDATA 存储类型
7.PDATA和XDATA 存储类型
8.PDATA和XDATA 比较
本章目录3
六.函数 1.函数格式 2.重入函数 3.中断效力函数
七.C51程序设计举例 1.例1---求数学式 2.例2---简单控制 3.例3---延时 4.例4---运用定时器0定时---查询方式 5.例5---运用定时器0定时---中断方式 6.例6---利用定时器1计数 7.C51开发环境 7.1.伟福模拟软件 7.2. uVision3集成开发环境 7.3. C51编译练习程序TEXT.C
例8-5
例8-7(1)
• 按课本图7-14输出正弦波
例8-7(2)
例8-8(1)
例8-8(2)
例8-8(3)
例8-8(4)
十.加一减一综合实际C51程序设计
用如下的电路图,实现:按“加一〞按钮 显示加“1〞,按“加二〞按钮显示加“2〞, 按“减一〞按钮显示减“1〞,按“减二〞按 钮显示减“2〞;计数的最大值为19,最小值 为0;按“清0〞按钮显示“0〞〔清0〕。
电路图
程序〔1〕
#include"reg51.h"//头文件 #include"math.h"//头文件 unsigned char code disp_code[10]={
0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" };

第3章 单片机C51语言程序设计基础dgmecPPT课件

第3章  单片机C51语言程序设计基础dgmecPPT课件

3.3.2 关键字
关键字是C51语言重要的组成部分,是C51编译器已定 义保留的专用特殊标识符,有时也称为保留字。这些 关键字通常有固定的名称和功能,如int、float、if、 for、do、while、case等。
3.4 C51的变量类型
数据类型是C51语言最基本的组成部分。在C51中,每 个变量在使用之前必须定义其符型变量就是用来存放单个字符的变量类型。字符 型变量的定义格式是“类型说明符 变量标识符,变量标识 符…”。
C51语言中的数据类型分为基本数据类型和聚合数据类 型,首先介绍基本数据类型。
3.4.1 C51的数据类型
C51的基本数据类型有整型(int)、浮点型(float)、字 符型(char)、无值型(void)。
在基本数据类型中,除void类型外,其前面均可以有各种 修饰符。修饰符用来改变基本类型的意义,以便更准确地 适应各种情况的需求。常用的修饰符有signed(有符号)、 unsigned(无符号)、long(长型符)、short(短型符)。 在C51语言中的所有数据类型的字长和取值范围,参见书中 表3-2所示。
3.2.1 注释
任何编程语言都支持注释语句。注释语句只对代码 起到功能描述的作用,在实际的编译链接过程中不起 作用。C51语言中可以通过两种方式来表示注释内容: 用“//”符号开头来注释一行,如“//变量声明”。 用“/*”符号开头,并以“*/”符号结束来对C51源程 序中的任何部分进行注释,如“/*声明整型变量ch */”。
3.2.2 命名
在进行程序设计时,经常需要自定义一些函数或者变 量。一般来说,只要符合C51命名规范即可通过编译。但是, 为了便于源程序的理解和交流,在进行命名时应注意如下 几点:
自定义函数或者变量的名称最好能反映该函数或变量的功 能用途。

单片机基础与应用(C语言版)第3章 C51程序设计基础

单片机基础与应用(C语言版)第3章 C51程序设计基础

选择语句
多分支选择的switch语句, 其一般形式如下: switch(表达式)
{ case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; …… case常量表达式n: 语句组n;break; default : 语句组n+1;
} 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达 式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应 该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继 续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同, 则执行default后的语句组。
位运算
按位或操作符: |
或操作
格式:x|y
规则:对应位均为0时才为0,否则为1 例如, i=i|0x0f; 等同于
i|=0x0f;
主要用途:将1个数的某(些)位置1,其余各位不变
位运算
异或操作
按位异或操作符:^ 格式:x^y 规则:对应位相同时为0,不同时为1
例如, i=i^0x0f; 等同于 i^=0x0f; 主要用途:使1个数的某(些)位翻转(即原来为1的位 变为0,为0的变为1),其余各位不变。
右移运算符“>>”的功能,是把“>>”左边的操作数 的各二进制位全部右移若干位,移动的位数由“>>” 右边的常数指定。进行右移运算时,如果是无符号数, 则总是在其左端补“0”
练习
1 .若x = 10, 则!X的值为真或假? 2. 若a = 3, b = 2, 则if(a&b)的值为真或假? 3. 5 && 0 ||8的值为?
浮点型 指针型 位类型 特殊功能寄存器 16位特殊功能寄存器 可寻址位

单片机-第3章-C51编程基础

单片机-第3章-C51编程基础

3.3.2变量的绝对定位
C51有三种方式可以对变量(I/O端口)绝对定位: 绝对定位关键字_at_、指针、库函数的绝对定位宏。
C51扩展的关键字_at_专门用于对变量作绝对定位,用 在变量的定义中,其格式为: [存储类型] 数据类型 [存储区] 变量名1 _at_ 地址常数 [, 变量名2, ...]
在C51中对变量进行定义的格式为:
[存储类型] 数据类型 [存储区] 变量名1[=初值] [,变量名2[=初值]] [,……];
或者
[存储类型] [存储区] 数据类型 变量名1[=初值] [,变量名2[=初值]] [,……];
变量定义的4部分称为变量的4种属性,其中用方括 号表示的部分在定义时可以省略。
所占位数
ห้องสมุดไป่ตู้数的表示范围
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
16
0~65535
32
0~4294967295
32
3.4e-38~3.4e38
64
1.7e-308~1.7e308
8
-128~127
8
0~255
C-51的数据类型扩充定义
3.3.1变量存储类型与存储区
内用存储类型仍沿用ANSI C的说法,C51 变量 有4种存储类型 : 动态存储(auto)、 (静态存储 (static)、全局存储(extern)、寄存器存储(register)。
动态存储的变量用auto定义,叫动态变量,也 叫自动变量。其作用范围在定义它的函数内或复合 语句内部。
3.2 C51的数据类型

51单片机原理与实践 C语言版 高卫东 第三章 C51程序设计基础

51单片机原理与实践 C语言版 高卫东  第三章 C51程序设计基础

3.1 C51特点
3.1.1 C51与标准C的差别
(1)C51中定义的库函数和标准C语言定义的库函数不同。标准 的C语言定义的库函数是按通用微型计算机来定义的,而C51中的 库函数是按MCS-51单片机相应情况来定义的;
(2)C51中的数据类型与标准C的数据类型也有一定的区别,在 C51中还增加了几种针对MCS-51单片机特有的数据类型;
3.1.1 C51语言概述
随着单片机硬件性能的不断提高和应 用技术的不断发展,开发者越来越注重 目标系统的开发成效,而开发成效在很 大程度上取决于程序本身的编写效率。 为了适应这种要求,出现了单片机高级 语言—C语言。
3.1 C51特点
3.1.1 C51语言概述
使用C语言进行51单片机编程是单片机系统开发的发展方 向,C语言是通用计算机程序设计语言,但现在也广泛用于单片 机开发,C语言与汇编语言相比具有使用容易、可移植性好、可 以直接操作硬件的特点,特别是在单片机上采用操作系统,则必 须采用C语言编程。
(3)long 长整型
长整型长度为四个字节,用于存放一个四字节数据。分有符号 long长整型signed long和无符号长整型unsigned long,默认 值为signed long类型。signed int表示的数值范围是- 2147483648~+2147483647,字节中最高位表示数据的符号, "0"表示正数,"1"表示负数。unsigned long表示的数值范围
③ 静态变量(static)——静态局部变量/静态全局变量 ④ 寄存器变量(register)——以寄存器为存储空间的变量
* 若省略存储种类选项,则变量默认为自动变量
3.2.1 C51的数据类型

第3章单片机C51语言程序设计基础

第3章单片机C51语言程序设计基础
第3章 单片机C51语言程序设计基础
3.1 语句与流程控制 3.2 函数 3.3 本章小结 3.4 实训三 简易十字路口交通信号灯控制
返回首页 第3章单片机C51语言程序设计基础
教学提示
C51 语言程序是由函数组成的。函数是C51 语言的基 本模块。用C51语言设计程序就是编写函数。从来源看, 函数可分为用户自定义函数和标准库函数两大类。在一个 C51 语言程序中有且只能有一个名为main的主函数。C51 语言程序的执行部分是由语句组成的。程序的各种主要功 能都是由语句实现的。C 语言的Байду номын сангаас句可分为流程控制语句、 表达式语句、复合语句、空语句。本章重点介绍C51语言 中语句的使用方法以及C51语言中新增的函数类型——中 断函数和重入函数。
第3章单片机C51语言程序设计基础
3.1 语句与流程控制
3.1.1 基本语句 3.1.2 分支语句 3.1.3 循环语句 3.1.4 辅助控制语句
第3章单片机C51语言程序设计基础
3.1.1 基本语句
基本语句主要用于顺序结构程序的编写。在C51语言中, 语句的结束符为分号。 1. 赋值语句
在任何合法的赋值表达式的尾部加上一个分号就构成 了赋值语句。赋值语句的一般形式为
图3.4 if-else语句的执行过程
【例3.3】 基于图3.2,编程实现下列功能:开机后,全部发 光二极管不亮。只有当K1键与K2键同时按下,发光二极管 才全亮;否则发光二极管全灭。
第3章单片机C51语言程序设计基础
3. if-else-if语句
if-else-if语句的一般形式: if( 表达式1 ) 语句1; else if( 表达式2 ) 语句2; else 语句3;
switch语句的一般形式:

C51单片机C语言程序设计

C51单片机C语言程序设计

C51单片机C语言程序设计单片机C语言程序设计是指使用C语言编写程序来控制和操作单片机的工作。

单片机是一种集成电路,它包含了中央处理器、存储器、输入输出接口等功能模块,广泛应用于嵌入式系统中。

在单片机C语言程序设计中,首先需要了解C语言的基本语法和语法规则。

C语言是一种面向过程的编程语言,具有简洁、高效和可移植等特点。

接下来,要熟悉单片机的硬件结构和寄存器的使用方法,了解单片机的输入输出方式、中断、定时器等功能。

在进行单片机C语言程序设计时,需要按照以下步骤进行:1.设置寄存器和引脚的初始化:根据单片机的型号和需要的功能,设置相关的寄存器和引脚的初始化。

这些初始化可以包括引脚的输入输出模式设置、中断向量表的初始化、定时器的设定等。

2.主程序的编写:主程序是单片机的执行入口,通过主程序可以完成各种功能的实现。

在主程序中,可以定义变量、函数和结构体等。

3.中断程序的编写:中断程序是由硬件触发的,可以在需要时被调用执行。

中断程序可以包括外部中断、定时器中断等。

在编写中断程序时,需要设置相应的中断向量,并完成相应的中断服务程序。

4.函数的编写:函数是实现其中一特定功能的代码段,通过函数可以提高程序的模块化和可重用性。

需要根据实际需求编写相应的函数,并在主程序中调用。

5. 调试和测试:在编写完程序后,需要进行调试和测试。

通过调试和测试可以发现程序中的bug和错误,并进行修复。

可以通过缓慢单步调试、观察变量值和输出结果等方式进行调试和测试。

6.优化和改进:在程序完成后,可以对程序进行优化和改进。

通过优化可以提高程序的性能和效率,减少资源的占用。

可以使用编译优化选项、减少不必要的计算和内存使用等方式进行优化。

以上是单片机C语言程序设计的基本步骤和内容。

在实际操作中,还需要根据具体的需求和硬件平台进行相应的调整和编程。

通过合理的设计和编程,可以实现单片机的各种功能和应用,广泛应用于电子设备、汽车、家电等领域。

无论是初学者还是有经验的程序员,都可以通过单片机C语言程序设计来进一步提高和拓展自己的技能。

第3章51系列单片机程序设计(C语言部分)PPT课件

第3章51系列单片机程序设计(C语言部分)PPT课件

第3章 51系列单片机程序设计(C部分)
3.4.3 C51数据的存储类型与MCS-51存储结构
表 3.4.2 C51存储类型与MCS-51存储空间的对应关系
存储类型 与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节)
第3章 51系列单片机程序设计(C部分)
整型变量值0x1234, 0x5678以图所示的方式存放在内存中。
地址
+0 +1
… 0x12 0x34

地址 +0 +1 +2 +3
0x12 0x34 0x56 0x78 ….
图3.4.1 整型数的存储结构 图3.4.2 长整型变量的存储结构
第3章 51系列单片机程序设计(C部分)
第3章 51系列单片机程序设计(C部分)
同 学 们:
上 午 好!
第3章 51系列单片机程序设计(C部分)
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
第3章 51系列单片机程序设计(C部分)
S为符号位,1表示负,0表示正;E为阶码;M为23位尾数,最高位为"1"。
第3章 51系列单片机程序设计(C部分)
注意:
在编程时,如果只强调运算速度而不进行负数运算时, 最好采用无符号(unsigned)格式。
无符号字符类型的使用:无论何时,应尽可能使用无符号 字符变量,因为它能直接被MCS-51所接受。基于同样的原因, 也应尽量使用位变量。有符号字符变量虽然也只占用一个字 节,但需要进行额外的操作来进行测试代码的符号位。这无 疑会降低代码效率。

单片机原理与C51程序设计基础教程第3章课后习题及答案

单片机原理与C51程序设计基础教程第3章课后习题及答案

答案1 立即寻址寄存器寻址间接寻址直接寻址变址寻址相对寻址位寻址2 累加器A PC DPTR3 00H,0,0,0,04 指令5 一二三6 转移指令的PC值加上它的字节数7 DPH=3CH , DPL=5FH , SP=4FH选择题1 C2 C3 A4 D5C问答题1(1) 分析问题:首先必须明确求解问题的意义和任务。

对项目背景和要完成的任务进行详细地了解和分析,将一个实际的问题转化为单片机可以处理的问题。

(2) 确定算法:根据实际问题的要求和指令系统的特点,决定所采用的计算公式和计算方法。

这是正确编程的基础,比程序设计语言本身更为重要。

(3) 绘制框图:根据所选定的算法,制定出运算步骤和顺序,把运算过程画成程序框图。

这样使程序清晰,结构合理,便于调试。

(4) 分配资源:要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。

(5) 编写程序:编写程序就是采用汇编语言来实现上面已确定的算法,也即是将由人类自然语言组织的程序框图转化为计算机语言组织的源代码。

(6) 仿真调试:利用单片机各种开发工具对所编写的程序进行测试,检验程序是否完成了指定的功能。

测试过程要尽可能仔细,保证程序中的各条支路都得到了检验。

(7) 软件优化:在完成指定功能的基础上,进行程序优化,以进一步缩短程序量、减少运算时间和节省工作单元。

(8) 状态固化:完成前期工作之后,将程序烧录到EEPROM等程序存储器上,保证单片机系统每次上电后都能正确运行程序。

(9) 文档说明:将程序的功能和使用方法,程序的基本结构和所采用的主要算法以及程序必要说明和注意事项等问题整理成一个文档,不仅便于用户使用,而且便于对程序的维护和扩充。

2.(1)bit位标量:利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。

它的值是一个二进制位,不是0 就是1,类似一些高级语言中的Boolean 类型中的True 和False。

单片机原理与应用及C51程序设计课件电子教案-第三章汇编

单片机原理与应用及C51程序设计课件电子教案-第三章汇编
MCS-51系列单片机指令系统功能强、指令短、执行快。从功能 上可分成五大类:数据传送指令、算术运算指令、逻辑操作指令、 控制转移指令和位操作指令。
*** 指令格式
[标号:] 操作码助记符 [目的操作数][,源操作数] [;注释]
(1)操作码助记符表明指令的功能,不同的指令有不同的指令助记符,它 一般用说明其功能的英文单词的缩写形式表示。
*** 指令中用到的标识符
为便于后面的学习,在这里先对指令中用到的一些符号的约定意 义作以说明:
(1)Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1, 表示R0或R1。n取0~7,表示R0~R7。
(2)#data:表示包含在指令中的8位立即数。 (3)#data16:表示包含在指令中的16位立即数。
在MCS-51系统中,位地址的表示可以用以下几种方式: 1.直接位地址(00H~0FFH)。例如:20H 2.字节地址带位号。例如:20H.3表示20H单元的3位。 3.特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。 4.位符号地址。例如:TR0是定时/计数器T0的启动位。
*** 指令寻址
数可以为A、Rn、@Ri、direct,组合起来总共16条,按目的操作数 的寻址方式划分为五组:
(1)以A为目的操作数
MOV A,Rn ;A← Rn
MOV A,direct ;A←(direct)
MOV A,@Ri ;A←(Ri)
MOV A,#data ;A← #data
(2)以Rn为目的操作数
MOV Rn,A ;Rn ← A
R1 80H
80H 20H
A 20H
在MCS-51单片机中,寄存器间接寻址用到的寄存器只能是通用 寄存器R0、R1和数据指针寄存器DPTR,它能访问的数据是片内数据 存储器和片外数据存储器。其中,片内数据存储器只能用R0和R1作 指针间接访问;片外数据存储器,低端的256字节单元,既可以用两 位十六进制地址以R0或R1作指针间接访问,也可用四位十六进制地 址以DPTR作指针间接访问,而高端的字节单元则只能以DPTR作指针 间接访问。对于片内RAM和片外RAM的低端256字节都可以用R0和 R1作指针访问,它们之间用指令来区别。片内RAM访问用MOV指令, 片外RAM访问用MOVX指令。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.2 存储类型及存储区
【存储种类】 数据类型 【存储类型】 变量名 51系列单片机有三个逻辑存储空间: 片内数据存储器,片外数据存储器和程序存储器。
FFH 8052
80H
3.2.2 存储类型及存储区
【存储种类】
存储器类型 code data idata bdata xdata pdata
数据类型
3.3 C51对51单片机内部资源的控制
2、sfr16:定义16位特殊功能寄存器
8051芯片可以将两个8位SFR作为一个16位寄存器来访 问。条件是这两个SFR必须处在相邻地址上,并且 是低字节在高字节地址的前面。 C51提供了sfr16数据类型来进行16位特殊功能寄存器 的声明,声明时低字节地址被用来作为sfr16的地 址。

3.2.1 C51的数据类型
(2)int 整型
整型长度为两个字节,用于存放一个双字节数据。分有符 号int整型数signed int和无符号整型数unsigned int,默认值 为signed int类型。signed int表示的数值范围是-32768~ +32767,字节中最高位表示数据的符号,"0"表示正数,"1"表 示负数。unsigned int表示的数值范围是0~65535。
3.2.1 C51的数据类型
(4)float 浮点型
浮点型符合IEEE-754标准的单精度浮点型数据,占用四个 字节(32位二进制数)。
(5)指针型
指针型本身就是一个变量,在这个变量中存放指向另一个数 据的地址。这个指针变量要占据一定的内存单元,对不同的处理 器长度也不尽相同,在C51中它的长度一般为1~3个字节。指针 变量也具有类型。
单片机与接口技术
任课教师:郑旭丹
第三章 C51程序设计基础
主要内容
3.1 C语言与MCS-51单片机 3.2 C51的数据类型和存储模式 3.3 C51对单片机内部资源的控制 3.4 C51的基本运算和控制语句 3.5 C51的构造数据类型 3.6 C51函数
3.7 C51的其他问题
3.1 C51特点
P0,P1,P2,P3是sfr声明的特殊功能寄存器的名称。
3.3 C51对51单片机内部资源的控制
reg51.h和reg52.h是定义51单片机和52单片机特殊功 能寄存器和位寄存器的,这两个头文件大部分内容一样, 52单片机比51多一个定时器T2,所以reg52.h也多几 行定义T2寄存器的内容。
(3)long 长整型
长整型长度为四个字节,用于存放一个四字节数据。分有符 号long长整型signed long和无符号长整型unsigned long,默认 值为signed long类型。signed int表示的数值范围是- 2147483648~+2147483647,字节中最高位表示数据的符号,"0" 表示正数,"1"表示负数。unsigned long表示的数值范围是0~
3.1.1 C51语言概述
随着单片机硬件性能的不断提高和应 用技术的不断发展,开发者越来越注重 目标系统的开发成效,而开发成效在很 大程度上取决于程序本身的编写效率。 为了适应这种要求,出现了单片机高级 语言—C语言。
3.1 C51特点
3.1.1 C51语言概述
使用C语言进行51单片机编程是单片机系统开发的发展方 向,C语言是通用计算机程序设计语言,但现在也广泛用于单片 机开发,C语言与汇编语言相比具有使用容易、可移植性好、可 以直接操作硬件的特点,特别是在单片机上采用操作系统,则 必须采用C语言编程。 对于初学单片机来说,采用C语言入门单片机也是一个好的 选择,使用C语言可以避免汇编语言需要记忆大量指令的缺点, 快速学会单片机。
3.2.1 C51的数据类型
(6)bit 位变量
位标量是C51编译器的一种扩充数据类型,利用它可定义一 个位标量,但不能定义位指针,也不能定义位数组。它的值是 一个二进制位,不是0就是1,类似一些高级语言中的Boolean类 型中的True和False。与51单片机有关的位操作必须定位在片内 RAM中的位寻址空间。
3.7 C51的其他问题
3.3 C51对51单片机内部资源的控制
1、 sfr:定义8位特殊功能寄存器
sfr可以用来定义8051单片机的8位特殊功能寄存器。
sfr占用一个字节内存单元,取值范围是0 ~ 255。
sfr定义特殊功能寄存器SFR,语法规则如下:
sfr 或 sfr16 sfr_name = 字节地址常数; 特殊功能寄存器名称是一个合法的C标识符。等号后 的地址必须是数值常量,不允许使用带运算符的表 达式。

signed char类型用字节中最高位字节表示数据的符号,"0" 表示正数,"1"表示负数,负数用补码表示。所能表示的数值范 围是-128~+127。unsigned char常用于处理ASCII字符或用于 处理小于或等于255的整型数。

unsigned char类型用字节中所有的位来表示数值,所可表达 的数值范围是0~255;非常适合51单片机使用,因为51单片机 每次处理8位数据。
3.2.2 存储类型及存储区
【存储种类】
FFH 8052
数据类型
【存储类型】
256B
变量名
80H
idata区 data区
xdata区 bdata区
256B 256B 256B
code 区
每一个256字 节都是pdata区
3.2.3
【存储种类】
存储模式
数据类型 【存储类型】 变量名
如果在变量声明时未声明变量的存储器类型,则该变量的存 储器类型,由程序的存储模式来决定。
Keil软件是一个简单易学的单片机C语言开发工具,Keil软 件具有使用简单,功能强的特点。Keil软件加上C语言,是开发 51单片机的利器,也是初学单片机必须掌握的单片机开发手段。
3.1 C51特点
3.1.1 C51与标准C的差别
(1)C51中定义的库函数和标准C语言定义的库函数不同。标准 的C语言定义的库函数是按通用微型计算机来定义的,而C51中的库 函数是按MCS-51单片机相应情况来定义的; (2)C51中的数据类型与标准C的数据类型也有一定的区别,在 C51中还增加了几种针对MCS-51单片机特有的数据类型; (3)C51变量的存储模式与标准C中变量的存储模式不一样,C51 中变量的存储模式是与MCS-51单片机的存储器紧密相关; (4)C51与标准C的输入输出处理不一样,C51中的输入输出是通 过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进 行初始化; (5)C51与标准C在函数使用方面也有一定的区别,C51中有专门 的中断函数。
主要内容
3.1 C语言与MCS-51单片机 3.2 C51的数据类型和存储模式 3.3 C51对单片机内部资源的控制 3.4 C51的基本运算和控制语句 3.5 C51的构造数据类型 3.6 C51函数
3.7 C51的其他问题
3.2.1 C51的数据类型
c语言中数据有常量和变量之分。 在程序运行过程中,数值不改变的量称为常量。 包括:整型常量、字符型常量、字符串型常量、符 号常量。 符号常量的定义: #difine False 0x0; //用预定义语句可以定义常量 #difine TRUE 0x1; //这里定义TRUE为1, False为0
【存储种类】 数据类型 【存储类型】 变量名
① 自动变量(auto)——在函数内部定义的变量,退出函 数后,分配给该变量的存储单元即自行消失(局部变量)。 ② 外部变量(extern)——在函数外部定义的变量,可始 终保持变量的数值(全局变量)。
【强调】一个外部变量只能被定义一次,在定义文储类型】
大小 64KB 128B 256B 16B 64KB 256B
变量名
描述 用来说明常量 访问速度快
存储区域 程序存储区 直接寻址的内部数据存 储区 间接寻址的内部数据区 位寻址的内部数据存储 区 外部数据存储或 分页的外部数据存储区
可访问整个内部数据区域 可使用位寻址或字节寻址来访问 这一区域 使用DPTR来访问外部数据存储 器 利用R0,R1来访问分页的外部数 据存储器
(7)sfr 特殊功能寄存器 特殊功能寄存器也是一种扩充数据类型,占用一个内存单元, 值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存 器。 例如sfr P1= 0x90这一语句定义P1标识符代表单片机P1端口在 片内的寄存器(地址0x90),在后面的语句中可以用P1= 255(对 P1端口的所有引脚臵高电平)之类的语句来操作特殊功能寄存器。
3.2.1 C51的数据类型
(8)sbit 可寻址 位
sbit是C51中的一种扩充数据类型,利用它可以访问芯片内 部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。 例如,sfr P0 = 0x80; //因P0端口的寄存器是 可位寻址的,所以我们可以定义 sbit P0_1 = P0^1; //P0_1为P0口中的P0.1引脚 同样我们可以用P1.1的地址去写,如sbit P1_1 = 0x91; 这样在以后的程序语句中就可以用P1_1来对P1口的引脚1进行读 写操作了。 以上所述的数据类型中,只有bit与unsigned char两种数 据类型可以直接转换成机器指令。在编写C51程序时,应尽可能 使用无符号字符变量,以及位变量。
char 字符 int 整型 long 长整型 浮点 指针 位标量 特殊寄存器 16位特殊 可寻址位
bit sfr sfr16 sbit
3.2.1 C51的数据类型
(1)char字符型
char类型的长度是一个字节,通常用于定义处理字符数据的 变量或常量。分无符号字符类型unsigned char和有符号字符类 型signed char,默认值为signed char类型。
相关文档
最新文档