C51.ppt
- 文档编号:2638263
- 上传时间:2022-11-04
- 格式:PPT
- 页数:21
- 大小:123.50KB
C51.ppt
《C51.ppt》由会员分享,可在线阅读,更多相关《C51.ppt(21页珍藏版)》请在冰豆网上搜索。
KEILC51的应用的应用nnC语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。
目前,使用C语言进行程序设计已经成为软件开发的一个主流。
用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。
而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。
CC语言作为一种非常方便的语言而得到广泛的支持,语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是国内最通用的是KeilKeilC51.C51.CC语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。
作修改就可将程序从不同的单片机中移植过来。
CC提供了很多数学函数并支持浮点运算,开发效率提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护高,故可缩短开发时间,增加程序可读性和可维护性。
性。
C-51C-51的特点的特点C-51C-51与与ASM-51ASM-51相比,有如下优点:
相比,有如下优点:
1.1.对单片机的指令系统不要求了解,仅要求对单片机的指令系统不要求了解,仅要求对对80518051的存贮器结构有初步了解;的存贮器结构有初步了解;2.2.寄存器分配、不同存贮器的寻址及数据类寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;型等细节可由编译器管理;3.3.程序有规范的结构,可分成不同的函数,程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;这种方式可使程序结构化;4.4.具有将可变的选择与特殊操作组合在一起具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;的能力,改善了程序的可读性;5.5.提供的库包含许多标准子程序,具有较强提供的库包含许多标准子程序,具有较强的数据处理能力;的数据处理能力;6.6.由于具有方便的模块化编程技术,使已编由于具有方便的模块化编程技术,使已编好程序可容易地移植;好程序可容易地移植;C51存储类型存储类型存储类型存储类型寻址空间寻址空间数据长度数据长度值域范围值域范围datadata片内直接寻址片内直接寻址RAMRAM8801270127idataidata片内间接寻址片内间接寻址RAMRAM8802550255pdatapdata分页寻址分页寻址片外片外RAMRAM8802550255存储类型存储类型寻址空间寻址空间数据长度数据长度值域范围值域范围xdataxdata片外数据存片外数据存储储(64K64K)1616065535065535codecode片内统一编片内统一编址址ROMROM(64K64K)1616065535065535bdatabdata片内可位寻片内可位寻址的址的RAMRAM(16bye16byett)1101270127nnC51的数据声明的一般格式如下nn类型说明符修饰符标识符=初值nn例如:
unsignedcharcodeFlag=0x0f;就是声明一个无符号的char型变量Flag,并给他赋初值为0x0f;并且声明他所在的存储空间在片内统一编址的ROM中。
nn声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内RAM中。
CC5151的程序结构的程序结构与一般与一般CC语言的结构相同,以语言的结构相同,以main()main()函数为程序人函数为程序人口,程序体中包含若干语句还可以包含若干函数。
口,程序体中包含若干语句还可以包含若干函数。
CC5151函数的一般格式函数的一般格式类型类型函数名(参数表)函数名(参数表)数据说明部分数据说明部分语句执行部分语句执行部分CC5151的数据类型的数据类型基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsignedint0655353204294967295unsignedlongintunsignedshortint16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsignedchar80255C语言中的基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsignedint0655353204294967295unsignedlongintunsignedshortint16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsignedchar80255(续续)CC5151的数据类型的数据类型扩充定义扩充定义sfrsfr:
特殊功能寄存器特殊功能寄存器声明声明sfr16:
sfr16:
sfrsfr的的1616位数据声明位数据声明sbitsbit:
特殊功能位声明特殊功能位声明bitbit:
位变量声明位变量声明例:
例:
sfrsfrSCON=0X98;SCON=0X98;sfr16T2=0xCC;sfr16T2=0xCC;sbitsbitOV=PSW2;OV=PSW2;C-51C-51数据的存储类型数据的存储类型名名存储空间位置存储空间位置长度长度数据范围数据范围datadata直接寻址片内直接寻址片内RAM8RAM8位位00255255bdatabdata可位寻址片内可位寻址片内RAM1RAM1位位0/10/1idataidata间接寻址片内间接寻址片内RAM8RAM8位位00255255pdatapdata片外页片外页RAM8RAM8位位00255255xdataxdata片外片外RAM16RAM16位位006553565535codecode程序程序ROM16ROM16位位006553565535C-51C-51数据的存储类型数据的存储类型(续续)例:
例:
数据类型数据类型存储类型存储类型变量变量charchardatadatavar1;var1;bitbitdatadataflags;flags;unsignedcharunsignedcharxdataxdatavextor10;vextor10;C-51C-51数据的存储类型数据的存储类型C-51C-51的的包含的头文件包含的头文件通常有通常有:
reg51.hmath.hreg51.hmath.hctype.hctype.hstdio.hstdio.hstdlib.hstdlib.habsacc.habsacc.h常用有常用有:
reg51.hreg51.h(定义特殊功能寄存器和定义特殊功能寄存器和位寄存器);位寄存器);math.hmath.h(定义常用数学运算);定义常用数学运算);C-51C-51的运算符的运算符与与CC语言基本相同:
语言基本相同:
+-*/+-*/(加(加减减乘乘除)除)=(位右移(位右移位左移)位左移)&|&|(按位与按位与按位或按位或)(按位异或按位异或按位取反按位取反)C-51C-51的基本语句的基本语句与与标准标准CC语言基本相同:
语言基本相同:
ifif选择语言选择语言switch/caseswitch/case多分支选择语言多分支选择语言whilewhile循环语言循环语言do-whiledo-while循环语言循环语言forfor循环语言循环语言中断服务程序中断服务程序函数名()函数名()interruptninterruptnI/OI/O口定义口定义#include#include#define#defineprotprotxbyte0x1000xbyte0x1000或或用指针定义用指针定义例:
例:
清零程序清零程序(将将2000H20FFH2000H20FFH的内容清零的内容清零)汇编语言程序汇编语言程序ORG0000HORG0000HSE01:
MOVR0,#00HSE01:
MOVR0,#00HMOVDPTR,#2000HMOVDPTR,#2000H;(0000H);(0000H)送送DPTRDPTRLOO1:
CLRALOO1:
CLRAMOVXMOVXDPTR,ADPTR,A;0;0送送(DPTR)(DPTR)INCDPTRINCDPTR;DPTR+1;DPTR+1INCR0INCR0;字节数加字节数加11CJNER0,#00H,LOO1CJNER0,#00H,LOO1;不到不到FFFF个字节再清个字节再清LOOP:
SJMPLOOPLOOP:
SJMPLOOP清零程序清零程序(将将2000H20FFH2000H20FFH的内容清零的内容清零)CC5151程序程序#include#includemain()main()intinti;i;unsignedcharunsignedcharxdataxdata*p=0x2000;*p=0x2000;/*/*指针指向指针指向2000H2000H单元单元*/for(ifor(i=0;i256;i+)=0;i256;i+)*p=0;p+;*p=0;p+;/*/*清零清零2000H-20FFH2000H-20FFH单元单元*/汇编语言程序汇编语言程序ORG0000HORG0000HL00:
MOVR0,#10HL00:
MOVR0,#10H;查找查找1616个字节个字节MOVR1,#00HMOVR1,#00HMOVDPTR,#2000HMOVDPTR,#2000HL11:
MOVXA,DPTRL11:
MOVXA,DPTRCJNEA,#00H,L16CJNEA,#00H,L16;取出内容与取出内容与00H00H相等吗相等吗?
INCR1INCR1;取出个数加取出个数加11L16:
INCDPTRL16:
INCDPTRDJNZR0,L11DJNZR0,L11;未完继续未完继续MOVDPTR,#2100HMOVDPTR,#2100HMOVA,R1MOVA,R1MOVXDPTR,AMOVXDPTR,A;相同数个数送相同数个数送2100H2100HL1E:
SJMPL1EL1E:
SJMPL1E例:
查找零的个数例:
查找零的个数(在(在2000H-200FH2000H-200FH中查出有几个中查出有几个字字节是零,把个数放在节是零,把个数放在2100H2100H单元中)单元中)查找零的个数查找零的个数CC5151程序程序#include#includemain()main()unsignedcharunsignedcharxdataxdata*p=0x2000*p=0x2000;/*;/*指针指针pp指向指向2000H2000H单元单元*/intintn=0,i;n=0,i;for(i=0;i16;i+)for(i=0;i16;i+)if(*p=0)n+;if(*p=0)n+;/*/*若该单元内容为零,则若该单元内容为零,则n+1*/n+1*/p+;p+;/*/*指针指向下一单元指针指向下一单元*/p=0x2100;p=0x2100;/*/*指针指针pp指向指向2100H2100H单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51