最新MCS-51单片机C语言程序设计

合集下载

MCS51单片机C语言编程

MCS51单片机C语言编程

实验二 MCS-51单片机C语言编程练习一. 实验目的1. 了解单片机的C51语言与汇编语言以及标准C语言的异同,掌握C51语言的基本语法知识以及特有的程序设计特点。

2. 掌握使用C51语言进行顺序、分支、循环结构的程序设计方法。

3. 能够使用C51语言,独立设计出具有一定综合性的单片机应用程序,并与汇编语言的相应程序进行比较,加深理解。

4. 对应用问题能抽象出数学模型,绘制软件程序的流程图,并能用C51语言实现。

二.预习与思考1. 预习理论教材中“C51语言程序设计”的相关内容,掌握C51程序设计的基本方法、思路以及设计规范。

2. 预习理论教材中“C51程序设计”的相关例程。

3. 掌握单片机C51语言的调试方法,体会与标准C语言的异同。

4. 思考如何使用C51语言,对顺序、分支、循环结构的单片机应用程序进行设计,重点体会C51语言特有的设计方法与思想。

三. 实验原理1. 单片机的C51语言简介通常,将一些能够对MCS—51系列单片机进行硬件操作的C语言统称为C51语言。

在众多的C51语言中,功能最强、最受用户欢迎的是德国KEIL公司的Keil C51语言。

单片机应用系统的程序设计,既可以采用汇编语言,也可以采用C51语言,两者各具特色。

其中,汇编语言是一种用助记符来代表机器语言的符号语言。

因为它最接近机器语言,所以汇编语言对单片机的操作直接、简捷,编写的程序紧凑、执行效率较高。

但是,不同种类的单片机其汇编语言存在一定的差异。

在一种单片机上开发的应用程序,通常不能直接应用到另一种单片机芯片上,如果进行程序的移植,难度也比较大。

与此同时,汇编语言开发的程序可读性较差,不容易理解,特别是当单片机应用系统的规模比较大时,汇编语言的编程工作量非常大,从而影响应用系统的开发效率。

相对而言,C51语言恰好可以克服汇编语言的一些缺欠。

例如,C51语言可读性好、可移植性高,与自然语言比较接近,并且相同功能的程序使用C51语句的数量要远小于汇编语句。

大学课件MCS51单片机指令系统与汇编语言程序设计

大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

单片机C51语言及程序设计

单片机C51语言及程序设计
1)将SFR的绝对位地址定义为位变量名



C51编译器在头文件“REG51.H”中定义了全部sfr/sfr16和sbit变量。 用一条预处理命令#include <REG51.H>把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。
应用举例:
片内数据存储器,片外数据存储器和程序存储器。
通常下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前32个字符在编译时有效,因此标识符的长度一般不要超过32个字符。
关键字是一种已被系统使用过的具有特定含义的标识符。用户不得再用关键字给变量等命名。C语言关键字较少,ANSI C标准一共规定了32个关键字,见表
变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。
【存储类别】 数据类型 【存储器类型】 变量名
变量名不得使用标准C语言和C51语言的关键字。
unsigned char data system_status = 0;
//定义system_status为无符号字符型自动变量,该变量位于data区中且初值为0。
sfr或sfr16型 51MCU中有21个SFR,如何定义与这些单元相关的变量?
例如,sfr P0 = 0x80; //定义P0口地址80H sfr PCON = 0x87; //定义PCON地址87H sfr16 DPTR=0x82; //定义DPTR的低端地址82H
单精度浮点数
for
程序语句
构成for循环结构
goto
程序语句
构成goto转移结构
if
程序语句

mcs51单片机c语言程序设计

mcs51单片机c语言程序设计

