- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C语言程序设计.ppt.ppt
本 章 重 点
单片机的C程序设计基础
单片机内部资源的C编程
课时安排:6个课时
C是一种源于UNIX操作系统的语言,它是一种结构化语言,可以产生紧凑代码。C可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:
(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;
(2)寄存器分配、不同存储器的寻址以及数据类型等细节可由编译器管理;
(3)程序有规范的结构,可分为不同的函数,这种方式可使程序满足结构化的要求;
C51 程序设计基础
(4)关键字及运算函数可用近似人的思维过程方式使用;
(5)编程及程序调试时间显著缩短,从而提高效率;
(6)提供的库包含许多标准子程序,具有较强的数据处理能力;
(7)已编号的程序可容易地植入新程序中,因为它具有方便的模块化编程技术。
C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不作修改就可根据单片机的不同较快地移植过来。
用C语言编写MCS–51单片机的应用程序,虽然不像用汇编语言那样具体地组织、分配存储器资源和处理端口数据,但在C语言编程中,对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。
用C语言编写单片机应用程序与编写标准的C语言程序的不同之处就在于根据单片机存储结构及内部资源定义相应的C语言中的数据类型和变量,其它的语法规定、程序结构及程序设计方法都与标准的C语言程序设计相同。
一、C51的程序结构
与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。
二、C51的数据类型
三、C51数据的存储类型
变量的存储类型定义举例:
char var;
bit bdata flag;
float idata x, y;
unsigned int pdata dim;
unsigned char xdata vector[10][10];
#define uint unsigned int
#define uchar unsigned char
(1)var被定义在片内RAM区,地址00H~0FFH。
(2)flag被定义在片内RAM的可位寻址区,地址20H~2FH。
(3)x,y被定义在片内RAM区,只能用间接寻址方式。
(4)dim被定义的片外RAM区,并用 MOVX @Ri访问。
(5)vector被定义在片外RAM区, 并用 MOVX @DPTR访问。
如果在定义变量时略去存储类型标志符,编译器会自动选择默认的存储类型。默认的存储类型进一步由SMALL、COMPACT、LARGE存储模式指令限制。
例如:若声明char var;在SMALL存储模式下,var变量被定位在DATA存储区;在COMPACT存储模式下, var变量被定位在PDATA存储区;在LARGE存储模式下,var变量被定位在XDATA存储区。
存储模式:存储模式决定了变量的默认存储类型,参数传递区和无明确存储类型的说明。
四、C51数据的存储模式
通常有:reg51.h math.h absacc.h stdio.h stdlib.h
五、C51包含的头文件
其中:reg51.h (定义特殊功能寄存器和位寄存器)
math.h (定义常用数学运算)
absacc.h (定义存储类型及地址)
stdio.h (定义标准输入输出函数)
stdlib.h (定义标准库函数)
注:这些头文件的位置是“C:\C51\INC”。
六、C51的运算符
与标准C语言基本相同:
if 选择语言
switch/case 多分支选择语言
while 循环语言
do-while 循环语言
for 循环语言
七、C51的基本语句
为了能直接访问特殊功能寄存器SFR,C51提供了一种自主形式的定义方法,这种定义方法与标准C语言不兼容,只适用于对8051系列单片机进行C编程。
八、C51对特殊功能寄存器的定义
这种定义的方法是引入关键字“sfr”,语法如下:
sfr sfr_name ‘=’ int constant;
例如:
您可能关注的文档
最近下载
- 吞咽障碍护理的ppt课件.pptx VIP
- PROTEUS-V8中文版介绍.ppt VIP
- 精准落实语文要素五策略 .pdf VIP
- 《第一单元 100以内数加与减(二)——图书角》教学设计-2024-2025学年二年级上册数学北师大版.docx VIP
- 中枢神经系统感染护理查房.ppt VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 规范、标准整理:TCSUS 17-2021 古道保护利用规划编制导则--------工程交流群加vx:gqq5616.pdf VIP
- 在2024年全市第四季度“12345”热线不满意工单分析研判会上的主持词.docx VIP
- 云南省重大项目办公室 云南省各地州市2015年重大建设项目.doc VIP
- 评标专家评标流程.pdf VIP
文档评论(0)