- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 MCS51单片机C语言程序设计
C语言具有很强的表达能力,并具有较高的可移植性,提供了种类丰富的运算符和数据类型,可以直接实现对系统硬件的控制。
相对于汇编语言,使用C语言进行系统开发可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。
本章就介绍使用C语言开发8051系列单片机程序的方法。
;双字节无符号数加法程序 (R3R4+R6R7)=(R3R4);入口??? :R3,R4,R6,R7NADD???? :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;
本章主要内容
C51变量声明
C51的IO口操作
C51的外部总线扩展操作
C51的中断响应方法
2.1 C51语言变量声明
但在C语言编程中,对数据类型与变量的定义必须要与单片机的存储结构相关联,否则编译器就不能正确的映射。
所以用C语言编写单片机应用程序是要根据单片机的结构及内部资源定义相应的C语言中的数据类型和变量。
用C语言编写的应用程序必须经单片机的C语言编译器,将源代码转换成单片机的可执行程序。支持MCS-51系列单片机的编译器有很多,比较著名也是实际应用最多的是KEIL/Franklin编译器。这也是这门课使用的编译器。
一、C51数据类型
数据类型
长度(bit)
长度(byte)
值域
bit
1
1
0,1
unsigned char
8
1
[0,255]
signed char
8
1
[-128,127]
unsigned int
16
2
[0,65535]
signed int
16
2
[-32768, 32767]
unsigned long
32
4
[0, 4294967295]
signed long
32
4
[-2147483648, 2147483647]
float
32
4
±1.176E-38~±3.40E+38(6位有效数字)
double
64
8
±1.176E-38~±3.40E+38(10位有效数字)
指针
24
3
0~65535(存储空间)
表2.1 C51支持的数据类型
二、C51数据类型修饰符
存储类型
与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节),值域 0~127
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节,值域0~127
idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节,值域0~255
pdata
分页寻址片外数据存储区,,由MOVX @Ri访问(i=0,1),值域 0~255
xdata
片外数据存储区(64KB)由MOVX @DPTR访问,值域0~65535
code
程序存储器64KB空间,由MOVC @DPTR访问,值域0~65535
表2.2 C51存储类型修饰符
二、C51数据修饰符
修饰符名称
功能
const
指示被修饰的变量或者指针是常量
volatile
指示被修饰的变量或者指针可由多种原因被修改,禁止优化。常用于修饰多个函数公用的变量。
表2.3 其他修饰符
三、C51变量声明举例
C51变量声明格式:
[存储类型]+[类型说明]+[修饰符]+[标示符]=[初值]
auto
register
static
extern
char
unsigned char
int
unsigned int
long
unsigned long
float
double
bit
sfr
sfr16
sbit
data
bdata
idata
pdata
xdata
code
const
volatile
value=初值
unsigned char xdata val;
signed char data string;
bit bdata val_bit;
unsigned char xdata *pval;
unsigned char code *pcode;
code应用举例
unsigned char code tab[4]={0x00,0x01,0x02,0x03};
void main(void)
{
unsigned char i,j=0;
for(i=0; i4; i++){
j = j+tab[i];
}
}
9: for(i=0; i4; i
您可能关注的文档
- 触电与防护1概要.ppt
- 五年级半期晨诵诗歌剖析.ppt
- 专题五孝敬父母师友同行讲述.ppt
- 第7课戊戌变法讲义.ppt
- 专题五形容词、副词讲述.ppt
- 触摸屏种类与原理、结构概要.doc
- 专题小升初阅读理解第二讲讲述.docx
- 触摸心灵_沟通你我(关于人际交往主题班会)概要.ppt
- 五年级第四组作文·生活的启示剖析.pptx
- 第一章:食品理化检验的基本程序讲义.ppt
- Dell戴尔OpenManage Enterprise Integration for VMware vCenter 1.4 支援矩陣.pdf
- Dell戴尔戴尔 VxRail VP-7625 硬件要求和规格.pdf
- Dell戴尔Dell EMC PowerEdge M640 for VRTX enclosure Installation and Service Manual说明书用户手册.pdf
- Dell戴尔Dell Wireless Headset - WL3024 使用指南.pdf
- Dell戴尔Dell G2724D 显示器用户指南.pdf
- Dell戴尔PowerProtect Data Manager 19.15 文件系统用户指南.pdf
- Dell戴尔Precision 5860 塔式工作站 设置和规格.pdf
- Dell戴尔Dell Storage Monitoring and Reporting 4.9.1.0 Upgrade Guide说明书用户手册.pdf
- Dell戴尔Dell Command Monitor Version 10.11.0 Installation Guide说明书用户手册.pdf
- Dell戴尔Statement of Volatility – Dell PowerEdge R7615说明书用户手册.pdf
文档评论(0)