《【ch05】单片机的C语言程序设计.docx》由会员分享,可在线阅读,更多相关《【ch05】单片机的C语言程序设计.docx(3页珍藏版)》请在第一文库网上搜索。
1、第5章单片机的C语言程序设计1 .哪些变量类型是51系列单片机直接支持的?C51编译器支持的数据类型有:位型(bit)无符号字符型(unsignedchar)、有符号字符型(signedchar)、无符号整型(unsignedint)有符号整型(signedint)、无符号长整型(UnSigned1ong)、有符号长整型(signedIong)、浮点型(f1oat)和指针型等。2 .简述C51语言的数据存储类型。8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可
2、直接寻址1高128字节(从080到OXFF)只能间接寻址2从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。C51提供两种不同的存储类型Xdata和pdata访问外部数据。code存储类型访问程序存储区。程序存储区是只能读不能写。程序存储区可能在8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。C51提供了code存储类型来访问程序存储区。每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存
3、储器的访问快许多,因此应当将频繁使用的变量放在内部存储器3中,而把较少使用的变量放在外部存储器中。3 .简述C51语言对51系列单片机特殊功能寄存器的定义方法。特殊功能寄存器型是C51扩展的数据类型,用于访问MCS-51单片机中的特殊功能寄存器数据。它分为Sfr和sfr16两种类型。Sfr为字节型特殊功能寄存器类型,占一个字节单元,利用它可访问单片机内部的所有特殊功能寄存器,sfr16为双字节型特殊功能寄存器类型,占两个字节单元,利用它可访问单片机内部占用两个字节的特殊功能寄存器,如定时器TO和T1C51中特殊功能寄存器的访问必须先用Sfr和sfr16进行声例如:sfrPI=0x90,即:约定
4、P1为PI端明。口在片内的寄存器,在后面的语句编程中可通过对P1赋值,实现对P1端口的赋值。如用P1=255对P1端口的所有引脚置IdquoJrdquoe4 .简述C51语言对51系列单片机片内I/O接口和片外扩展的I/O接口的定义方法。C51对51单片机片内I/O口的定义方法是将片内1/口看成SFR。C51对51单片机片外I/O的访问有两种比较常用的访问方法:(1)绝对宏C51编译器提供了一组宏定义来对51系列单片机的codeNdata、pdata和adata空间进行绝对寻址112)_at_关键字可以使用关键字_at_对指定的存储器空间的绝对地址进行访问,一般格式如下:存储器类型数据类型说明
5、符变量名_at一地址常数5 .简述C51语言对51系列单片机位变量的定义方法。答:除了通常的C数据类型外,C51编译器支持bit数据类型。采用关键字“bit”进行定义。如:bitdirectionbit;/*将directionbit定义为位变量*bit1ock_pointer;/*将IOCk.pointer定义为位变量*bitdisp1ayinvers;/*将disp1ayinvers定义为位变量*/6 .C51语言和TUrboC语言的数据类型和存储类型有哪些异同?答:C51增加了位变量,取消了布尔变量。7 .C51语言的data、bdataxidata有什么区别?data:直接寻址I11片
6、内数据区的低128字节bdata:片内数据区的位寻址区0x2002f,16字节,也可字节访问。idata:间接寻址2片内数据区的256字节。8 .C51语言中的中断函数和一般的函数有什么不同?答:C51编译器允许用C51创建中断服务函数中断函数是由中断系统自动调用的。中断函数的定义格式为函数类型函数名interruptnusingn其中interrupt和using为关键字interrupt后面的n为中断源的编号即中断号USing后面的n所选择的寄存器组取值范围为03定义中断函数时,using是一个选项可以省略不用。如果不用USing选项,则由编译器选择一个寄存器组作为绝对寄存器组8051的中
7、断过程通过使用interrupt关键字和中断号(T31)来实现,中断号告诉编译器中断函数的入口地址。9 .C51语言采用什么形式对绝对地址进行访问?答:绝对地址的访问包括片内RAM、片外RAM及I/O的访问。C51提供了两种比较常用的访问绝对地址的方法。(1)绝对宏C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#inc1ude”即可使用其中声明的宏来访问绝对地址,包括CbytexbytePWORd、dbyte、CWORDXWord、pbyte、dword具体使用方法参考absacc.h头文件。其中CBYTE以字节形式对
8、code区寻址;CM)RD以字形式对code区寻址;DBYTE以字节形式对data区寻址;DWORD以字形式对data区寻址;XBYTE以字节形式对data区寻址;XWORD以字形式对adata区寻址PBYTE以字节形式对pdata区寻址;PWORD以字形式对pdata区寻址;(2)_at一关键字可以使用关键字_at对指定的存储器空间的绝对地址进行访问,一般格式如下存储器类型数据类型说明符变量名_a_地址常数;其中,存储器类型为C51能识别的数据类型,如省略则按存储器模式规定的默认存储器类型确定变量的存储器区域;数据类型为C51支持的数据类型;地址常数用于指定变量的绝对地址,必须位于有效的存储
9、器空间之内;使用_at_定义的变量必须为全局变量。10 .按照给定的数据类型和存储类型,写出下列变量的说明形式。在data区定义字符变量va11o在idata区定义整型变量va12o在Xdata区定义无符号字符型数组va13o在Xdata区定义一个指向Char类型的指针px。定义可位寻址变量fIag0定义特殊功能寄存器变量P3o(1)chardatavai1;(2)intidatava12;(3)unsignedcharxdatava13;(4)char*xdatapx;(5)bitf1ag;(6)sfrP3=0xB011 .简述C51语言的基本运算、数组、指针、函数、流程控制语句。C51语言
10、是一种嵌入式C语言,常用于单片机开发中。下面我简要介绍C51语言的基本运算、数组、指针、函数和流程控制语句。1 .基本运算:C51语言支持常见的基本运算,包括加法、减法、乘法、除法等。它还支持逻辑运算符(与、或、非)和比较运算符(等于、大于、小于等)。2 .数组:在C51中,数组是一组相同类型的元素的集合。可以通过下标访问数组元素,数组下标从0开始。例如,intarr5;定义了一个包含5个整数的数组。3 .指针:指针是存储内存地址的变量。使用指针可以直接对内存中的数据进行读写操作。在C51中,可以使用指针来访问数组元素,动态分配内存等。4 .函数:在C51中,函数是一段可重更使用的代码块,用于执行特定的任务。可以通过函数来组织和管理代码。函数可以有参数和返回值,使用关键字void表示无返回值的函数。5 .流程控制语句:C51支持常见的流程控制语句,包括条件语句(if-e1se语句)、循环语句(for、whi1e、C1o-Whi1e语句)和选择语句(SWitCh语句)。这些语句可以根据条件执行不同的代码块,实现程序的控制流程。总结起来,C51语言的基本运算包括常见的数学运算和逻辑运算;数组是一组相同类型的元素的集合;指针用于访问内存中的数据;函数用于组织和管理代码;流程控制语句可以根据条件执行不同的代码块。以上是对C51语言基本特性的简要介绍。