日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/28 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Keil语言的嵌入式C编程教程(上) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用Keil語言的嵌入式C編程教程(上)

Embedded C Programming Tutorial with Keil Language

Embedded System

嵌入式系統(tǒng)是指以單片機(jī)為核心的嵌入式C編程軟硬件的結(jié)合,旨在完成特定的任務(wù)。這些類型的嵌入式系統(tǒng)正在我們的日常生活中使用,如洗衣機(jī)、錄像機(jī)、冰箱等。嵌入式系統(tǒng)首先由8051單片機(jī)介紹。

8051單片機(jī)簡介

8051微控制器是一個基本的微控制器,它是由英特爾公司自1970年首次推出。它是由8086處理器體系結(jié)構(gòu)開發(fā)的。8051是一個微控制器家族,由飛利浦、阿特梅爾、戴爾等不同廠商開發(fā)。8051微控制器已經(jīng)應(yīng)用于從兒童玩具到大型汽車系統(tǒng)的許多嵌入式產(chǎn)品中。

8051微控制器是8位“CISC”結(jié)構(gòu)。它由存儲器、串行通信、中斷、輸入/輸出端口和定時(shí)器/計(jì)數(shù)器組成,內(nèi)置于一個集成芯片中,通過編程控制與之接口的外圍設(shè)備。程序存儲在微控制器的RAM中,但在編寫程序之前,必須了解微控制器的RAM結(jié)構(gòu)。

嵌入式系統(tǒng)編程:基礎(chǔ)聲明

每個函數(shù)都是執(zhí)行特定任務(wù)的語句的集合,一個或多個函數(shù)的集合稱為編程語言。每一種語言都包含一些基本要素和語法規(guī)則。C語言程序設(shè)計(jì)是用字符集、變量、數(shù)據(jù)類型、常量、關(guān)鍵字、表達(dá)式等來編寫C語言程序。所有這些都在頭文件或庫文件下考慮,表示為include<studio.h>

C語言的擴(kuò)展稱為嵌入式C語言。與以上相比,C語言的嵌入式編程具有一些額外的特性,如數(shù)據(jù)類型和關(guān)鍵字,頭文件或庫文件表示為

#include

嵌入C附加關(guān)鍵字

·
sbit

·
bit

·
SFR

·
volatile

·
macros define

“sbit”用于聲明微控制器的單個管腳。例如,LED連接到P0.1管腳,不建議直接將值發(fā)送到端口管腳,首先,我們必須用另一個變量聲明管腳,然后才能在程序中的任何地方使用。
語法:sbit a=P0^1;//用變量聲明相應(yīng)的pin//

a=0x01;//將值發(fā)送到端口pin//

“bit”用于檢查變量的狀態(tài)。

語法:bit c;//聲明位變量//

c=a;//c變量賦值//

if(c==1)//檢查條件true或false//

{

……

……

}

“SFR”關(guān)鍵字用于通過另一個名稱訪問SFR寄存器。SFR寄存器定義為一個特殊的功能寄存器,它通過指示地址來包含所有與外圍設(shè)備相關(guān)的寄存器。SFR寄存器由SFR關(guān)鍵字聲明。SFR關(guān)鍵字必須是大寫字母。

語法:SFR port=0x00;//0x00是端口0地址,由端口變量聲明//

Port=0x01;//然后將值發(fā)送到端口0//

delay();

port=0x00;

delay();

“volatile”關(guān)鍵字是嵌入式系統(tǒng)開發(fā)中最重要的關(guān)鍵字。無法意外更改用volatile關(guān)鍵字值聲明的變量。它可以用于內(nèi)存映射的外圍寄存器,由ISRs修改的全局變量。如果不使用volatile關(guān)鍵字來發(fā)送和接收數(shù)據(jù),則會發(fā)生代碼錯誤或優(yōu)化錯誤。

語法:volatile int k;

宏是用于將語句塊聲明為預(yù)處理器指令的名稱。無論何時(shí)使用該名稱,它都將被宏的內(nèi)容替換。宏表示定義。整個端口管腳由宏定義。

語法:#define dat Po;//整個端口由一個變量聲明//

dat=0x01;//發(fā)送到端口0的數(shù)據(jù)//

基本嵌入式C程序

每種操作系統(tǒng)的微控制器編程都不同。盡管已經(jīng)存在很多操作系統(tǒng),如Linux、Windows、RTOS等。然而,實(shí)時(shí)操作系統(tǒng)在嵌入式系統(tǒng)開發(fā)中有許多優(yōu)點(diǎn)。本文討論了用8051單片機(jī)開發(fā)嵌入式C程序的基本方法。

用8051單片機(jī)實(shí)現(xiàn)LED閃爍

用8051單片機(jī)在七段顯示器上顯示數(shù)字

用8051單片機(jī)進(jìn)行定時(shí)器/計(jì)數(shù)器的計(jì)算與編程

基于8051單片機(jī)的串行通信計(jì)算與編程

用8051單片機(jī)中斷程序

用8051單片機(jī)進(jìn)行鍵盤編程

用8051單片機(jī)進(jìn)行液晶顯示編程

用8051單片機(jī)實(shí)現(xiàn)LED閃爍

LED是一種半導(dǎo)體器件,應(yīng)用廣泛,主要用于顯示。在測試過程中發(fā)現(xiàn)了大量的應(yīng)用作為指標(biāo)來檢驗(yàn)不同階段測試結(jié)果的有效性。它們非常便宜,而且很容易買到各種形狀、顏色和尺寸。LED用于設(shè)計(jì)信息顯示板和交通控制信號燈等。這里的LED與8051微控制器的端口0接口。

  1. 01010101

10101010

#include<reg51.h> //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//

}

}

  1. 00000001

00000010

00000100

.

.10000000

#include<reg51.h>

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++);

}

}

}

  1. 00001111

11110000

#include<reg51.h>

void main()

{

unsignedint i;

while(1)

{

P0=0x0F;

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

P0=0xF0;

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

}

}

  1. 00000001

00000011

00000111

.

.11111111

#include<reg51.h>

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單片機(jī)在七段顯示器上顯示數(shù)字

七段式顯示器是最基本的電子顯示器,在許多系統(tǒng)中用來顯示數(shù)字信息。它由八個發(fā)光二極管組成,當(dāng)發(fā)光二極管的適當(dāng)組合打開時(shí),這些發(fā)光二極管按順序連接,以便顯示0到9之間的數(shù)字。一次只能顯示一個數(shù)字。

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

#include<reg51.h>

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++);

}

}

}

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

#include<reg51.h>

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++);

}

總結(jié)

以上是生活随笔為你收集整理的使用Keil语言的嵌入式C编程教程(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。