單片機c語言編程格式,單片機c語言函數大全

本文目錄一覽:

單片機C語言聲明一個變數的一般格式是什麼?

格式是

[存儲種類] 數據類型 [存儲器類型] 變數名

存儲種類:規定變數的作用域,一般不寫,使用默認的自動變數(auto)

數據類型:規定變數佔用多少存儲單元

存儲器類型:規定變數存放在哪個存儲空間,一般不寫,使用默認的數據存儲器,code是程序存儲器

變數名:變數的名字

單片機的C語言編程

#include AT89X51.h //包含頭文件

unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定義數碼管位選碼

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//定義數碼管段選碼

unsigned char dispbuf[8]={0,0,0,0,0,0,10,10}; //顯示碼數組,因為只用了六個數碼管,所以將最後兩位賦值為10對應與段碼0x00,表示不亮

unsigned char temp[8]; //暫存數組

unsigned char dispcount; //掃描位的記錄

unsigned char T0count; //計數次數

unsigned char timecount; //定時器5ms中斷的次數

bit flag; //定義標誌位

unsigned long x; //定義變數用來存放頻率值

void main(void)

{

unsigned char i;

TMOD=0x15; //定義定時器0為計數方式,定時器1為記時方式,均工作在方式1

TH0=0; //定時器0初值高8位為0

TL0=0; //定時器0初值低8位為0

TH1=(65536-5000)/256; //定時器1初值高8位

TL1=(65536-5000)%256; //定時器1初值低8位,即定時5ms

TR1=1;//啟動定時器1

TR0=1;//啟動定時器0

ET0=1;//開定時器0中斷

ET1=1;//開定時器1中斷

EA=1; //開總中斷

while(1)

{

if(flag==1) //如果定時時間到了1s

{

flag=0; //標誌位清零

x=T0count*65536+TH0*256+TL0; //獲得整型的頻率值,T0count計數器在1s內溢出的次數,每溢出一次就計數了T0count*65536次,再加上當前計數寄存器的值即為實際計數總數

for(i=0;i8;i++)

{

temp[i]=0; //暫存緩衝區清零

}

i=0;

while(x/10) //將頻率值的每一位分離出來,存進temp數組,例如63239分離為6、3、2、3、9

{

temp[i]=x%10;

x=x/10;

i++;

}

temp[i]=x;

for(i=0;i6;i++)

{

dispbuf[i]=temp[i]; //將暫存數組的數據賦給顯示數組

}

timecount=0; //記時清零

T0count=0; //計數清零

TH0=0; //定時器0初值清零

TL0=0; //定時器0初值清零

TR0=1; //重新啟動定時器0,其實是作為計數器來用

}

}

}

void t0(void) interrupt 1 using 0 //每個計數中斷一次

{

T0count++; //計數加一

}

void t1(void) interrupt 3 using 0 //5ms產生一次中斷

{

TH1=(65536-5000)/256; //

TL1=(65536-5000)%256; //重裝初值

timecount++;

if(timecount==200) //當timecount=200時,即為1s

{

TR0=0; //關閉定時器0,為了讀出定時器0計數個數

timecount=0; //timecount清零,重新計時

flag=1; //置標誌位通知主程序1s已到

}

/**********以下為數碼管掃描部分**********/

//因為放在該中斷程序中,故每5ms掃描一位數碼管

P2=0xff; //先關閉所有數碼管

P0=dispcode[dispbuf[dispcount]]; //先確定相應數碼管的段碼,送入段碼

P2=dispbit[dispcount]; //送入位碼

dispcount++; //下一次應該掃描下一位數碼管所以要加一

if(dispcount==8) //因為共有8個數碼管

{

dispcount=0; //掃描完第7個,回頭掃描第0個

}

}

單片機c語言編程

問題在變數申明,修改為:

#include “reg52.h”

typedef unsigned char u8;

typedef unsigned int u16;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

sfr GPIO_KEY=0x90;

sfr GPIO_DIG=0x80;

u16 KeyValue;

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(u16 i)

{

while(i–);

}

void KeyDown()

{

u8 a=0;

GPIO_KEY=0x0f;

if(GPIO_KEY!=0x0f)

{

delay(1000);

if(GPIO_KEY!=0x0f)

{

GPIO_KEY=0x0f;

switch(GPIO_KEY)

{

case(0x07):KeyValue=0;break;

case(0x0b):KeyValue=1;break;

case(0x0d):KeyValue=2;break;

case(0x0e):KeyValue=3;break;

}

GPIO_KEY=0xf0;

switch(GPIO_KEY)

{

case(0x70):KeyValue=KeyValue;break;

case(0xb0):KeyValue=KeyValue+4;break;

case(0xd0):KeyValue=KeyValue+8;break;

case(0xe0):KeyValue=KeyValue+12;break;

}

while((a50)(GPIO_KEY!=0xf0))

{

delay(1000);

a++;

}

}

}

}

void main()

LSA=0;

LSB=0;

LSC=0;

while(1)

{

KeyDown();

GPIO_DIG=smgduan[KeyValue]; 

}

}

單片機C語言編程,要使用C語言自帶的庫函數,使用哪個宏包含命令?

使用#include調用庫函數。

C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。

C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應儘可能地使用最小的數據類型,以最大限度地發揮8051單片機的性能,同時可減少應用程序的代碼長度。

單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標準,生成的代碼遵循Intel目標文件格式,而且可與A51彙編語言PL/M51語言目標代碼混合使用。51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,並具有良好的程序結構,適用於各種應用的程序設計,是使用較廣的單片機編程語言。

C語言編程問題 單片機編程 在C上是 #define (宏名)( 字元串) 這種格式

這個只是定義這個宏是存在的,很大情況是用於條件編譯用的,

比如後面有如下代碼

#ifdef

FUNC_USB_EN

//代碼*****

#endif

這樣如果有#define

FUNC_USB_EN

這個定義,則編譯器編譯這段代碼,否則就編譯,這樣控制某些功能的開與關

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/276582.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-19 13:20
下一篇 2024-12-19 13:20

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論