第3章 C51程序设计基础

合集下载

教学课件PPT 89C51单片机的C51程序设计

教学课件PPT 89C51单片机的C51程序设计

程序存储器(64K字节)
对应MOVC @DPTR访问
可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问
间接寻址片内数据存储器(256字节)
可访问片内全部RAM空间
分页寻址片外数据存储器(256字节)
对应MOVX @R0访问
4.2 C51程序设计基础
C51存储类型定义举例:
unsigned char data x,y,z; /*在内部RAM区定义了3个无符号字节型变量x,y,z*/
40M/80M/100M,而且还有很多是单周期的。
4.2 C51程序设计基础
4.2.1 C51变量/常量存储类型
C51存储类型 对应89C51单片机存储器空间
data
直接寻址片内数据存储器(128字节)
xdata
片外数据存储器(64K字节)
说明 访问速度快 对应MOVX @DPTR访问
code bdata idata pdata
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4
switch/case
5
while
6
do-while
7
for
8
函数
含义 赋值语句 条件语句 条件运算符 多分支语句 循环语句 循环语句 循环语句 模块化程序设计
4.2 C51程序设计基础
表4-6 常用语句
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4.3 C51程序举例
例4:把外部数据RAM中从地址2000H单元开始的100个有符号 数逐一取出,若为正数则放回原单元,若为负数则求补后放回。

第3章_C51语言编程基础

第3章_C51语言编程基础
例如:
sfr
PSW = 0xd0;
//定义PSW寄存器地址为0xd0
sbit
FO = PSW ^ 5 ; //定义F0位为PSW.5
F0 = 0;
精选2021版课件
12
习题:片内I/O口P1口的P1.0寻址位置成高电平 sfr P1 = 0x90; sbit P1_0 = P1^0; P1_0 = 1;
X = X + 1;
单片机如何执行程序指令?
程序员
X = X + 1; …… ……
高级语言程序
编译器 链接器
10010010 10110010 ……
机器码
精选2021版课件
3
2、Keil C51语言简介
对于51单片机,目前广泛使用的是Keil C51语言,简称C51语言。
Keil C51语言是在标准C的基础上,针对51单片机的硬件特点进行 扩展,并向51单片机上移植的高效、简洁的实用高级语言。
PWORD
以字形式对精选p2d02a1t版a课区件 寻址。
25
【例】片内RAM、片外RAM定义的程序如下:
#include<absacc.h>
#define PORTE XBYTE[0xFFC0] #define NRAM DBYTE[0x40]
/*将PORTE定义为外部I/O, 地址为0xFFC0*/
精选2021版课件
29
【例】使用关键字_at_实现绝对地址的访问。
data unsigned char y1 _at_ 0x50; /*在data 区定义字节变量 y1,地址为50H*/
xdata unsigned int y2 _at_ 0x4000; /*在xdata区定义字变量 y2,地址为4000H*/

单片机c51介绍

单片机c51介绍

3.2 单片机的C51程序设计3.2.1 C51基础知识C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。

而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。

一、C51的特点C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等。

C语言程序本身不依赖于机器硬件系统,基本上不作修改或仅做简单修改就可将程序从不同的单片机中移植过来直接使用。

C语言提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。

