第一讲 C51程序设计基础
合集下载
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试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
第五章C51程序设计

七、C51构造数据类型
前面讲的字符型(char)、整型(int)、浮点型 (float)、位型(bit)等数据类型,都属于C51 的基本数据类型。C语言还提供了一些扩展数据 类型,它们是由基本数据类型按一定的规则组合 成的数据类型,称之为构造数据类型。
以指针类型说明
1、基于存储器的指针
基于存储器的指针以存储器类型为参量,它在编 译时才被确定。因此,为指针选择存储器的方法 可以省掉,以便这些指针的长度为一个字节 (idata*,data*,pdata*)或2个字节 (code*,xdata*)。
} }
任务二、简易数字钟
/*数码管静态显示0~9的演示程 序,P2口作为段码驱动*/
#include<reg51.h> #define uchar unsigned char uchar dispcode[10]={0x3f, 0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f}; void delay05s(void) {unsigned char i,j,k;
五、MCS-51并行接口的C51定义
sfr P0=0x80; sfr P1=0x90; #include<absacc.h> #define PORTA XBYTE[0xFFC0] absacc.h是C51中绝对地址访问函数的头文件。
六、位变量的C51定义
除了C的数据类型外,C51编译器支持“bit”数据类型
}
任务一 点亮彩灯
/*依次点亮发光二极管的程序*/ #include”reg51.h” #define uchar unsigned char void delay05s(void)//延时0.5S {
《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程序设计基础精品PPT课件

现汇编语言的大部分功能,可以直接对硬件进行操作。因 此有人把它称为中级语言。
3
江阴职业技术学院电子工程系
(二)C51和汇编比较
下面结合8051介绍单片机C语言的优越性:
不懂得单片机的指令集,也能够编写完美的单片机程序;
无须懂得单片机的具体硬件,也能够编出符合硬件实际 的专业水平的程序;
不同函数的数据实行覆盖,有效利用片上有限的RAM空 间;
for (b=0; b<255; b++)
LED2 = 0;
//255次设P1.1口为低电平,点亮LED
LED2 = 1;
//设P1.1口为高电平,熄灭LED
for (a=0; a<30000; a++); //空循环
}while(1);
}
观察:如果把a改成char类型,会有什么效果?
14
江阴职业技术学院电子工程系
19
江阴职业技术学院电子工程系
说明:
sfr关键子后面是一个要定义的名字,可任意选取,但要符合标识符的 命名规则,最好有一定的含义,如P1口可以用P1。等号后面必须是常 数(特殊寄存器直接地址),不允许有带运算符的表达式,而且该常数 必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看教 材8051内部RAM地址表。
由此可见,在C51程序设计过程中,在满足数据要求的情况 下,应尽可能使用unsigned char变量和bit变量。signed char变 量虽然也只占用一个字节,但需要进行额外的操作来测试代 码的符号位,因此会降低代码执行效率。
17
江阴职业技术学院电子工程系
7、 sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为 0~255。利用它可以访问51单片机内部的所有特殊功能寄 存器。
3
江阴职业技术学院电子工程系
(二)C51和汇编比较
下面结合8051介绍单片机C语言的优越性:
不懂得单片机的指令集,也能够编写完美的单片机程序;
无须懂得单片机的具体硬件,也能够编出符合硬件实际 的专业水平的程序;
不同函数的数据实行覆盖,有效利用片上有限的RAM空 间;
for (b=0; b<255; b++)
LED2 = 0;
//255次设P1.1口为低电平,点亮LED
LED2 = 1;
//设P1.1口为高电平,熄灭LED
for (a=0; a<30000; a++); //空循环
}while(1);
}
观察:如果把a改成char类型,会有什么效果?
14
江阴职业技术学院电子工程系
19
江阴职业技术学院电子工程系
说明:
sfr关键子后面是一个要定义的名字,可任意选取,但要符合标识符的 命名规则,最好有一定的含义,如P1口可以用P1。等号后面必须是常 数(特殊寄存器直接地址),不允许有带运算符的表达式,而且该常数 必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看教 材8051内部RAM地址表。
由此可见,在C51程序设计过程中,在满足数据要求的情况 下,应尽可能使用unsigned char变量和bit变量。signed char变 量虽然也只占用一个字节,但需要进行额外的操作来测试代 码的符号位,因此会降低代码执行效率。
17
江阴职业技术学院电子工程系
7、 sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为 0~255。利用它可以访问51单片机内部的所有特殊功能寄 存器。
第一讲 C51程序设计基础

