單片機(jī)C語言程序
如果沒有定義 NO_TIMER2 就執(zhí)行下面的程序..如果定義了..就執(zhí)行#else下面的程序、、與if…else的用法差不多.. #endif就是結(jié)束的意思..與#ifndef 是相對的..
單片機(jī)c語言是什么意思
就是開發(fā)單片機(jī)的c語言 c語言從誕生到今,分了很多的種類:例如在Linux下開發(fā)的c語言是標(biāo)準(zhǔn)的c.;在蘋果系統(tǒng)開發(fā)的叫Object–c語言;開發(fā)單片機(jī)的就是單片機(jī)的c語言 例如:sbit tangyue P2^0; 就是給單片機(jī)的P2口的0管腳起了一個(gè)別名叫:tangyue,對tangyue的操作就是對P2口的0管腳操作. 他們只有一些不同,基本的語法什么的,都是相同的,甚至可以跨平臺
什么叫單片機(jī)C語言?
C語言是最基本的,它可以面向不同的硬件對象,單片機(jī)C語言就是其中的一種.
單片機(jī) C語言程序
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.我們常說編程就是編寫軟件在操作系統(tǒng)平臺上運(yùn)行 2.單片機(jī)就是一種類似于控制的芯片 你寫好了程序?qū)懭雴纹瑱C(jī)然后進(jìn)行運(yùn)行 說白了 一個(gè)就是 軟件編程 一個(gè)硬件編程 在C語言中,一般有兩種方法來操作位,一種是使用C語言提供的位運(yùn)算操作符,一種是使用位域。 1、使用位域 在C語言中定義位域的一般格式如下: struct 位域結(jié)構(gòu)名 { 位域列表 };struct:在C語言中定義位域所使用的關(guān)鍵字是struct。 位域結(jié)構(gòu)名:是一個(gè)C語言中的標(biāo)識符,有字母、數(shù)字、下劃線組成,而且第一個(gè)字符必須是字母或者下劃線。 位域列表:組其中位域列表的形式為: 類型說明符 位域名:位域長度 下面的示例代碼,通過位域來計(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ùn)算符有一個(gè)基本的常識,即只能操作整數(shù),不能操作浮點(diǎn)數(shù),因?yàn)楦↑c(diǎn)數(shù)是使用IEEE754編碼的,使用位操作數(shù)沒有任何意義。 C語言提供的位運(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)算符,用來對一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0 << 左移 用來將一個(gè)數(shù)的各二進(jìn)制位全部左移N位,右補(bǔ)0 >> 右移 將一個(gè)數(shù)的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對于無符號數(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í))。 匯編語言是一種用文字助記符來表示機(jī)器指令的符號語言,是最接近機(jī)器碼 的一種語言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高。但是不同的 CPU, 其匯編語言可能有所差異,所以不易移植。 C 語言是一種結(jié)構(gòu)化的高級語言。其優(yōu)點(diǎn)是可讀性好,移植容易,是普遍使 用的一種計(jì)算機(jī)語言。缺點(diǎn)是占用資源較多,執(zhí)行效率沒有匯編高。 對于目前普遍使用的 RISC 架構(gòu)的 8bit MCU 來說,其內(nèi)部 ROM、RAM、 STACK 等資源都有限,如果使用 C 語言編寫,一條 C 語言指令編譯后,會變成 很多條機(jī)器碼,很容易出現(xiàn) ROM 空間不夠、堆棧溢出等問題。而且一些單片機(jī) 廠家也不一定能提供 C 編譯器。而匯編語言,一條指令就對應(yīng)一個(gè)機(jī)器碼,每 一步執(zhí)行什幺動作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起 來也比較方便。所以在單片機(jī)開發(fā)中,我們還是建議采用匯編語言比較好。 51單片機(jī)可以用c來編寫 ,也可以用匯編語言來編寫 .現(xiàn)在好多單片機(jī)都是用c來編寫的,這樣比匯編大大地提高了效率.并且編程員,也感覺比匯編編寫簡單的多. 首先,單片機(jī)在初始發(fā)展的時(shí)候應(yīng)用的都是匯編語言,匯編語言屬于低級語言,但是也有它特色的地方,更加的貼近硬件,你要搞清楚你的數(shù)據(jù)要存哪里,變量再哪個(gè)位置,cpu運(yùn)行時(shí)時(shí)寄存器的變量變化等等,也讓你更清楚單片機(jī)里的一些資源,但是畢竟這樣比較麻煩,但代碼冗余小,執(zhí)行效率高等優(yōu)勢也是匯編有一定的發(fā)展,也在初期單片機(jī)所需要提供小型的控制功能得以發(fā)揮,但是功能越來越復(fù)雜的單片機(jī)的編程匯編顯得越來越麻煩,開發(fā)的效率也大大降低,所以發(fā)展到現(xiàn)在很多地方已經(jīng)以c語言代替了匯編,尤其現(xiàn)在的單片機(jī)資源豐富,不怕代碼復(fù)雜點(diǎn),我們要的就是開發(fā)效率,當(dāng)然這兩種語言還是有它的各自的優(yōu)勢,所以還是都有存在。概括一下,匯編適合簡單但要求執(zhí)行效率高的時(shí)候,c語言適合系統(tǒng)復(fù)雜,又要求開發(fā)比較快速的時(shí)候,然后現(xiàn)在單片機(jī)做的越來越好,c的代碼執(zhí)行也蠻高了,所以c語言比匯編用的越來越多了什么是c語言單片機(jī)編程?
在單片機(jī)C語言中如何對變量的某一位進(jìn)行操作或賦值。
C語言單片機(jī)
C語言和匯編語言在開發(fā)單片機(jī)時(shí)各有哪些優(yōu)缺點(diǎn)?
51單片機(jī)語言和C語言有什么不同?
單片機(jī)C語言與匯編語言各有什么特點(diǎn)?