單片機(jī)C語(yǔ)言程序
 
如果沒(méi)有定義 NO_TIMER2 就執(zhí)行下面的程序..如果定義了..就執(zhí)行#else下面的程序、、與if…else的用法差不多.. #endif就是結(jié)束的意思..與#ifndef 是相對(duì)的..
單片機(jī)c語(yǔ)言是什么意思
 
就是開(kāi)發(fā)單片機(jī)的c語(yǔ)言 c語(yǔ)言從誕生到今,分了很多的種類(lèi):例如在Linux下開(kāi)發(fā)的c語(yǔ)言是標(biāo)準(zhǔn)的c.;在蘋(píng)果系統(tǒng)開(kāi)發(fā)的叫Object–c語(yǔ)言;開(kāi)發(fā)單片機(jī)的就是單片機(jī)的c語(yǔ)言 例如:sbit tangyue P2^0; 就是給單片機(jī)的P2口的0管腳起了一個(gè)別名叫:tangyue,對(duì)tangyue的操作就是對(duì)P2口的0管腳操作. 他們只有一些不同,基本的語(yǔ)法什么的,都是相同的,甚至可以跨平臺(tái)
什么叫單片機(jī)C語(yǔ)言?
 
C語(yǔ)言是最基本的,它可以面向不同的硬件對(duì)象,單片機(jī)C語(yǔ)言就是其中的一種.
單片機(jī) C語(yǔ)言程序
P1=1< 這句錯(cuò)了,<<這個(gè)是左移,而不是循環(huán)左移 改為這樣就可以了 #include  #include typedef unsigned int  uint16; typedef unsigned char  uint8; #define uchar unsigned char uchar temp; void main() {  temp=0xfe; while(1) { uint16 i; uint8 j; //—————————-  P0=temp;  temp=_crol_(temp,1); //P0=0xfe< //———————— for(i=0;i<50000;i++); if(8==j) { j=0; } } } 1.我們常說(shuō)編程就是編寫(xiě)軟件在操作系統(tǒng)平臺(tái)上運(yùn)行 2.單片機(jī)就是一種類(lèi)似于控制的芯片 你寫(xiě)好了程序?qū)懭雴纹瑱C(jī)然后進(jìn)行運(yùn)行 說(shuō)白了 一個(gè)就是 軟件編程 一個(gè)硬件編程 在C語(yǔ)言中,一般有兩種方法來(lái)操作位,一種是使用C語(yǔ)言提供的位運(yùn)算操作符,一種是使用位域。 1、使用位域 在C語(yǔ)言中定義位域的一般格式如下: struct 位域結(jié)構(gòu)名  { 位域列表 };struct:在C語(yǔ)言中定義位域所使用的關(guān)鍵字是struct。 位域結(jié)構(gòu)名:是一個(gè)C語(yǔ)言中的標(biāo)識(shí)符,有字母、數(shù)字、下劃線組成,而且第一個(gè)字符必須是字母或者下劃線。 位域列表:組其中位域列表的形式為: 類(lèi)型說(shuō)明符 位域名:位域長(zhǎng)度  下面的示例代碼,通過(guò)位域來(lái)計(jì)算IEEE754浮點(diǎn)數(shù)編碼中單精度數(shù)的最大值 、最小值和最小弱規(guī)范數(shù)。 #include  typedef struct FP_SINGLE {   unsigned __int32 fraction : 23;   unsigned __int32 exp      : 8;   unsigned __int32 sign     : 1; } fp_single; int main() { float x; fp_single * fp_s = (fp_single *)&x; fp_s->sign = 0; fp_s->exp = 0xfe; fp_s->fraction = 0x7fffff; printf (“float 最大數(shù):      %le\n”,(double)x); fp_s->sign = 0; fp_s->exp = 0x1; fp_s->fraction = 0x0; printf (“float 最小數(shù):      %le\n”,(double)x); fp_s->sign = 0; fp_s->exp = 0; fp_s->fraction = 0x1;     printf (“float 最小弱規(guī)范數(shù):%le\n\n”,(double)x); return 0; }2、使用位運(yùn)算符  C語(yǔ)言中的位運(yùn)算符有一個(gè)基本的常識(shí),即只能操作整數(shù),不能操作浮點(diǎn)數(shù),因?yàn)楦↑c(diǎn)數(shù)是使用IEEE754編碼的,使用位操作數(shù)沒(méi)有任何意義。 C語(yǔ)言提供的位運(yùn)算符列表: & 按位與 如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0 | 按位或 兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1 ^ 按位異或 若參加運(yùn)算的兩個(gè)二進(jìn)制位值相同則為0,否則為1 ~ 取反 ~是一元運(yùn)算符,用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0 << 左移 用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部左移N位,右補(bǔ)0 >> 右移 將一個(gè)數(shù)的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對(duì)于無(wú)符號(hào)數(shù),高位補(bǔ)0 #include”reg52.h” unsigned code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int tcnt; unsigned int sec; unsigned int min; unsigned int hour; unsigned int spe; sbit speak=P2^0; void delay(int t) {int i;while(t–) {for(i=0;i<125;i++);} } void speaker() {spe=0;   speak=1; delay(10); speak=0; } void display (unsigned char m1,unsigned char m2,unsigned char m3,unsigned char m4,unsigned char m5,unsigned char m6) {P0=0xdf;P1=m6;delay(1);//控制6個(gè)數(shù)碼管 P0=0xef;P1=m5;delay(1); P0=0xf7;P1=m4;delay(1); P0=0xfb;P1=m3;delay(1); P0=0xfd;P1=m2;delay(1); P0=0xfe;P1=m1;delay(1); if(spe==60)   speaker(); } void main() { TMOD=0x02; TH0=0x06; TR0=1; ET0=1; EA=1; P2=0x00; while(1)  {display(tab[hour/10],tab[hour%10],tab[min/10],tab[min%10],tab[sec/10],tab[sec%10]);  } } void t0(void)interrupt 1 using 0//處理中斷函數(shù) {tcnt++;   if(tcnt==4000)//4000   {     tcnt=0;     sec++;     if(sec==60)     {     spe=sec;     sec=0;min++;     if(min==60)     {      min=0;hour++;     if(hour==24)     {     hour=0;     }     }     }    } } 這個(gè)是89c51系列單片機(jī)。你可以修改成你需要的功能。(該程序設(shè)置成了每分鐘就報(bào)時(shí))。 匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器碼 的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高。但是不同的 CPU, 其匯編語(yǔ)言可能有所差異,所以不易移植。 C 語(yǔ)言是一種結(jié)構(gòu)化的高級(jí)語(yǔ)言。其優(yōu)點(diǎn)是可讀性好,移植容易,是普遍使 用的一種計(jì)算機(jī)語(yǔ)言。缺點(diǎn)是占用資源較多,執(zhí)行效率沒(méi)有匯編高。 對(duì)于目前普遍使用的 RISC 架構(gòu)的 8bit MCU 來(lái)說(shuō),其內(nèi)部 ROM、RAM、 STACK 等資源都有限,如果使用 C 語(yǔ)言編寫(xiě),一條 C 語(yǔ)言指令編譯后,會(huì)變成 很多條機(jī)器碼,很容易出現(xiàn) ROM 空間不夠、堆棧溢出等問(wèn)題。而且一些單片機(jī) 廠家也不一定能提供 C 編譯器。而匯編語(yǔ)言,一條指令就對(duì)應(yīng)一個(gè)機(jī)器碼,每 一步執(zhí)行什幺動(dòng)作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起 來(lái)也比較方便。所以在單片機(jī)開(kāi)發(fā)中,我們還是建議采用匯編語(yǔ)言比較好。 51單片機(jī)可以用c來(lái)編寫(xiě) ,也可以用匯編語(yǔ)言來(lái)編寫(xiě) .現(xiàn)在好多單片機(jī)都是用c來(lái)編寫(xiě)的,這樣比匯編大大地提高了效率.并且編程員,也感覺(jué)比匯編編寫(xiě)簡(jiǎn)單的多. 首先,單片機(jī)在初始發(fā)展的時(shí)候應(yīng)用的都是匯編語(yǔ)言,匯編語(yǔ)言屬于低級(jí)語(yǔ)言,但是也有它特色的地方,更加的貼近硬件,你要搞清楚你的數(shù)據(jù)要存哪里,變量再哪個(gè)位置,cpu運(yùn)行時(shí)時(shí)寄存器的變量變化等等,也讓你更清楚單片機(jī)里的一些資源,但是畢竟這樣比較麻煩,但代碼冗余小,執(zhí)行效率高等優(yōu)勢(shì)也是匯編有一定的發(fā)展,也在初期單片機(jī)所需要提供小型的控制功能得以發(fā)揮,但是功能越來(lái)越復(fù)雜的單片機(jī)的編程匯編顯得越來(lái)越麻煩,開(kāi)發(fā)的效率也大大降低,所以發(fā)展到現(xiàn)在很多地方已經(jīng)以c語(yǔ)言代替了匯編,尤其現(xiàn)在的單片機(jī)資源豐富,不怕代碼復(fù)雜點(diǎn),我們要的就是開(kāi)發(fā)效率,當(dāng)然這兩種語(yǔ)言還是有它的各自的優(yōu)勢(shì),所以還是都有存在。概括一下,匯編適合簡(jiǎn)單但要求執(zhí)行效率高的時(shí)候,c語(yǔ)言適合系統(tǒng)復(fù)雜,又要求開(kāi)發(fā)比較快速的時(shí)候,然后現(xiàn)在單片機(jī)做的越來(lái)越好,c的代碼執(zhí)行也蠻高了,所以c語(yǔ)言比匯編用的越來(lái)越多了什么是c語(yǔ)言單片機(jī)編程?
在單片機(jī)C語(yǔ)言中如何對(duì)變量的某一位進(jìn)行操作或賦值。
C語(yǔ)言單片機(jī)
C語(yǔ)言和匯編語(yǔ)言在開(kāi)發(fā)單片機(jī)時(shí)各有哪些優(yōu)缺點(diǎn)?
51單片機(jī)語(yǔ)言和C語(yǔ)言有什么不同?
單片機(jī)C語(yǔ)言與匯編語(yǔ)言各有什么特點(diǎn)?