二. 单片机的C51与汇编ASM—51相比,有如下优点:(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;(2)寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;(3)程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;(4)提供的库包含许多标准子程序,具有较强的数据处理能力;(5)由于具有方便的模块化编程技术,使已编好程序容易移植;3.2.2 C51的基本数据类型当给单片机编程时,单片机也要运算,而在单片机的运算中,这个“变量”数据的大小是有限制的,不能随意给一个变量赋任意的值,因为变量在单片机的内存中是要占据空间的,变量大小不同,所占据的空间就不同。

所以在设定一个变量之前,必须要给编译器声明这个变量的类型,以便让编译3.2.3 C51的基本运算C语言的运算符分以下几种:1、算术运算符顾名思义,算术运算符就是执行算术运算的操作符号。

除了一般人所熟悉的程序范例:main(){int A,B,C,D,E,x,y;x=8;y=3;A=x+y;B=x-y;C=x*y;D=x/y;E=x%y;}程序结果A=11、B=5、C=24、D=2、E=22、关系运算符程序范例:main(){Int A,B,C,D,E,F,x,y;x=9;y=4;A=(x==y);B=(x!=y);C=(x>y);D=(x<y);E=(x>=y);F=(x<=y);}程序结果:A=0、B=1、C=1、D=0、E=1、F=0 3、逻辑运算符程序范例:main(){int A,B,C,x,y,z;x=9;y=8;z=10;A=(x>y)&&(y<z);B=(x==y)||(y<=z);C=!(x>z);}程序结果:A=0、B=1、C=14、位运算符位运算符与逻辑运算符非常相似,它们之间的差异在于位运算符针对变量中的每一位,逻辑运算符则程序范例:main(){char A,B,C,D,E,F,x,y;x=0x25;/*即0010 0101*/y=0x62; /*即0110 0010*/A=x&y;B=x|y;C=x^y;D=x~E=x<<3;F=x>>2}程序结果:0010 0101x: 0010 0101 x: 0010 0101 x: 0010 0101 x:~y: &0110 0010 y: |0110 0010 y: ^0110 0010 1101 1010 0010 0000 0110 0111 0100 0111即A=0x20 即B=0x67 即C=0x47 即D=0xda将x的值左移三位的结果为:0 0 1 0 0 1 0 10 0 1 0 0 1 0 1 0 0 0移出的三位“001”丢失,后面三位用0填充,因此运算后的结果是00101000B,即E=0x28。

单片机原理与接口技术-C51编程(张毅刚第二版)-习题答案

单片机原理与接口技术-C51编程(张毅刚第二版)-习题答案

单片机原理及接口技术(C51 编程)( 第2 版)- 习题答案汇总23单片机答案第1章单片机概述思考题及习题 1 参考答案一、填空1. 除了单片机这一名称之外,单片机还可称为()或()。

答:微控制器,嵌入式控制器.2. 单片机与普通微型计算机的不同之处在于其将()、()和()三部分,通过内部()连接在一起,集成于一块芯片上。

答:CPU、存储器、I/O 口、总线3. AT89S51 单片机工作频率上限为()MHz。

答:24MHz。

4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低()和提高()。

答:成本,可靠性。

二、单选1. 单片机内部数据之所以用二进制形式表示,主要是A.为了编程方便 B. 受器件的物理性能限制C.为了通用性 D. 为了提高运算数度答:B2. 在家用电器中使用单片机应属于微计算机的。

A.辅助设计应用 B. 测量、控制应用C.数值计算应用 D. 数据处理应用答:B3. 下面的哪一项应用,不属于单片机的应用范围。

A.工业控制B.家用电器的控制C.数据库管理D.汽车电子设备答:C三、判断对错1. STC 系列单片机是8051内核的单片机。

对2. AT89S52 与AT89S51相比,片内多出了4KB的Flash 程序存储器、128B的RAM、1 个中断源、1 个定时器(且具有捕捉功能)。

对3. 单片机是一种CPU。

错4. AT89S52 单片机是微处理器。

错5. AT89S51片内的Flash 程序存储器可在线写入(ISP),而AT89C52则不能。

对6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。

对7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。

对8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP的长处。

对第2 章AT89S51 单片机片内硬件结构思考题及习题 2 参考答案一、填空5. 在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为()。

单片机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
程序语句

第6789次课第3章C51语言编程基础

第6789次课第3章C51语言编程基础
data
※ 重 点 、 记 住
bdata
code xdata
pdata
格式: 数据类型 【存储类型】 变量名; (1)DATA区。
DATA区指片内RAM的低128字节的空间,可直接寻址; 寻址是最快的,应该把经常使用的变量放在DATA区。
例如: unsigned char data system_status=0; unsigned int data unit_id[8];
习题1: 往串行发送数据缓冲寄存器SBUF写入80
sfr
SBUF = 0x99;
SBUF = 80;
※ 难点、掌握
习题2: 从P0口寄存器读取数据,存放到任意一个变量X。
sfr P0 = 0x80;
char
x;
x = P0;
(3)特殊功能寄存器sfr16
“sfr16”数据类型占两个内存单元;
用于操作占两个字节的特殊功能寄存器。
#define PORTE XBYTE[0xFFC0] #define NRAM DBYTE[0x40]
/*将PORTE定义为外部I/O, 地址为0xFFC0*/ /*将NRAM定义为片内RAM, 地址为0x40*/
main( )
{ ※ 难点
PORTE=0x3D;
NRAM=0x01;
}
/*数据3DH写入地址0xFFC0的外部I/O PORTE */
/*将数据01H写入片内RAM的40H单元*/
习题6 使用绝对宏将片内RAM 20H的字节地址单元全部置1。
#include<absacc.h>
#define M DBYTE[0x0020]
main( ) {
M=0xff;

单片机基础与应用(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位特殊功能寄存器 可寻址位

C51程序设计------数组

C51程序设计------数组

while(con_key=='\x20') { printf("输入第%2d个学生的成绩\n", i++); printf("平时 实习 测验 期末成绩\n"); score[4]=0; /* score[4]:存储总评成绩*/\ for(j=0; j<4; j++) {scanf("%f",&score[j]); score[4] += score[j] * ratio[j]; } printf("总评成绩为:%6.1f\n", score[4]); getchar(); } }
for(j=0;j<NUM_course;j++) score[NUM_std][j] /= NUM_std; /*求第j门课的平均成绩*/ /*输出表头*/ printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n"); /*输出每个学生的各科成绩和平均成绩*/ for(i=0;i<NUM_std;i++) { printf("学生%d\t",i+1); for(j=0;j<NUM_course+1;j++) printf("%6.1f\t",score[i][j]); printf("\n"); } /*输出1条短划线*/ for(j=0;j<8*(NUM_course+2);j++) printf("-"); printf("\n课程平均"); /*输出每门课程的平均成绩*/ for(j=0;j<NUM_course;j++) printf("%6.1f\t",score[NUM_std][j]); printf("\n"); }

c51程序课程设计

c51程序课程设计

c51程序课程设计一、课程目标知识目标:1. 掌握C51编程语言的基本语法和结构;2. 理解并掌握C51的寄存器、内存管理及位操作等特性;3. 学会使用C51编写简单的嵌入式程序,实现基础功能;4. 了解C51程序与硬件之间的交互及接口技术。

技能目标:1. 能够运用C51编程语言设计简单的嵌入式系统程序;2. 培养学生分析问题、解决问题的能力,能够针对实际问题进行程序设计和调试;3. 学会使用C51的开发工具和调试方法,提高实际操作能力。

情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发创新意识;2. 培养学生严谨、细致的编程习惯,增强团队协作意识;3. 引导学生认识到编程对于国家科技发展的重要性,树立社会责任感。

本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合。

课程目标旨在使学生掌握C51程序设计的基本知识和技能,培养学生解决实际问题的能力,同时提高学生的情感态度价值观,为我国嵌入式领域培养优秀人才。

通过对课程目标的分解,教师可进行针对性的教学设计和评估,确保学生达到预期学习成果。

二、教学内容1. C51编程语言基础:- 数据类型、变量、常量- 运算符、表达式和语句- 控制结构(顺序、选择、循环)- 函数的定义和调用2. C51特殊功能及寄存器:- SFR寄存器及其操作- 位操作及位带操作- 中断处理与定时器3. C51内存管理:- 内部RAM和外部RAM的使用- 程序存储器操作- 数据存储器操作4. C51程序设计与实践:- 简单I/O口编程- 系统时钟与串行通信- ADC和DAC编程- 综合项目设计实例5. 课程实践与调试:- 使用开发工具(如Keil uVision)- 程序编译、下载和调试- 常见错误分析和解决方法教学内容按照教学大纲安排,结合教材相关章节,循序渐进地展开。

确保学生在掌握基础知识的同时,能够逐步深入到实际应用。

通过理论与实践相结合的教学内容,使学生在完成本课程学习后,具备基本的C51程序设计能力。

单片机原理与C51语言程序设计与基础教程课后习题答案

单片机原理与C51语言程序设计与基础教程课后习题答案

单片机原理与C51语言程序设计与基础教程课后习题答案习题填空题1.一般而言,微型计算机包括、、、四个基本组成部分。

2.单片机是一块芯片上的微型计算机。

以为核心的硬件电路称为单片机系统,它属于地应用范畴。

3.Atmel 公司生产的CMOS型51系列单片机,具有内核,用代替ROM作为程序存储器,4.单片机根据工作温度可分为、和三种。

民用级的温度范围是0℃一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。

5.在单片机领域内,ICE的含义是。

选择题1.单片机的工作电压一般为V?A 5VB 3VC 1VD 4V2.单片机作为微机的一种,它具有如下特点:A 具有优异的性能价格比B 集成度高、体积小、可靠性高C 控制功能强,开发应用方便D 低电压、低功耗。

3.民用级单片机的温度范围是:A -40℃~85℃B 0℃一70℃C -55℃-125℃D 0℃一50℃4.MCS-51系列单片机最多有个中端源。

A 3B 4C 5D 65.下列简写名称中不是单片机或单片机系统的是A MCUB SCMC ICED CPU问答题1.单片机常用的应用领域有哪些?2.我们如何学习单片机这么技术?3.单片机从用途上可分成哪几类?分别由什么用处?答案填空题1.运算器、控制器、存储器、输入输出接口2.单片机嵌入式系统3.MCS-51 Flash ROM4.民用级(商业级) 工业级军用级5.在线仿真器选择题1.A2.ABCD3.B4.C5.D问答题1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:(1)在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。

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) {

单片机原理及C51应用设计-理论篇-第3章

单片机原理及C51应用设计-理论篇-第3章

1.选择语句if
if语句是用来判断所给定的条件是否满足的一种操 作,它有两种基本形式。
(1) if(表达式) { 语句; }
(2) if(条件表达式) {语句1;}
else {语句2;}
3.2.3 常量与变量
1.常量 常量是在程序执行过程中其值不能改变的量。常量的数
据类型有整型、浮点型、字符型利字符串型等,C51编译器 还扩充了一种位(bit)标量。 (1)整型常量 十进制整数。如1234、-5678、0等。 十六进制整数。以0x开头的数是十六进制数,如0xl23。 (2)浮点型常量 浮点型常量有十进制表示形式和指数表示形式。 如0.3141。
3.1.1 C51与标准C的异同
1. C51虽然继承了标准C语言的绝大部分的特性,而且基本 语法相同。特定的硬件结构上有所扩展,如关键字sbit、 data、idata、xdata、code等。
2. 应用C51特别要注重对系统资源的理解,因为单片机的系 统资源相对PC机来说很贫乏,特别是对内部RAM,其中 的每一字节都要充分利用。
预处理命令 #include< >
函数说明 long fun1( );
float funຫໍສະໝຸດ ( );功能函数1 fun1( )
函数体
{
}
功能函数2 fun2( )
函数体
{
主函数 主函数体
} main( ) {
}
3.2.1 数据类型
表3-1 C51基本数据类型
3.2.2 运算符及表达式
表3-2 C51的运算符
3.2 C51程序设计基础
一般C语言程序具有如下的结构:
预处理命令 #include< >
函数说明 long fun1( );

单片机原理及应用及C51程序设计第三章习题答案

单片机原理及应用及C51程序设计第三章习题答案

找到后第一时间上传,献给各位电子班的同学习题三1.在MCS-51单片机中,寻址方式有几种?其中对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。

片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。

片外RAM寻址有:寄存器间接寻址方式。

2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR 作指针间接访问可访问整个64K字节。

3.在位处理中,位地址的表示方式有哪几种?答:1.直接位地址(00H~0FFH)。

例如:20H2.字节地址带位号。

例如:20H.3表示20H单元的3位。

3.特殊功能寄存器名带位号。

例如:P0.1表示P0口的1位。

4.位符号地址。

例如:TR0是定时/计数器T0的启动位。

4.写出完成下列操作的指令。

(1)R0的内容送到R1中。

MOV A,R0MOV R1,A(2)片内RAM的20H单元内容送到片内RAM的40H单元中。

MOV 40H,20H(3)片内RAM的30H单元内容送到片外RAM的50H单元中。

MOV A,30HMOV R0,#50HMOVX @R0,A(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。

MOV A,50HMOV DPTR,#3000HMOVX @DPTR,A(5)片外RAM的2000H单元内容送到片内RAM的20H单元中。

MOV DPTR,#2000HMOVX A,@DPTRMOV 20H,A(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。

MOV DPTR,#1000HMOVX A,@DPTRMOV DPTR,#4000HMOV @DPTR,A(7)ROM的1000H单元内容送到片内RAM的50H单元中。

第3,4章--C51

第3,4章--C51

3.1 MCS51的编程语言
(3) C语言本身不依赖于机器硬件系统,易于将程序从不同的 单片机系统中进行移植。 3. Keil C51与ASM51相比,有如下优点:
(1)对单片机的指令系统不要求了解,仅要求对8051 的存贮 器结构有初步了解; (2)寄存器分配、不同存贮器的寻址及数据类型等细节可由编 译器管理; (3)程序有规范的结构,可分成不同的函数,这种方式可使程 序结构化; (4)具有将可变的选择与特殊操作组合在一起的能力,改善了 程序的可读性; (5)提供的库包含许多标准子程序,有较强的数据处理能力; (6)由于具有方便的模块化编程技术,已编的程序容易移植。
3.2 Keil C51编程语言
5. C51的运算符和控制语句(与C语言相同)
运算符:

算术运算: +
- *
/ % (加 ,减, 乘, 除,求余) (测试等于, 测试不等于) (逻辑与, 逻辑或 , 逻辑非 ) (位右移, 位左移) (按位与, 按位或)
关系运算: > >= < <= (大于,大于等于,小于,小于等于) == != 逻辑运算: && || ! 移位: 位逻辑 >> << & |

char data x1[4],x2=0,x3; //定义char型 x1数组、变量x2(初值=0) 和x3,位于片内RAM。
Unsigned int xdata parm1,xArry[4]={0x1234,1234,0xa22,0xb33,};

定义无符号整型变量parm1、xArry数组并赋初值,变量位于片外RAM。
void Delayms (uint x) {unsigned int n; for( ;x > 0; x--) { for(n=0;n<123;n++) { ; } } } //延时函数

C51语言编程基础

C51语言编程基础

图6 完成新建工程文件
21
KEIL C51快速入门
下面可以编写程序。 5、在图2-7中,单击“File”菜 单,再在下拉菜单中单击“New”选 项。
新建文件后屏幕如图8所示。
图7 新建文档
图8 完成 新建文档
22
KEIL C51快速入门
此时光标在编辑窗口里闪烁,这时可以键入应用程序了,建议首先保 存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As” 选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使 用的文件名,用C语言编写扩展名为(.c)如果用汇编语言编写扩展名必须 为(.asm)。然后,单击“保存”按钮。 如图8所示。
图10 添加文档
25
KEIL C51快速入门
选中main.c,然后单击“Add ”屏幕如下图所示。
图10 完成添加文档
注意到“Source Group 1”文件夹中多了一个子项“main.c”子 项的多少与所增加的源程序的多少相同。
7、现在便可输入程序了,输入完毕进行调试便可运行。
26
Proteus 快速入门
一些例程来介绍C51的程序设计思想。
1
单片机入门主要掌握以下知识和应用
最小系统能够运行起来的必要条件。 1.电源 2.晶振3.复位电路
对单片机任意IO口的随意操作
1.输出控制电平高低2.输入检测电平高低。 定时器:重点掌握最常用的方式2 中断:外部中断、定时器中断、串口中断 串口通信:单片机之间、单片机与计算机间
3
使用C语言的优点
C 语言具有结构化和模块化特点,便于阅读和维 护。
C 语言可移植性好,很多微控制器都支持C 编译 器。功能化的代码能够很方便的从一个工程移植 到另一个工程,从而减少了开发时间。 提供的库函数包含许多标准子程序,具有较强的 数据处理能力。

单片机原理与接口技术-C51编程(张毅刚第二版)-习题答案

单片机原理与接口技术-C51编程(张毅刚第二版)-习题答案

单片机原理及接口技术(C51编程)(第2版)-习题答案汇总23单片机答案第1章单片机概述思考题及习题1一、填空1.除了单片机这一名称之外,单片机还可称为(控制器.)或()。

答:微控制器,嵌入式参考答案2.单片机与普通微型计算机的不同之处在于其将()、()和()三部分,通过内部()连接在一起,集成于一块芯片上。

答:CPU、存储器、I/O口、总线3. AT89S51单片机工作频率上限为()MHz。

答:24MHz。

)和提4.专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低(高()。

答:成本,可靠性。

二、单选1.单片机内部数据之所以用二进制形式表示,主要是A.为了编程方便B.受器件的物理性能限制C.为了通用性D.为了提高运算数度A.辅助设计应用B.测量、控制应用C.数值计算应用D.数据处理应用答:B答:B2.在家用电器中使用单片机应属于微计算机的。

一、填空5.在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为()。

答:2μs6. AT89S51单片机的机器周期等于()个时钟振荡周期。

答:127.内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为()和()。

答:28H,88H8.片内字节地址为2AH单元最低位的位地址是();片内字节地址为A8H 单元的最低位的位地址为()。

答:50H,A8H9.若A中的内容为63H,那么,P标志位的值为()。

答:010. AT89S51单片机复位后,R4所对应的存储单元的地址为(),因上电时这时当前的工作寄存器区是()组工作寄存器区。

答:04H,00H,0。

11.内部RAM中,可作为工作寄存器区的单元地址为(PSW(=)。

)H~()H。

答:00H,1FH12.通过堆栈操作实现子程序调用时,首先要把()的内容入栈,以进行断点保护。

调用子程序返回指令时,再进行出栈保护,把保护的断点送回到(),先弹出的是原来()中的内容。

答:PC, PC,PCH13. AT89S51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S51单片机的PC是16位的,因此其寻址的范围为()KB。

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

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

(5)符号常量
C51语言中允许将程序中的常量定义为一个标识符,称为符号常量。 符号常量一般使用大写英文字母表示,以区别于一般用小写字母表 示的变量。 符号常量在使用前必须先定义,定义的形式是: #define 标识符 #define PI 常量 3.1415926
2.变量
变量的定义: int i,j,k; si; ui; 数据类型 变量名; unsigned char unsigned int
第3章 单片机C51语言设计基础
3.1 C51的数据
3.2
3.3 3.4
C51对单片机主要资源的控制
C51的基本运算与流程控制 C51的数组与指针
3.5
3.6
C51函数
C51的预处理命令
3.1 C51的数据
3.1.1 3.1.2 3.1.3 3.1.4 数据类型 常量与变量 数据存储类型 局部变量与全局变量



分为单精度(float)型和双精度(double)型。 其定义形式为: float x,y; //指定x,y为单精度实数 double z; //指定z为双精度实数 在一般系统中,一个float型数据在内存中占4个字节 (32位),一个double型数据占8个字节(64位)。单精 度实数提供7位有效数字,双精度实数提供15~16位有效 数字。
(3)字符型常量
字符型常量是指用一对单引号括起来的一个字符。如'a'、'9'、'! '等。字符常量中的单引号只起定界作用并不表示字符本身。
在C51语言中,字符是按其对应的ASCII码值来存储的,1个字符占1 个字节
字符串常量是指用一对双引号括起来的一串字符,双引号只起定界作用, 如"China"、"123456"等。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

可以一行书写多条语句。
认识C语言
结构化语言 丰富的数据类型 便于维护管理 与汇编语言相比,C语言的优点如下: 不要求编程者详细了解单片机的指令系统,但需了 解单片机的存储器结构; 寄存器分配、不同存储器的寻址及数据类型等细节 可由编译器管理; 结构清晰,程序可读性强; 编译器提供了很多标准库函数,具有较强的数据处 理能力。
逻辑运算符及其优先级
逻辑运算符 ! (逻辑非) 优先级
&& (逻辑与) || (逻辑或)
注意:逻辑运算符与位操作运算符的区别。
逻辑表达式
用逻辑运算符将一个或多个表达式连接起来, 进行逻辑运算的式子。 逻辑量的真判断——非0 逻辑量的假判断——0

若a=1,b=2,c=3,x=4,y=3,写出下各个表达式的值: (1)a+b>c&&b==c (2)!a<b&&b!=c||x+y<=3 (3)!(x=a)&&(y=b)&&0
0
0
运算类型
括号运算符 逻辑非和按位取反 算术运算 *
运算符
() ! / + >> > >= ~ %
优先级
1 2 3 4 5 6
结合性
从左至右 从右至左 从左至右 从左至右 从左至右 从左至右
左移、右移运算 关系运算 <
<< <=
==
位运算 & ^
!=
7
8 9 10 11
从左至右
从左至右 从左至右 从左至右 从左至右
表达式语句和复合语句
表达式语句是最基本的C语言语句。表达式语句由表 达式加上分号“;”组成,其一般形式如下: 表达式; 执行表达式语句就是计算表达式的值。 在 C 语言中有一个特殊的表达式语句,称为空语句。 空语句中只有一个分号“;”,程序执行空语句时需要 占用一条指令的执行时间,但是什么也不做。在C51程 序中常常把空语句作为循环体,用于消耗CPU时间等待 事件发生的场合。
表达式语句和复合语句
把多个语句用大括号{}括起来,组合在一起形成具有 一定功能的模块,这种由若干条语句组合而成的语句块 称为复合语句。在程序中应把复合语句看成是单条语句, 而不是多条语句。 复合语句在程序运行时,{}中的各行单语句是依次顺 序执行的。在C语言的函数中,函数体就是一个复合语 句。
赋值语句的作用是把某个常量或变量或 表达式的值赋值给另一个变量。
符号为‘=’。这里并不是等于的意思, 只是赋值,等于用‘==’表示。 赋值语句左边必须是变量或寄存器,且 必须先定义。 常量不能出现左边。



赋值运算符和赋值表达式
简单的赋值运算符:
=
复合的赋值运算符
i+=2 等价于 i = i + 2 a-= *= b*= + 5 等价于 a = a * (b + 5) + =、 、 x% 等价于 x = x%3 、%= 、= /=3
自增、自减运算
自增运算符(++)和自减运算符(--): (1)前置运算──++变量、--变量 即先增减、后运算。 (2)后置运算──变量++、变量-- 即先运算、后增减。
实战演练:请说明程序运行完后x,y,z,m,n的值分别是多 少? main() { int x=6,y,z,m,n; y=++x; z=x--; m=y/z; n=y%z; }
关系运算符
关系运算符 优先级

<
<=
>
>=
== !=

关系表达式
用关系运算符将两个表达式(可以是算术表达 式、关系表达式、赋值表达式或逻辑表达式) 连接起来的式子,称为关系表达式。 关系表达式的值为逻辑值“真”或“假”,以 1代表“真”,以0代表“假”。 例如: (1)关系表达式“8==4”的值为 ,表达式的 值为 。 (2) 关系表达式“5>0”的值为 ,表达式的 值为 。
选择语句
表达式1 真(非0) 假(0) 表达式2 真(非0) 假(0) 表达式„ 真(非0) 假(0) 表达式n 真(非0)
语句组1
语句组2
语句组„
语句组n
语句组n+1
选择语句
多分支选择的switch语句, 其一般形式如下: switch(表达式) { case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; …… case常量表达式n: 语句组n;break; default : 语句组n+1; } 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达 式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应 该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继 续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同, 则执行default后的语句组。
八进制数以字母o开头,如o14、o17等。
浮点型常量可分为十进制表示形式和指数表示形式两种,如0.888、 3345.345、125e3、-3.0e-3。 字符型常量是用单引号括起来的单一字符,如‘a’、‘9’等。 字符串型常量是用双引号括起来的一串字符,如“test”、“OK”等。 位类型的值是一个二进制数。如1或0。
变量
变量是一种在程序执行过程中其值能不断变化的量。 一个变量由变量名和变量值组成,变量名是存储单元 地址的符号表示,而变量的值就是该单元存放的内容。 变量必须先定义后使用,用标识符作为变量名,并指 出所用的数据类型和存储模式,这样编译系统才能为变 量分配相应的存储空间。
变量
void delay(unsigned char i) //延时函数1 { unsigned char j,k; for(k=0;k<i;k++) for(j=0;j<255;j++); } =================================================
练习
1 .若x = 10, 则!X的值为真或假? 2. 若a = 3, b = 2, 则if(a&b)的值为真或假? 3. 5 && 0 ||8的值为?
4. 5 > 3 && 4 || 8 < 4 的结果为?
C51程序结构
C语言程序的执行部分由语句组成。C语言提供了丰富 的程序控制语句,按照结构化程序设计的基本结构:顺 序结构、选择结构和循环结构,组成各种复杂程序。这 些语句主要包括表达式语句、复合语句、选择语句和循 环语句等。
例如: 逻辑与 (1) x<y&& m<n 逻辑或 (2) a= =b || c= =d 赋值运算与复合赋 值运算 (3) !a && b>c
| &&
等效于 (x<y) 12 && (m<n) || 从左至右 (a= =b)14 || (c= 从右至左 =d) = 等效于 +=、-=、 *=、/=、%=、&=、 等效于 (!a) ^=、 |=、<<=、 >>= && (b>c)
选择语句
if-else语句的一般格式如下: if (表达式) { 语句组1; } else { 语句组2; } if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语 句组1”,否则执行“语句组2”
真(非0)
表达式
假(0)
语句组1
语句组2
选择语句
if-else-if语句是由 if else 语句组成的嵌套,用来实现多个条件分支的选择, 其一般格式如下: if (表达式1) { 语句组1; } else if (表达式2) { 语句组2; } … else if (表达式n) { 语句组n; } else { 语句组n+1; }
算术运算符
+(加法运算) -(减法运算) * (乘法运算符) /(除法运算符) % (求余运算符,或称模运算符)如: ++ (变量自加1) -- (变量自减1)
4 % 2 =0


两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。 如果参加运算的两个数中有一个数为实数,则结果是实型。 求余运算要求%两侧都是整型数据。
C程序基本结构
认识C语言
一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独 立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行 总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列 顺序如何,最后在主函数中结束整个程序。 C语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。 C语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也
-32768~+32767 0~4294967295
signed long
float * Bit sfr sfr16
有符号长整型
浮点型 指针型
四字节
四字节 1~3字节
-2147483648~+2147483647
±1.175494E-38~±3.402823E+38 对象的地址 0或1 0~255 0~65535
位运算
与操作
按位与操作符 :& 格式:x&y 规则:对应位均为1时才为1,否则为0 例如, i=i&0x0f; 等同于 i&=0x0f; 主要用途:取(或保留)1个数的某(些)位,其余各位 置0。
位运算
或操作
按位或操作符: | 格式:x|y 规则:对应位均为0时才为0,否则为1 例如, i=i|0x0f; 等同于 i|=0x0f; 主要用途:将1个数的某(些)位置1,其余各位不变
相关文档
最新文档