c語言編寫單片機
Ⅰ 單片機 用c語言編寫
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint time=0;
uchar display_data[8]={0,0,0,0,0,0,0,0};
uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(void)
{
uchar i;
for(i=250;i>0;i--);
}
void calc()
{
time++;
if(time==10000)
time=0;
}
void convert()
{
display_data[0]=time/1000;
display_data[1]=time%1000/100;
display_data[2]=time%1000%100/10;
display_data[3]=time%1000%100%10;
}
void display()
{
P2=0xFE;
P0=display_code[display_data[3]];
delay();
P2=0xFF;
P2=0xFD;
P0=display_code[display_data[2]];
delay();
P2=0xFF;
P2=0xFB;
P0=display_code[display_data[1]];
delay();
P2=0xFF;
P2=0xF7;
P0=display_code[display_data[0]];
delay();
P2=0xFF;
}
void main(void)
{
uint i;
while(1)
{
for(i=0;i<500;i++)
{
display();
}
calc();
convert();
}
}
Ⅱ 求一個用C語言編寫的單片機程序代碼
if(s==0)
{
delayms(20);
if(s==0) {flag=!flag;while(s==0);}
}
if(flag==0)
{ 左移 }
if(flag==1) {右移}
當然,為了程序能及時響應,左移和右移過程中還要加入回按鍵檢測,並用答break退出
Ⅲ C語言編寫單片機程序
只能跟你說思路:
需要些三部分子程序;一個是按鍵掃描,一個是顯示,一個是燈控制。
主程序就一直按鍵掃描,判斷到時哪個按鍵就調用分別得子程序。
學習單片機程序還是靠自己寫,多寫寫就懂了。呵呵。
Ⅳ C語言怎麼寫進單片機
1、把C語言編譯為編程器支持的語言格式,比如常用的bin,或hex等格式。
2、如果是可在線編程的,可以用ISP直接進行燒錄。
3、如果不是可在線編程的,將單片機晶元,放入編程器,然後燒錄。
注意:編譯和燒錄時,都要選擇和單片機晶元一致的型號,否則會出錯。
如果找不到對應的型號,說明不支持該型號的單片機。
Ⅳ C語言與單片機C語言的區別 急求
C語言與單片機C語言的區別:
1、編譯器的區別
C語言的編譯器有GCC(GNU組織開發的開源免費的編譯器)、MinGW(Windows操作系統下的GCC)、Clang(開源的BSD協議的基於LLVM的編譯器)、Visual C++:: cl.exe(Microsoft VC++自帶的編譯器)。
單片機C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。
2、內容的區別
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
單片機C語言基於C語言的單片機編程語言,是以C語言為基礎加以調整的。
3、語言特性的區別
C語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
單片機C語言基於單片機進行的程序開發,在有周圍外設支持的情況下,用軟體來控制的部分通過單片機編程來實現。單片機能識別的語言是硬體語言即匯編,因此編程就是圍繞匯編來實現。
4、語言優點的區別
C語言簡潔緊湊、靈活方便、運算符豐富、數據類型豐富、表達方式靈活實用、允許直接訪問物理地址,對硬體進行操作、生成目標代碼質量高,程序執行效率高、可移植性好、表達力強。
單片機C語言目標代碼短,運行速度高,所需存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言或PL/M51語言目標代碼混合使用。
Ⅵ 用C語言編寫單片機程序
#include <REG52.H>
sbit csb_SAT= P1^0; //定義超聲波發生腳
void delay(void) //延時25微秒,12T晶元用12M誤差 0us
{
unsigned char a;
for(a=11;a>0;a--);
}
void csb_fs(int dat) {while(dat--){csb_SAT=1;delay();csb_SAT=0;delay();}} //發射
void main()
{
EA=1;
while(1)
{
csb_fs(10);
delay();delay();delay();delay();delay();delay();delay();delay();delay();
IE=0x83; //INT0允許中斷
while(IE);
P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();
}
}
void int0_chuankou(void) interrupt 0 using 1 //外部INT0中斷子程序
{
IE=0;//禁止INT0中斷
}
Ⅶ C語言編程單片機
/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 實 驗 名 : 按鍵選擇LED燈左右移動實驗
* 實驗說明 : 按鍵選擇LED燈左右移動
* 連接方式 : 見接線圖
* 注 意 :
*******************************************************************************/
//--包含你要使用的頭文件--//
#include <reg51.h> //此文件中定義了51的一些特殊功能寄存器
#include <intrins.h>
//--定義要使用的IO口--//
sbit K1 = P1^0; //對應按鈕K1
sbit K2 = P1^1; //對應按鈕K2
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit L4=P2^7;
//--定義全局函數--//
void Delay10ms(unsigned int c); //延時10ms
unsigned char Key_Scan1();
unsigned char Key_Scan2();
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main(void)
{
unsigned char keyNum1,keyNum2;
while (1)
{
keyNum1= Key_Scan1(); //掃描鍵盤
keyNum2= Key_Scan2();
if (keyNum1 == 0,keyNum2==0) //如果鍵值返回1
{
L1=1;
}
if (keyNum1 == 0,keyNum2==1) //如果鍵值返回1
{
L2=1;
}
if (keyNum1 == 1,keyNum2==0) //如果鍵值返回1
{
L3=1;
}
if (keyNum1 == 1,keyNum2==1) //如果鍵值返回1
{
L4=1;
}
}
}
/*******************************************************************************
* 函 數 名 : Key_Scan()
* 函數功能 : 掃描鍵盤
* 輸 入 : 無
* 輸 出 : 讀取到的鍵值
*******************************************************************************/
unsigned char Key_Scan1()
{
unsigned char key1= 0, i; //保存鍵值
//--檢測按鍵1--//
if (K1==0) //檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (K1==0) //再次檢測按鍵是否按下
{
key1 = 1;
i = 0;
while ((i<50) && (K1==0)) //檢測按鍵是否松開
{
Delay10ms(1);
i++;
}
}
}
return key1;
}
unsigned char Key_Scan2()
{ //--檢測按鍵2--//
unsigned char key2= 0,O;
if (K2==0) //檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (K2==0) //再次檢測按鍵是否按下
{
key2 =1;
O = 0;
while ((0<50) && (K2==0)) //檢測按鍵是否松開
{
Delay10ms(1);
O++;
}
}
}
return key2; //將讀取到鍵值的值返回
}
/*******************************************************************************
* 函 數 名 : Delay10ms
* 函數功能 : 延時函數,延時10ms
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Delay10ms(unsigned int c) //誤差 0us
{
unsigned char a, b;
//--c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
你看下行不行 我沒板子沒實驗
Ⅷ 用c語言寫51單片機
^
#include<reg51.h>
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled1=P1^4;
sbitled2=P1^5;
main()
{
if(key1==0)
{
while(key1==0);
led1=0;
led2=1;
}
if(key2==0)
{
while(key2==0);
led1=1;
led2=0;
}
if(key3==0)
{
while(key3==0);
led1=0;
led2=0;
}
if(key4==0)
{
while(key4==0);
led1=1;
led2=1;
}
}