R23
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.6 P2.5 P2.4
东红 北绿 北黄 北红 西绿 西黄 西红 南绿 南黄 南红 东绿 东黄
P2. 7 P2. 6 P2. 5 P2. 4 P2. 3 P2. 2 P2. 1 P2. 0
USB2 USB3 RESET P1. 5 P1. 6 P1. 7
1 2 4 5
c d e
D3
13 12 11 10
13 12 11 10
13 12 11 10
13 12 11 10
13 12 11 10
8 55 0
13 12 11 10
10K
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
IC5 7 4LS1 64
IC6 7 4LS1 64
单片机C51程序设计教程与实验
主讲教师:董蕴华 实验指导教师:杨其锋
教学安排
• 本课程共45学时(理论25学时,实验20学
时) • 课程性质:考查 本课程考试以应用程序设计 作为考查的评分依据
学习本课应具备的基础知识
学习本课程应具备的基础知识 ☆ 单片机原理及应用 ☆ C语言程序设计
学习本课应具备的硬件 ☆ 实验板一块 ☆ 程序下载线一条
3
Vcc1 Vcc2 X1 SCLK X2 I/O GND RST
DZ2
3.6V
2.2K
+5V
+5VINT0Fra bibliotekP1. 0
A0 VCC A1 WP A2 SCL GND SDA
AT24C04
P1. 2 P1. 3
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.6 P2.5 P2.4
东红 北绿 北黄 北红 西绿 西黄 西红 南绿 南黄 南红 东绿 东黄
P2. 7 P2. 6 P2. 5 P2. 4 P2. 3 P2. 2 P2. 1 P2. 0
USB2 USB3 RESET P1. 5 P1. 6 P1. 7
1 2 4 5
c d e
D3
13 12 11 10
13 12 11 10
13 12 11 10
13 12 11 10
13 12 11 10
8 55 0
13 12 11 10
10K
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
6 5 4 3
IC5 7 4LS1 64
IC6 7 4LS1 64
单片机C51程序设计教程与实验
主讲教师:董蕴华 实验指导教师:杨其锋
教学安排
• 本课程共45学时(理论25学时,实验20学
时) • 课程性质:考查 本课程考试以应用程序设计 作为考查的评分依据
学习本课应具备的基础知识
学习本课程应具备的基础知识 ☆ 单片机原理及应用 ☆ C语言程序设计
学习本课应具备的硬件 ☆ 实验板一块 ☆ 程序下载线一条
3
Vcc1 Vcc2 X1 SCLK X2 I/O GND RST
DZ2
3.6V
2.2K
+5V
+5VINT0Fra bibliotekP1. 0
A0 VCC A1 WP A2 SCL GND SDA
AT24C04
P1. 2 P1. 3
C51程序设计基础

无符号字符型 unsigned char 有符号字符型 char 无符号整型 unsigned int 有符号整型 int 无符号长整型 unsigned long 有符号长整型 long 单精度实型 float
双精度实型
位型
double
bit
64
1
±1.176E-38~ ±3.40E+38(10位数字) 0~1
C51程序设计基础
电子信息系 袁可可
教学目标
掌握Keil软件的使用
了解C51程序的写法
Keil软件的使用方法
(1)新建工程
中文版:工程新建工程
英文版:ProjectNew Project
工程名不需要加扩展名
Keil软件的使用方法
(2)新建C51源文件
中文版:文件新建
英文版:FileNew
分页寻址片外数据存储区(256字节),由MOVX @Ri访问 寻址片外数据存储区(64K字节),有MOVX @DPTR访问 寻址代码存储区(64K字节),有MOVC @DPTR访 问
C51数据存储类型
C51存储类型及其大小和值域
存储类型 长度(bit) 长度(byte) 值域范围
data
idata pdata xdata code
C51程序应用实例
1、点亮P1.0口的发光二极管
C51程序应用实例
2、P1.0口的发光二极管以间隔1s闪烁
要点:延时程序编写
小结
Keil软件的基本使用方法
C51程序的基本结构
C51基本结构
if
选择语言
switch/case
while
多分支选择语言
单片机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单片机的 三个逻辑存储空间: 片内数据存储器,片外数据存储器和程序存储器。
.
.
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言语的标识符和关键字
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" };