MCS51单片机的中断系统
MCS51单片机的中断系统是其处理突发事件的重要机制。
MCS51单片机支持多个中断源,包括外部中断、定时器中断等。当某个中断源触发时,单片机可以 暂停当前的任务,转而处理该中断事件,处理完毕后再回到原来的任务继续执行。这使得单片机能够 快速响应突发事件,提高系统的实时性。
通过ADC0809芯片实现 模拟信号到数字信号的 转换,并将结果输出到 LED显示。
04
MCS51单片机的硬件资源与编 程
MCS51单片机的IO端口
MCS51单片机的IO端口是其与外部设备交互的重要接口。
MCS51单片机拥有多个IO端口,每个端口都有一组引脚与之对应,可以用于输 入和输出操作。这些端口可以配置为输入模式或输出模式,以便读取外部设备的 状态或控制外部设备。
MCS51单片机的定时器/计数器
MCS51单片机的定时器/计数器用于产生定时信号和控制时 间间隔。
MCS51单片机内部有多个定时器/计数器,可以用于产生精 确的定时信号或者对外部事件进行计数。这些定时器/计数器 可以独立配置,以适应不同的应用需求。通过定时器/计数器 ,单片机可以实现定时操作、延时操作等功能。
MCS51单片机的串行通信接口
MCS51单片机的串行通信接口是其 与其他设备进行数据交换的重要通道 。
VS
MCS51单片机支持多种串行通信协 议,如UART、SPI等。通过串行通信 接口,单片机可以与其他设备进行数 据交换,实现远程控制、数据采集等 功能。在串行通信过程中,单片机需 要对数据进行格式化、校验等处理, 以确保数据的正确性和可靠性。
MCS51单片机C语言程序的调试方法
仿真调试
使用仿真器进行程序调试,观察程序 运行状态和变量值的变化。

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

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

idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata
分页寻址片外数据存储区(256字节)由MOV @Ri访问(i=0,1)
xdata
片外数据存储区(64 KB)由MOVX @DPTR访问
code
程序存储器64 KB空间,由MOVC @DPTR访问
第3章 51系列单片机程序设计(C部分)
/* Ary37定义为abry[3]的第7位 */
第3章 51系列单片机程序设计(C部分)
3.5 数 组
数组:数组是一组类型相同 有序数据的集合。用数组名 和下标来唯一确定数组中的 元素。
第3章 51系列单片机程序设计(C部分)
3.5.1 一维数组
一、一维数组的定义 形式:类型说明符 数组名 [常量表达式]
使用C51进行编程时,MCS-51片内的I/O口与片外扩展的I/O可以统一在一个头文 件中定义,也可以在程序中(一般在开始的位置)进行定义。
对于MCS-51片内I/O口按特殊功能寄存器方法定义。 例如:
sfr P0=0x80 ; /* 定义P0口,地址为80H */ sfr P1=0x90 ; /* 定义P1口,地址为90H */
第3章 51系列单片机程序设计(C部分)
3.4.3 C51数据的存储类型与MCS-51存储结构
表 3.4.2 C51存储类型与MCS-51存储空间的对应关系
存储类型 与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节)
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节)
据 浮点型(float) 类
型 指针类型
详细见表3.4.1

MCS51单片机的C程序设计

