首页 > 编程知识 正文

单片机编程语言,单片机三大编程语言

时间:2023-05-04 17:35:33 阅读:124940 作者:3053

8051的c语言编程与传统的c语言编程相似。 当然,其中也有不同的数据类型。 据了解,8051支持较强的位寻址能力。 因此,在8051的c语言编程中,为了不浪费的8051的能力,添加了新的数据类型。 新的数据类型如下所示。

bit ——用于定义一个位变量,用于8051的位地址空间。 (内部RAM的20H——2FH的字节空间;00H——7FH的位地址空间) )。 ) )不得不说8051的地址重叠造成了困扰。 )

例如,比特标志=0; 将flag定义为位变量,初始化为0。

sbit ——用于定义8051特殊功能寄存器(内部RAM的80H——FFH的字节区域)的位变量

例如,sbit CY=0xD7;

sbit P0_0=0x80^0;

上面的位和sbit是两种不同的数据类型,bit用于为某个位地址赋值,sbit用于命名某个特殊功能寄存器中某个位的位地址。

sfr ——用于定义特殊功能寄存器变量。

例如,sfr PSW=0xD0;

有了以上规定后,可以这样使用PSW的各位。 例如,PSW^0; 表示PSW的第0个,即奇偶校验位p。

sfr16 ——用于定义16位特殊功能寄存器变量。

例如,sfr16 DPTR=0x82;

通过上面引入的数据类型,8051的c语言编程与普通的c语言编程基本一致。 也充分利用了8051的特征。

目前,我们的集成开发环境很人性化,在reg51.h头文件中定义了8051个特殊功能寄存器、位可寻址特殊功能寄存器的控制位。 头文件的内容如下所示。

/*--------------请参阅988-2002 keilelektronikgmbhandkeilsoftware,Inc.all rights reserved---- - sfr P1=0x90; sfr P2=0xA0; sfr P3=0xB0; sfr PSW=0xD0; sfr ACC=0xE0; sfr B=0xF0; sfr SP=0x81; sfr DPL=0x82; sfr DPH=0x83; sfr PCON=0x87; sfr TCON=0x88; sfr TMOD=0x89; sfr TL0=0x8A; sfr TL1=0x8B; sfr TH0=0x8C; sfr TH1=0x8D; sfr IE=0xA8; sfr IP=0xB8; sfr SCON=0x98; sfr SBUF=0x99;/*位注册器*//* PSW */sbit cy=0x D7; sbit AC=0xD6; sbit F0=0xD5; sbit RS1=0xD4; sbit RS0=0xD3; sbit OV=0xD2; sbit P=0xD0; /* TCON */sbit TF1=0x8F; sbit TR1=0x8E; sbit TF0=0x8D; sbit TR0=0x8C; sbit IE1=0x8B; sbit IT1=0x8A; sbit IE0=0x89; sbit IT0=0x88; /* IE */sbit EA=0xAF; sbit ES=0xAC; sbit ET1=0xAB; sbit EX1=0xAA; sbit ET0=0xA9; sbit EX0=0xA8; /* IP */sbit PS=0xBC; sbit PT1=0xBB; sbit PX1=0xBA; sbit PT0=0xB9; sbit PX0=0xB8; /* P3 */sbit RD=0xB7; sbit WR=0xB6; sbit T1=0xB5; sbit T0=0xB4; sbit INT1=0xB3; sbit INT0=0xB2; sbit TXD=0xB1; sbit RXD=0xB0; /* SCON */sbit SM0=0x9F; sbit SM1=0x9E; sbit SM2=0x9D; sbit REN=0x9C; sbit TB8=0x9B; sbit RB8=0x9A; sbit TI=0x99; sbit RI=0x98; #endif8051单片机有多路存储方式、内部RAM、内部ROM、外部RAM、外部ROM。 我们有时想知道这个变量在哪里。 上表显示了变量。 函数等被放置在8051的存储区域中。

示例: char code str[]='hello world!' ; 定义数组并将其放入ROM中。

当然,访问时的速度因上述定义方法而异。 例如,data比xdata快。 如果数据位于外部RAM中,请考虑使用xdata或pdata。

如果忘记了保存在哪里,则8051默认为small的保存模式。 在此模式下,所有数据都放置在内部RAM中。 详情请参阅下表

程序中,可以选择在#program中设定哪个模式。 否则默认值为small。

最后,我还要提到指针,8051的c语言编程实际上类似于汇编语言,需要直接操作内存区域。

指针本来在c语言中就很灵活,但现在让我们来看看指针的存储类型。

例如,int *xdata numptr=num; 指针指向int型数据,但其本身存储在外部RAM中。

int data *xdata numptr=num; 指针指向存储在内部RAM中的int型数据,指针本身位于外部RAM中。

另一个重要的是c语言的数据类型占8051的大小。

以上结果表明:

char类型为8051,占1字节

int类型为8051,占2字节

浮动类型为8051,占4字节

双精度型为8051,占4字节

指针是最有趣的。 根据上述结果,如果没有指定指针指向的数据存储在哪个块中,则指针将在8051处占用3个字节。 第一个字节存储相应数据的存储类型

如果表示是内部RAM,则占用1字节,如果是外部RAM,则占用2字节。

未定义数据存储类型指针变量的第一个字节的数据与数据存储类型的对应关系

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。