使用Keil语言的嵌入式C编程教程(上)

发布时间:2024-07-31  

嵌入式系统是指以单片机为核心的嵌入式C编程软硬件的结合,旨在完成特定的任务。这些类型的嵌入式系统正在我们的日常生活中使用,如洗衣机、录像机、冰箱等。嵌入式系统首先由8051单片机介绍。

8051单片机简介             

8051微控制器是一个基本的微控制器,它是由英特尔公司自1970年首次推出。它是由8086处理器体系结构开发的。8051是一个微控制器家族,由飞利浦、阿特梅尔、戴尔等不同厂商开发。8051微控制器已经应用于从儿童玩具到大型汽车系统的许多嵌入式产品中。

8051微控制器是8位“CISC”结构。它由存储器、串行通信、中断、输入/输出端口和定时器/计数器组成,内置于一个集成芯片中,通过编程控制与之接口的外围设备。程序存储在微控制器的RAM中,但在编写程序之前,必须了解微控制器的RAM结构。             

嵌入式系统编程:基础声明             

每个函数都是执行特定任务的语句的集合,一个或多个函数的集合称为编程语言。每一种语言都包含一些基本要素和语法规则。C语言程序设计是用字符集、变量、数据类型、常量、关键字、表达式等来编写C语言程序。所有这些都在头文件或库文件下考虑,表示为include

C语言的扩展称为嵌入式C语言。与以上相比,C语言的嵌入式编程具有一些额外的特性,如数据类型和关键字,头文件或库文件表示为             

#include             

嵌入C附加关键字

·       sbit

·       bit

·       SFR

·       volatile

·       macros define

“sbit”用于声明微控制器的单个管脚。例如,LED连接到P0.1管脚,不建议直接将值发送到端口管脚,首先,我们必须用另一个变量声明管脚,然后才能在程序中的任何地方使用。              语法:sbit a=P0^1;//用变量声明相应的pin//             

a=0x01;//将值发送到端口pin//             

“bit”用于检查变量的状态。             

语法:bit c;//声明位变量//             

c=a;//c变量赋值//             

if(c==1)//检查条件true或false//

{
…..
……
}

“SFR”关键字用于通过另一个名称访问SFR寄存器。SFR寄存器定义为一个特殊的功能寄存器,它通过指示地址来包含所有与外围设备相关的寄存器。SFR寄存器由SFR关键字声明。SFR关键字必须是大写字母。             

语法:SFR port=0x00;//0x00是端口0地址,由端口变量声明//             

Port=0x01;//然后将值发送到端口0//

delay();
port=0x00;
delay();

“volatile”关键字是嵌入式系统开发中最重要的关键字。无法意外更改用volatile关键字值声明的变量。它可以用于内存映射的外围寄存器,由ISRs修改的全局变量。如果不使用volatile关键字来发送和接收数据,则会发生代码错误或优化错误。             

语法:volatile int k;             

宏是用于将语句块声明为预处理器指令的名称。无论何时使用该名称,它都将被宏的内容替换。宏表示定义。整个端口管脚由宏定义。             

语法:#define dat Po;//整个端口由一个变量声明//             

dat=0x01;//发送到端口0的数据//

基本嵌入式C程序             

每种操作系统的微控制器编程都不同。尽管已经存在很多操作系统,如Linux、Windows、RTOS等。然而,实时操作系统在嵌入式系统开发中有许多优点。本文讨论了用8051单片机开发嵌入式C程序的基本方法。

用8051单片机实现LED闪烁             

用8051单片机在七段显示器上显示数字             

用8051单片机进行定时器/计数器的计算与编程             

基于8051单片机的串行通信计算与编程             

用8051单片机中断程序             

用8051单片机进行键盘编程             

用8051单片机进行液晶显示编程             

用8051单片机实现LED闪烁             

LED是一种半导体器件,应用广泛,主要用于显示。在测试过程中发现了大量的应用作为指标来检验不同阶段测试结果的有效性。它们非常便宜,而且很容易买到各种形状、颜色和尺寸。LED用于设计信息显示板和交通控制信号灯等。这里的LED与8051微控制器的端口0接口。

1. 01010101
10101010

#include //header file//
void main() //the program execution stat point//
{
unsigned int i; //data type//
while(1) //for continuous loop//
{
P0=0x55; //send the hexa value to the port0//
for(i=0;i<30000;i++) //normal delay//
P0=0x3AA; //send the hexa value to the port0//
for(i=0;i<30000;i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10000000

#include

void main()

{

unsignedint i;

unsigned char j,b;

while(1)

{

P0=0x01;

b=P0;

for(j-0;j<3000;j++);

for(j=0;j<8;j++)

{

b=b<<1;

P0=b;

for(j-0;j<3000;j++);

}

}

}

3. 00001111

11110000

#include

void main()

{

unsignedint i;

while(1)

{

P0=0x0F;

for(j-0;j<3000;j++);

P0=0xF0;

for(j-0;j<3000;j++);

}

}

4. 00000001

00000011

00000111

.

.

11111111

#include

void main()

{

unsignedint i;

unsigned char j,b;

while(1)

{

P0=0x01;

b=P0;

for(j-0;j<3000;j++);

for(j=0;j<8;j++)

{

b=b<<1;

b=b|0x01;

P0=b;

for(j-0;j<3000;j++);

}

}

}

用8051单片机在七段显示器上显示数字             

七段式显示器是最基本的电子显示器,在许多系统中用来显示数字信息。它由八个发光二极管组成,当发光二极管的适当组合打开时,这些发光二极管按顺序连接,以便显示0到9之间的数字。一次只能显示一个数字。

1. WAP to display the numbers form ‘0 to F’ on four 7segment displays ?

#include
sbit a= P3^0;
sbit b= P3^1;
sbit c= P3^2;
sbit d= P3^3;
void main()
{
unsignedchar n[10]={0×40,0xF9,0×24,0×30,0×19,0×12,0×02,0xF8,0xE00,0×10};
unsigned inti,j;
a=b=c=d=1;
while(1)
{
for(i=0;i<10;i++)
{
P2=n[i];
for(j=0;j<60000;j++);
}
}
}

2. WAP to display the numbers from ’00 to 10’ on 7segment displays ?

#include
sbit a= P3^0;
sbit b= P3^1;
void display1();
void display2();
void delay();
void main()
{
unsignedchar n[10]={0×40,0xF9,0×24,0×30,0×19,0×12,0×02,0xF8,0xE00,0×10};
unsigned inti,j;
ds1=ds2=0;
while(1)
{
for(i=0,i<20;i++)
display1();
display2();
}
}
void display1()
{
a=1;
b=0;
P2=s[ds1];
delay();
a=1;
b=0;
P2=s[ds1];
delay();
}
void display2()
{
ds1++;
if(ds1>=10)
{
ds1=0;
ds2++;
if(ds2>=10)
{
ds1=ds2=0;
}
}
}
void delay()
{
unsignedint k;
for(k=0;k<30000;k++);
}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>