MCS51单片机的C程序设计
1、特殊功能寄存器的定义 80C51单片机内部有21个特殊功能寄存器,为了对它们
能够进行直接访问,C51编译器利用扩充的关键字sfr和sfr16对 这些特殊功能寄存器进行定义。sfr的定义方法为:
sfr 特殊功能寄存器名 = 地址常数;
例如:
sfr SCON = 0x90;/*定义串行口控制寄存器,地址为0x90 */ sfr P0 = 0x80; /*定义P0口,地址为0x80 */ sfr16 T2 = 0xCC;/*定义80C52的T2L地址为0xCC,T2H地址为0xCD*/
0,1
1
0,1
8
0~255
16
0~65535
二、C51数据的存储器类型
应用程序中使用的任何数据(变量和常量)必须以 一定的存储器类型定位于单片机的相应的存储区域中。
存储器类型 长度(位) 对应单片机存储器
bdata data idata pdata xdata code
Copyright ©2010 CUGB 2020年2月24日星期一
main() { 局部变量说明; 执行语句; 函数调用(实际参数表); }
Copyright ©2010 CUGB 2020年2月24日星期一
函数1(形式参数说明) { 局部变量说明; 执行语句; 函数调用(实际参数 表);
}
…… …… 函数n(形式参数说明) { 局部变量说明; 执行语句; 函数调用(实际参数 表);
访问片内RAM比访问片外RAM的速度要 快得多,所以对于经常使用的变量应该置于片 内RAM中,即用bdata、data、idata来定义; 对于不经常使用的变量或规模较大的变量应该 置于片外RAM中,即用pdata、xdata来定义。
例如: bit bdata flags; /* 位变量flags定位在片内RAM的位寻址区 */ char data var; /* 字符变量var定位在片内RAM区 */ float idata x,y,z; /* 实型变量x,y,z定位在片内间址RAM区 */ sfr P1=0x90; /* 定义P1口地址为90H */

MCS-51单片机C51程序设计

MCS-51单片机C51程序设计
对C51编译器来说,short类型和int类型相 同,double类型和float类型相同。

19:04
张兴忠制作:
返回目录
14
5.2.2 数据类型
-----C51的数据类型
除此之外,为了更加有利地利用MCS-51的结构,C51还增 加了一些特殊的数据类型,包括bit、sbit、sfr、sfr16。 数据类型如表5-2所示。
C51编译器针对MCS-51单片机硬件在下列几方面 对ANSI C进行了扩展。 1) 扩展了专门访问MCS-51单片机硬件的数据类型;
2) 存储类型按MCS-51单片机存储空间分类;
3) 存储模式遵循存储空间选定编译器模式;
4) 指针分为通用指针和存储器指针; 5) 函数增加了中断函数和再入函数。
19:04
19:04
张兴忠制作:
返回目录
16
5.2.2 数据类型
2.int整型
-----int整型
int整型长度为2B,用于存放一个双字节数据。
signed int表示的数值范围是-32768~+32767,字 节中最高位表示数据的符号,0表示正数,1表示负 数。
unsigned int表示的数值范围是0~65535。
第5章 MCS-51单片机C51程序设计
5.5.3 循环结构程序
5.5.4 查表程序
5.6 C51程序设计实例 5.6.1 单片机内/外部资源应用 程序设计 5.6.2 C51语言和MCS-51汇编语 言混合编程 5.6.3 编程优化的概念 习题与思考题
返回目录
5.4.4 对被调函数的说明
5.4.5 中断函数
标识符用来标识源程序中某个对象的名字,这些对
象可以是语句、数据类型、函数、变量、数组等。

第三章 MCS51系列单片机的C语言及其编程

第三章 MCS51系列单片机的C语言及其编程
bit LockBit; bit SwitchSta = 0; sfr P0 = 0x80; sbit Switch = P0^1; int bdata ibase; char bdata bary[4]; sbit mybit0 = ibase^0; sbit mybit1 = bary[0]^7;
位型(bit)
1. 程序的基本构成
数据结构 算法
基本类型
字符型(char) 整型(int) 长整型(long) 浮点型(float) 双精度浮点型(double) 数组(array) 构造类型 结构体(struct) 共用体(union) 枚举型(enum) 指针类型 双精度浮点型
2. C51的数据结构 C51的数据结构
• 循环控制
先判断后执行:for(;;), while… 先判断后执行:for(;;), while… 先执行后判断:do…while… 先执行后判断:do…while…
第三节 函数和指针
• 指针是C语言的一个重要概念,使用指针可以使程 指针是C
序简洁、紧凑、高效。
变量名和变量值 内存单元地址和内存单元内容 变量的指针和指向变量的指针变量
第一节
MCS51的系统开发流程及 MCS51的系统开发流程及 KeilC简介 KeilC简介
目标分析 硬件设计 软件设计
仿真与调试 开发完成
1、单片机系统及的开发流程 • 单片机系统是软硬件综合体
• 开发工具的选择
(1) 开发软件的选择 (2) 仿真器的选择
2、KeilC集成开发环境简介
第二节 C51编程及其使用 C51编程及其使用
• C51中,各个函数的地位是平等的,在定义函数时,不 C51中 各个函数的地位是平等的,在定义函数时, 能堪套定义

MCS-51单片机的C语言程序设计基础

