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