當前位置:首頁 » 編程語言 » keil與c語言單片機控制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

keil與c語言單片機控制

發布時間: 2022-07-14 14:25:19

㈠ 關於基於c語言的單片機keil編程問題.

KSC: 是標號。
DSP[x]指的是DSP數組中第x個數據的值。

㈡ 求大神在keil上幫寫51單片機C語言程序

//第一個實驗:
//假設8個LED陰極指向單片機,D11連接P0.1,D12連接P0.2...D18連接P0.7
//假設K1按鍵在P2.3引腳
#include<reg51.h>
#include<intrins.h>
sbitk1=P2^3;//假設K1按鍵在P2.3引腳
voidmain()
{
P0=0xfe;
while(1)
{
if(k1==0)
{
while(k1==0);
P0=_crol_(P0,1);
}
}

}

//第二個實驗:
//假設8個LED陰極指向單片機,D11連接P0.1,D12連接P0.2...D18連接P0.7
#include<reg51.h>
charled[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};

voidmain()
{
chari=0;
charcounter=0;
TMOD=0x01;//T0工作方式1
TH0=(655356-50000)/256;//延時50ms
TL0=(655356-50000)%256;//延時50ms
TR0=1;//啟動T0
while(1)
{
if(TF0==1)//查詢
{
TH0=(655356-50000)/256;//重新延時50ms
TL0=(655356-50000)%256;//重新延時50ms
counter++;
if(counter==10)//延時0.5秒
{
counter=0;//重新開始新一輪0.5秒延時
i++;
if(i==16)
{
i=0;
}
P0=led[i];//點燈
}
}
}
}

㈢ keil軟體用單片機控制8個LED流水燈來回點亮(C語言程序)

#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //點亮第一個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //點亮第二個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //點亮第三個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //點亮第四個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //點亮第五個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //點亮第六個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //點亮第七個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //點亮第八個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}

或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循環點亮LED
w<<=1; //點亮燈的位置移動,最低位補0
w=w|0x01; //將最低位置1
delay(500); //延時
}
}
}

或:
#include "reg51.h"
//程序中使用_crol_函數,所以要包含頭文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延時
temp=_crol_(temp,1); //點亮LED的位置循環左移一位
}
}

㈣ 單片機用keil 編程C語言,控制某I/O口通斷--通斷的循環,公式怎麼編,比如循環通斷100次,並編寫多種延時

這個程序可以這樣實現:
delay(int delaytime){}/*延時程序自己實現,可以用單片機是裡面的定時器,也可以讓單片機一直計算一個數N次,N次完了之後延時目的達到,函數結束。*/
想要的通斷函數可以定義為:void On_Off(void );
void On_Off(void)
{
.................
.................
p1=0;
for(int i=0;i<100;i++)
{
p1=~p1;//位運算,表示取反,在嵌入式中經常使用這種方式,運算度快,而且方便
delay();

}
}

㈤ 怎麼用keil寫51單片機的c語言程序

建立工程,選取所用單片機具體型號,在引導下建立完成工程 選擇c語言編程,建立模板,即可開始,寫C語言代碼。

㈥ 在51單片機中用c語言keil寫程序實現用一個按鍵控制6個燈的亮和滅(按下按

#include<reg51.h>
sbit key=P1^0;
sfr LED=P0;
main()
{
while(1)
if(key==0)P0=0xc0;
else P0=0xff;
}

㈦ 我初學單片機,看網上有人說keil有人說keilC,這兩者有區別嗎是不同的...

這是兩個不同的概念,Keil是軟體,KeilC是語言。Keil是單片機的開發,編譯,調試環境,KeilC是開發單片機所用的語言,也就是C語言在單片機中的應用。現在Keil這種開發環境已經有很多版本了,而且有針對不同的硬體版本,比如說Keil
for
C51,Keil
for
arm。

㈧ 用keil軟體如何將匯編與C語言結合起來一起編寫單片機的程序

在混合編程中,最常用也是最實用的方法是在C語言中加入部分匯編語言的代碼,分為兩種方法。
方法1)在Keil C51的函數中直接插入匯編語句
方法2)按照Keil C51介面規則,編寫匯編模塊
方法1是利用編譯控制命令#pragma asm(用來標識所插入的匯編語句的起始位置) 和 #pragma endasm (用來標識所插入的匯編語句的結束位置) ,這兩條命令必須成對出現,並可以多次出現。在Keil C51中不對插入的匯編代碼做任何的處理。
方法2編寫匯編模塊,需對KEIL編譯器的編譯過程做些了解。Keil編譯器的編譯過程是首先將項目中的一個個源文件編譯為目標代碼(obj文件),然在再通過連接器產生為最終可執行的hex文件。
目標代碼將其中的代碼、數據、常量放在不同的「段」中,保存程序的段稱為「代碼段」,保存數據的段稱為「數據段」,最終目標代碼經過Keil的連接器按照「段」的要求轉換為程序和數據地址固定的可執行文件。
在Keil軟體中,「段」按定位屬性分為:「可重定位段」和「絕對段」。
「可重定位段」:程序和數據在其分別所對應的存儲單元(FLASH和RAM)中的存儲地址是浮動的、可重定義的、相對可變的。
「絕對段」:其地址在連接前就已確定不變,連接器據此為它分配地址。
經Keil編譯器生成的「段」具有如下屬性:
1)段的存儲屬性(program code data pdata xdata bdata bit等);
2)段的起始地址;3)段的長度;
4)段的定位要求:絕對段地址固定,可重定位段定位的要求如要求代碼段在2K范圍內,數據段定位在可位定址區等;
5)段名:包括程序和數據(變數和常量)的段的存儲屬性及段所屬的程序模塊(文件)。代碼段: ?PR? funcname?Filename
數據段如:?DT? funcname?Filename; ?BI? funcname?Filename
標准段名前綴列表
段前綴 存儲類型 含義
?PR? Program 程序存儲區的代碼
?CO? code 程序存儲區的常量
?BI? Bit 內部數據存儲區的可位定址的位變數
?BA? Bdata 內部數據存儲區的可位定址的位元組變數
?DT? Data 內部數據存儲區的變數
?ID? Idata 內部數據存儲區可間接定址的變數
?PD? Pdata 外部數據存儲區的頁變數
?XD? Xdata 外部數據存儲區的變數

㈨ keil怎樣把C語言轉換成單片機匯編語言

1、打開Keil,新建一個51工程,同時新建一個main.c文件,並加入到工程源代碼當中。