MCS-51单片机的C语言程序设计基础
enum Week (Mon= 1,Tue,Wed,Thu,Fri,Sat,Sun);
上例的枚举就使week值从1到7,这样的赋值也符合我们日常生活中对周次时序关系的定义。使 用枚举就如变量一样,但在程序中不能为其赋值。 定义类型在某种程度上同枚举类型相似,因为定义允许用一个文本串代替另一个文本串,例如 :
表3-1 C51语言所支持的数据类型
注:(1)Bit:位标量。 Bit位标量是C51语言的一种扩充数据类型,利用它可定义一个位标量,但不能定:义位指针,也不能定 义位数组。它的值是一个二进制数,不是0就是1,类似一些高级语言中的Boolean类型中的TRUE和FALSE 。 (2)SFR:特殊功能寄存器。 SFR也是一种扩充数据类型,占用一个内存单元(8位),值域为O~255。利用它可以访问MCS-51单 片机内部的所有特殊功能寄存器。如用SFR Pl=O*90这一条语句定义PI(T作寄存器),则其为P1端口在片 内的寄存器,在后面的语句中我们可以用P1= 255(对Pl端口的所有引脚置高电平)之类的语句来操作特殊 功能寄存器。 (3)SFR16: 16位特殊功能寄存器。 SFR16占用两个内存单元(1 6位),值域为0~65 535。SFR16和SFR -样用于操作特殊功能寄存器,所 不同的是它用于操作占两个字节的寄存器,如定时器TO和Tl。 (4)Sbit:可寻址位。 Sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中 的可寻址位,如先前定义:
看了上面的例子,就会发现枚举值不用赋值就能使用,这是因为在枚举列表中,每一项名称代 表一个整数值,在默认的情况下,编译器会自动为每一项赋值,第一项赋值为0,第二项为1……如w 色ek中的Sun为0,Fri为5。C语言也允许对各项值作初始化赋值,要注意的是在对某项值初始化后, 它的后续各项值也随之递增,如:

MCS51单片机C语言程序设计基础

MCS51单片机C语言程序设计基础

本章主要内容
• C51变量声明
• C51的IO口操作
• C51的中断响应方法
• C51的定时器操作
• C51的串行口操作
• C51的外部总线扩展操作
2.1 C51语言变量声明
但在C语言编程中,对数据类型与变量的定义必须 要与单片机的存储结构相关联,否则编译器就不能正 确的映射。 所以用C语言编写单片机应用程序是要根据单片机 的结构及内部资源定义相应的C语言中的数据类型和 变量。 用C语言编写的应用程序必须经单片机的C语言编 译器,将源代码转换成单片机的可执行程序。支持 MCS-51系列单片机的编译器有很多,比较著名也是 实际应用最多的是KEIL/Franklin编译器。这也是这门 课使用的编译器。
;双字节无符号数加法 程序 (R3R4+R6R7)=(R3R4) ;入口 :R3,R4,R6,R7 NADD :MOV A,R4 ADD A,R7 MOV R4,A MOV A,R3 ADDC A,R6 MOV R3,A RET unsigned int val_1, val_2; unsigned int val_add; val_add = val_1 + val_2;
第二章 MCS51单片机C语言程序设计
C语言具有很强的表达能力,并具 有较高的可移植性,提供了种类丰富的 运算符和数据类型,可以直接实现对系 统硬件的控制。 相对于汇编语言,使用C语言进行 系统开发可以大大缩短开发周期,明显 增强程序的可读性,便于改进和扩充。
本章就介绍使用C语言开发8051系 列单片机程序的方法。
三、C51存储模式
表2.4 存储模式说明 存储模式 说明
SMALL
参数及局部变量放入可直接寻址的片内存储区 (最大128个字节),默认存储类型是data,访 问方便。所有对象都嵌入片内RAM中。

51单片机C语言程序设计-图文

51单片机C语言程序设计-图文
03 8 只 LED 左右来回点亮
/* 名称:8 只 LED 左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {
case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
case 3: //东西向红灯,南北向绿灯亮 RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0; DelayMS(2000); Operation_Type=4; break;
3 Ykcsh 呈献
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; //延时 void DelayMS(uint x) {
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; while(1) { //从数组中读取数据送至 P0 和 P2 口显示
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

MCS51单片机C语言

MCS51单片机C语言

第2章 MCS-51系列单片机的指令统及汇编语言程序设计
2.1.2 MCS-51单片机寻址方式
– 3. 存放器寻址
– 例:MOV A,R7 ;将通用存放器R7中的
数送
给A,即(A)←(R7)
– 操作数〔源操作数〕存放在当前工作存放器组 中某个存放器中,这种寻址方式称为存放器寻 址。
– 存放器寻址方式的寻址范围包括:
第2章 MCS-51系列单片机的指令统及汇编语言程序设计
2.1.2 MCS-51单片机寻址方式
– 5. 变址寻址
• 例:MOVC A,@A+DPTR ;将地址为 (A)+(DPTR)的 ROM单元中的数送 给A
• 操作数是以(DPTR)为基址,(A)为变址,将两者之 和作为地址,找出该地址对应的ROM单元,再将该 单元的数送给A,这种寻址方式称为变址寻址方式。
第2章 MCS-51系列单片机的指令统及汇编语言程序设计
2.1.2 MCS-51单片机寻址方式
– MCS-51指令系统的7种寻址方式,概括起来如下表所 示。
7种寻址方式及其寻址空间
第2章 MCS-51系列单片机的指令统及汇编语言程序设计
2.2 MCS-51单片机指令系统
• MCS-51单片机指令系统有5类共111条指令, 按照功能分类,可以分为以下五大类:
加器
A,即(A)←(30H)
– 操作数〔源操作数〕是直接给出内部RAM中某
个单元的地址或名称〔特殊功能存放器〕,这 种寻址方式称为直接寻址 。
– 直接寻址方式的寻址范围包括:
– 〔1〕内部RAM的128个单元。
– 〔2〕特殊功能存放器。
– 应当说明的是,直接寻址方式是对所有特殊功 能存放器读/写的唯一寻址方式。

第4章MCS-51系列单片机C语言程序设计

第4章MCS-51系列单片机C语言程序设计

第4章 MCS-51系列单片机C语言程序设计
4.1 MCS-51系列单片机的C编译器
1.Tasking Crossview51 Tasking公司原名为BSO/Tasking,是一家专业开发和销 售嵌入式系统软件工具的公司,于1974年创建于荷兰。 Tasking公司一直为Intel、LSI、Motorola、Philips、Siemens、 Texas Instruments等著名半导体厂商的微处理器、数字信号 处理器(DSP)以及单片机编写高级语言编译器等配套软件开 发工具,先后开发过8 bit、16 bit、32 bit、64 bit的 MCU/DSP/RISC交叉编译程序。该公司生产多种单片机的交 叉模拟程序(Simulators),可在无目标机的情况下模拟单片机 的运行以及I/O口的行为。
第4章 MCS-51系列单片机C语言程序设计
上面提到的这些C51编译器都非常相似,特别是Keil C51和 IAR EW8051编译器的集成开发环境的外观和使用方法甚至与可 视化C/C++的开发环境相似。它们都支持用户采用模块化结构开 发和设计大的、复杂的应用程序,在视窗操作系统中使用集成开 发环境编译、汇编、连接多模块结构程序都可以由IDE代理一次 性完成。
这些C51的集成开发环境都提供无需硬件仿真器(Hardware Debugger)的模拟仿真器(Simulator),在单片机应用系统的软件中, 有些代码与单片机的硬件无关,开发这部分代码时可以利用模拟 仿真器实现快速仿真。
本书中的C语言程序源码都是在IAR EW8051集成开发环境下 编写的,有关IAR EW8051集成开发环境(IDE)的使用说明请参考 下一节的内容,或者直接到IAR System公司的主页() 下载IAR EW8051集成开发环境学习版及其用户手册或IAR EW8051 C编译器用户手册。

MCS-51单片机C语言程序设计

MCS-51单片机C语言程序设计

格式如下:
类型
函数名(参数表)
参数说明;
{
数据说明部分;
执行语句部分;
}
Page 8
吉林大学整通理信pp工t 程学院
2021/3/4
C51程序结构说明: 1)C语言是由函数构成的。
一个C源程序至少包含一个函数,也可以包含一个main 函数和若干其他函数。函数是C程序的基本单位。
2)函数分为2大类: 一类是库函数,一类是用户自定义函数。库函数是C51 在库文件中已定义的函数,其函数说明在其头文件中 。用户函数是用户自己定义,自己调用的一类函数。
2021/3/4
二、C51编译器 用C语言编写的应用程序必须经单片机的C语言
编译器(简称C51),转换生成单片机可执行的代码程 序。支持MCS–51系列单片机的C语言编译器有很多 种。如: American Automation
IAR Avocet Dunfield Shareware Bso/Tasking KEIL/Franklin
Page 11
吉林大学整通理信pp工t 程学院
2021/3/4
C51程序开发过程 C51源程序是一个ASCII文件,可以用任何标准的
ASCII文件编辑器来编写,如:写字板,记事本等。
C51程序机构与一般C语言没有什么差别,程序的书 写格式自由度高,灵活性强,有较大的任意性。
Page 12
吉林大学整通理信pp工t 程学院
Page 6
吉林大学整通理信pp工t 程学院
2021/3/4
三、C51程序结构 C51源程序大体上是一个函数定义的集合,集合中 仅有一个名为main的主函数。主函数是程序的入口 ,主函数中所有语句执行完毕,则程序执行完成。

第2章 MCS-51单片机C程序设计

第2章 MCS-51单片机C程序设计
汇编语言是一种用文字助记符来表示机器指令的符号语言。 优点:占用资源少,程序执行效率高。 缺点:不易移植。
2、什么是C语言?C语言有什么特点?
C语言是一种结构化的高级语言。 优点:可读性好、移植容易,可直接实现对系 统硬件的控制。 缺点:占用资源较多,执行效率没有汇编高。
第2章 MCS-51单片机C程序设计
量则需要重新定义。
第2章 MCS-51单片机C程序设计
延安大学西安创新学院
变量名不得使用标准C语言和Cx51语言的关键字。
Cx51扩展的若干关键字一览表
第2章 MCS-51单片机C程序设计
延安大学西安创新学院
数据结构定义举例 unsigned char data system_status = 0; 初值为零 变量名为system_status 位于片内RAM区 无符号字符型 自动型
第2章 MCS-51单片机C程序设计
延安大学西安创新学院
快捷键在程序调试中的使用 项目进行编译、连接后 Ctrl+F5进入调试状态 F10单步执行 F11跟踪到函数内部
第2章 MCS-51单片机C程序设计
延安大学西安创新学院
Cx51编译器在头文件“reg51.h”中定义了全部sfr/sfr16和sbit变 量。
用一条预处理命令#include <reg51.h>把这个头文件包含到 C51程序中,无需重定义即可直接使用它们的名称。
第2章 MCS-51单片机C程序设计
可见,C51指针变量突出了两个问题: 1)指针变量自身位于哪个存储区域; 2)该指针的值指向的是哪个存储区域里的地址。
第2章 MCS-51单片机C程序设计
延安大学西安创新学院
例1 unsigned char xdata * pi; 解:若编译器默认的存储类型为data,则指针pi自身被存 放在data区内,它是指向 xdata 存储区的无符号字符型变量。

51单片机的C语言应用基础程序设计

51单片机的C语言应用基础程序设计

0x80~0xFF。
例如: sfr SCON=0x98; /* 串口控制寄存器地址98H */
sfr TMOD=0x89; /* 定时器/计数器方式控制寄存器地址89H */
单片机的C语言应用程序设计
对于位寻址的SFR中的位,C51的扩充功能支持特殊
位的定义,像SFR一样不与标准C兼容,使用“sbit”来
{ flag=1;
/* INT1中断服务程序,使用第2组工
作寄存器 */ /* 设置标志 */
status=p1;
} void main(void) { IP=0x04 ; IE=0x84 ;
/* 存输入口状态 */
/* 置INT1为高优先级中断 */ /* INT1开中断,CPU开中断 */
单片机的C语言应用程序设计
absacc.h是C51中绝对地址访问函数的头文件,将PORTA定义
为外部I/O口,地址为 FFC0H,长度为8位。 一旦在头文件或程序中对这些片外I/O口进行定义后,在程序 中就可以自由使用变量名与其实际地址的联系,以便使程序员能 用软件模拟51的硬件操作。
单片机的C语言应用程序设计
1.5 51内部资源使用的C语言编程
sbit OV=0XD0^2 ;
/* 定义OV位地址是D0H字节
中的第2位 */
sbit CY=0XD0^7 ;
/* 定义CY位地址是D0H字节中
的第7位 */
单片机的C语言应用程序设计 第三种格式:sbit bit-name = int constant; "="后的int constant为寻址位的绝对位地址。例如: sbit OV=0XD2 ; sbit CY=0XD7 ; /* 定义OV位地址为D2H */ /* 定义CY位地址为D7H */
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档