精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

電子發(fā)燒友網(wǎng)>控制/MCU>單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(二) - 全文

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(二) - 全文

? ???? 電子發(fā)燒友網(wǎng)訊:繼《單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略》得到廣大讀者好評(píng),根據(jù)有網(wǎng)友提出美中不足的是所用單片機(jī)編程語(yǔ)言為匯編,基于此,電子發(fā)燒友網(wǎng)再接再厲再次為讀者誠(chéng)摯奉上非常詳盡的《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略》系列單片機(jī)C語(yǔ)言學(xué)習(xí)教程,本教程共分為四部分,主要知識(shí)點(diǎn)如下所示。

參閱相關(guān)系列文章,

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(一)


第二部分知識(shí)點(diǎn):

  第五課 C51變量

  第六課 C51運(yùn)算符和表達(dá)式

  第七課 運(yùn)算符和表達(dá)式(關(guān)系運(yùn)算符)

  第八課 運(yùn)算符和表達(dá)式(位運(yùn)算符)

  第九課 C51運(yùn)算符和表達(dá)式(指針和地址運(yùn)算符)

  第五課、C51變量

  上課所提到變量就是一種在程序執(zhí)行過程中其值能不斷變化的量。要在程序中使用變量必須先用標(biāo)識(shí)符作為變量名,并指出所用的數(shù)據(jù)類型和存儲(chǔ)模式,這樣編譯系統(tǒng)才能為變量分配相應(yīng)的存儲(chǔ)空間。定義一個(gè)變量的格式如下:

  [存儲(chǔ)種類] 數(shù)據(jù)類型 [存儲(chǔ)器類型] 變量名表

  在定義格式中除了數(shù)據(jù)類型和變量名表是必要的,其它都是可選項(xiàng)。存儲(chǔ)種類有四種:自動(dòng)(auto),外部(extern),靜態(tài)(static)和寄存器(register),缺省類型為自動(dòng)(auto)。這些存儲(chǔ)種類的具體含義和使用方法,將在第七課《變量的存儲(chǔ)》中進(jìn)一步進(jìn)行學(xué)習(xí)。

  而這里的數(shù)據(jù)類型則是和我們?cè)诘谒恼n中學(xué)習(xí)到的名種數(shù)據(jù)類型的定義是一樣的。說明了一個(gè)變量的數(shù)據(jù)類型后,還可選擇說明該變量的存儲(chǔ)器類型。存儲(chǔ)器類型的說明就是指定該變量在單片機(jī)c語(yǔ)言硬件系統(tǒng)中所使用的存儲(chǔ)區(qū)域,并在編譯時(shí)準(zhǔn)確的定位。表6-1中是KEIL uVision2所能認(rèn)別的存儲(chǔ)器類型。注意的是在AT89c51芯片RAM只有低128位,位于80H到FFH的高128位則在52芯片中才有用,并和特殊寄存器地址重疊。特殊寄存器(SFR)的地址表請(qǐng)看附錄二 AT89c51特殊功能寄存器列表

?

?

  如果省略存儲(chǔ)器類型,系統(tǒng)則會(huì)按編譯模式SMALL,COMPACT或LARGE所規(guī)定的默認(rèn)存儲(chǔ)器類型去指定變量的存儲(chǔ)區(qū)域。無(wú)論什么存儲(chǔ)模式都能聲明變量在任何的8051存儲(chǔ)區(qū)范圍,然而把最常用的命令如循環(huán)計(jì)數(shù)器和隊(duì)列索引放在內(nèi)部數(shù)據(jù)區(qū)能顯著的提高系統(tǒng)性能。還有要指出的就是變量的存儲(chǔ)種類與存儲(chǔ)器類型是完全無(wú)關(guān)的。

  數(shù)據(jù)存儲(chǔ)模式

  存儲(chǔ)模式?jīng)Q定了沒有明確指定存儲(chǔ)類型的變量,函數(shù)參數(shù)等的缺省存儲(chǔ)區(qū)域,共三種:

  1. 1. Small模式

  所有缺省變量參數(shù)均裝入內(nèi)部RAM,優(yōu)點(diǎn)是訪問速度快,缺點(diǎn)是空間有限,只適用于小程序。

  2. 2. Compact模式

  所有缺省變量均位于外部RAM區(qū)的一頁(yè)(256Bytes),具體哪一頁(yè)可由P2口指定,在STARTUP.A51文件中說明,也可用pdata指定,優(yōu)點(diǎn)是空間較Small為寬裕速度較Small慢,較large要快,是一種中間狀態(tài)。

  3. 3. large模式

  所有缺省變量可放在多達(dá)64KB的外部RAM區(qū),優(yōu)點(diǎn)是空間大,可存變量多,缺點(diǎn)是速度較慢。

  提示:存儲(chǔ)模式在單片機(jī)c語(yǔ)言編譯器選項(xiàng)中選擇。

  之前提到簡(jiǎn)單提到sfr,sfr16,sbit定義變量的方法,下面我們?cè)賮?lái)仔細(xì)看看。

  sfr和sfr16能直接對(duì)51單片機(jī)的特殊寄存器進(jìn)行定義,定義方法如下:

  sfr 特殊功能寄存器名= 特殊功能寄存器地址常數(shù);

  sfr16 特殊功能寄存器名= 特殊功能寄存器地址常數(shù);

  我們能這樣定義AT89c51的P1口

  sfr P1 = 0x90; //定義P1 I/O口,其地址90H

  sfr關(guān)鍵定后面是一個(gè)要定義的名字,可任意選取,但要符合標(biāo)識(shí)符的命名規(guī)則,名字最好有一定的含義如P1口能用P1為名,這樣程序會(huì)變的好讀好多。等號(hào)后面必須是常數(shù),不允許有帶運(yùn)算符的表達(dá)式,而且該常數(shù)必須在特殊功能寄存器的地址范圍之內(nèi)(80H-FFH),具體可查看附錄中的相關(guān)表。sfr是定義8位的特殊功能寄存器而sfr16則是用來(lái)定義16位特殊功能寄存器,如8052的T2定時(shí)器,能定義為:

  sfr16 T2 = 0xCC; //這里定義8052定時(shí)器2,地址為T2L=CCH,T2H=CDH

  用sfr16定義16位特殊功能寄存器時(shí),等號(hào)后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定時(shí)器0和1的定義。

  sbit可定義可位尋址對(duì)象。如訪問特殊功能寄存器中的某位。其實(shí)這樣應(yīng)用是經(jīng)常要用的如要訪問P1口中的第2個(gè)引腳P1.1。我們能照以下的方法去定義:

  (1)sbit 位變量名=位地址

  sbit P1_1 = Ox91;

  這樣是把位的絕對(duì)地址賦給位變量。同sfr一樣sbit的位地址必須位于80H-FFH之間。

  (2)Sbit 位變量名=特殊功能寄存器名^位位置

  sft P1 = 0x90;

  sbit P1_1 = P1 ^ 1; //先定義一個(gè)特殊功能寄存器名再指定位變量名所在的位置

  當(dāng)可尋址位位于特殊功能寄存器中時(shí)可采用這種方法

  (3)sbit 位變量名=字節(jié)地址^位位置

  sbit P1_1 = 0x90 ^ 1;

  這種方法其實(shí)和2是一樣的,只是把特殊功能寄存器的位址直接用常數(shù)表示。

  在單片機(jī)c語(yǔ)言存儲(chǔ)器類型中供給有一個(gè)bdata的存儲(chǔ)器類型,這個(gè)是指可位尋址的數(shù)據(jù)存儲(chǔ)器,位于單片機(jī)的可位尋址區(qū)中,能將要求可位錄址的數(shù)據(jù)定義為bdata,如:

  unsigned char bdata ib; //在可位錄址區(qū)定義ucsigned char類型的變量ib

  int bdata ab[2]; //在可位尋址區(qū)定義數(shù)組ab[2],這些也稱為可尋址位對(duì)象

  sbit ib7=ib^7 //用關(guān)鍵字sbit定義位變量來(lái)獨(dú)立訪問可尋址位對(duì)象的其中一位

  sbit ab12=ab[1]^12;

  操作符“^”后面的位位置的最大值取決于指定的基址類型,char0-7,int0-15,long0-31。

  下面我們用上一課的電路來(lái)實(shí)踐一下這一課的知識(shí)。同樣是做一下簡(jiǎn)單的跑馬燈實(shí)驗(yàn),項(xiàng)目名為RunLED2。程序如下:

  sfr P1 = 0x90; //這里沒有使用預(yù)定義文件,

  sbit P1_0 = P1 ^ 0; //而是自己定義特殊寄存器

  sbit P1_7 = 0x90 ^ 7; //之前我們使用的預(yù)定義文件其實(shí)就是這個(gè)作用

  sbit P1_1 = 0x91; //這里分別定義P1端口和P10,P11,P17引腳

  void main(void)

  {

  unsigned int a;

  unsigned char b;

  do{

  for (a=0;a《50000;a++)

  P1_0 = 0; //點(diǎn)亮P1_0

  for (a=0;a《50000;a++)

  P1_7 = 0; //點(diǎn)亮P1_7

  for (b=0;b《255;b++)

  {

  for (a=0;a《10000;a++)

  P1 = b; //用b的值來(lái)做跑馬燈的花樣

  }

  P1 = 255; //熄滅P1上的LED

  for (b=0;b《255;b++)

  {

  for (a=0;a《10000;a++) //P1_1閃爍

  P1_1 = 0;

  for (a=0;a《10000;a++)

  P1_1 = 1;

  }

  }while(1);

  }

  。 Keil c51指針變量

  單片機(jī)c語(yǔ)言支持一般指針(Generic Pointer)和存儲(chǔ)器指針(Memory_Specific Pointer)。

  1. 1. 一般指針

  一般指針的聲明和使用均與標(biāo)準(zhǔn)C相同,不過同時(shí)還能說明指針的存儲(chǔ)類型,例如:

  long * state;為一個(gè)指向long型整數(shù)的指針,而state本身則依存儲(chǔ)模式存放。

  char * xdata ptr;ptr為一個(gè)指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū),以上的long,char等指針指向的數(shù)據(jù)可存放于任何存儲(chǔ)器中。

  一般指針本身用3個(gè)字節(jié)存放,分別為存儲(chǔ)器類型,高位偏移,低位偏移量。

  2. 2. 存儲(chǔ)器指針

  基于存儲(chǔ)器的指針說明時(shí)即指定了存貯類型,例如:

  char data * str;str指向data區(qū)中char型數(shù)據(jù)

  int xdata * pow; pow指向外部RAM的int型整數(shù)。

  這種指針存放時(shí),只需一個(gè)字節(jié)或2個(gè)字節(jié)就夠了,因?yàn)橹恍璐娣牌屏俊?/p>

  3. 3. 指針轉(zhuǎn)換

  即指針在上兩種類型之間轉(zhuǎn)化:

  l 當(dāng)基于存儲(chǔ)器的指針作為一個(gè)實(shí)參傳遞給需要一般指針的函數(shù)時(shí),指針自動(dòng)轉(zhuǎn)化。

  l 如果不說明外部函數(shù)原形,基于存儲(chǔ)器的指針自動(dòng)轉(zhuǎn)化為一般指針,導(dǎo)致錯(cuò)誤,因而請(qǐng)用“#include”說明所有函數(shù)原形。

  l 能強(qiáng)行改變指針類型。

  變量的存儲(chǔ)類別

  一、static(靜態(tài)局部)變量。

  1、靜態(tài)局部變量在程序整個(gè)運(yùn)行期間都不會(huì)釋放內(nèi)存。

  2、對(duì)于靜態(tài)局部變量,是在編譯的時(shí)候賦初值的,即只賦值一次。如果在程序運(yùn)行時(shí)已經(jīng)有初值,則以后每次調(diào)用的時(shí)候不再重新賦值。

  3、如果定義局部變量的時(shí)候不賦值,則編譯的時(shí)候自動(dòng)賦值為0。而對(duì)于自動(dòng)變量而言,定義的時(shí)候不賦值,則是一個(gè)不確定的值。

  4、雖然靜態(tài)變量在函數(shù)調(diào)用結(jié)束后仍然存在,但是其他函數(shù)不能引用。

  二、用extern聲明外部變量。

  用extern聲明外部變量,是為了擴(kuò)展外部變量的作用范圍。比如一個(gè)程序能由多個(gè)源程序文件組成。如果一個(gè)程序中需要引用另外一個(gè)文件中已經(jīng)定義的外部變量,就需要使用extern來(lái)聲明。

  正確的做法是在一個(gè)文件中定義外部變量,而在另外一個(gè)文件中使用extern對(duì)該變量作外部變量聲明。

  一個(gè)文件中: int abc;

  另外一個(gè)文件中: extern abc;

  例子:

  用extern將外部變量的作用域擴(kuò)展到其他文件:

  文件1:

  //用extern將外部變量的作用域擴(kuò)展到其他文件中

  #include

  #include

  #include

  unsigned int array[10];

  void fillarray();

  void init_ser()

  {

  SCON=0X50;

  TMOD|=0X20;

  TH1=0XF3;

  TR1=1;

  TI=1;

  }

  void main()

  {

  unsigned int i;

  init_ser();

  fillarray();

  for(i=0;i《10;i++)

  {

  printf(“array[%d]=%d ”,i,array[i]);

  }

  for(;;){;}

  }

  文件2:

  extern int array[10];

  void fillarray()

  {

  unsigned char i;

  for(i=0;i《10;i++)

  {

  array[i]=i;

  }

  }

  在單片機(jī)c語(yǔ)言中變量的空間分配幾個(gè)方法

  1、 data區(qū)空間小,所以只有頻繁用到或?qū)\(yùn)算速度要求很高的變量才放到data區(qū)內(nèi),比如for循環(huán)中的計(jì)數(shù)值。

  2、 data區(qū)內(nèi)最好放局部變量。

  因?yàn)榫植孔兞康目臻g是能覆蓋的某個(gè)函數(shù)的局部變量空間在退出該函數(shù)是就釋放,由別的函數(shù)的局部變量覆蓋),能提高內(nèi)存利用率。當(dāng)然靜態(tài)局部變量除外,其內(nèi)存使用方式與全局變量相同;

  3、 確保你的程序中沒有未調(diào)用的函數(shù)。

  在Keil C里遇到未調(diào)用函數(shù),編譯器就將其認(rèn)為可能是中斷函數(shù)。函數(shù)里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。這一點(diǎn)Keil C做得很愚蠢,但也沒辦法。

  4、 程序中遇到的邏輯標(biāo)志變量能定義到bdata中,能大大降低內(nèi)存占用空間。

  在51系列芯片中有16個(gè)字節(jié)位尋址區(qū)bdata,其中能定義8*16=128個(gè)邏輯變量。定義方法是: bdata bit LedState;但位類型不能用在數(shù)組和結(jié)構(gòu)體中。

  5、 其他不頻繁用到和對(duì)運(yùn)算速度要求不高的變量都放到xdata區(qū)。

  6、 如果想節(jié)省data空間就必須用large模式,將未定義內(nèi)存位置的變量全放到xdata區(qū)。當(dāng)然最好對(duì)所有變量都要指定內(nèi)存類型。

  7、 當(dāng)使用到指針時(shí),要指定指針指向的內(nèi)存類型。

  在單片機(jī)c51語(yǔ)言中未定義指向內(nèi)存類型的通用指針占用3個(gè)字節(jié);而指定指向data區(qū)的指針只占1個(gè)字節(jié);指定指向xdata區(qū)的指針占2個(gè)字節(jié)。如指針p是指向data區(qū),則應(yīng)定義為: char data *p;。還可指定指針本身的存放內(nèi)存類型,如:char data * xdata p;。其含義是指針p指向data區(qū)變量,而其本身存放在xdata區(qū)。

  第六課、C51運(yùn)算符和表達(dá)式
?

  上兩課說了常量和變量,先來(lái)補(bǔ)充一個(gè)用以重新定義數(shù)據(jù)類型的的語(yǔ)句吧。這個(gè)語(yǔ)句就是 typedef,這是個(gè)很好用的語(yǔ)句,但我卻不常用它,通常我定義變量的數(shù)據(jù)類型時(shí)都是使 用標(biāo)準(zhǔn)的關(guān)鍵字,這樣別人能很方便的研讀你的程序。如果你是個(gè)DELPHI 編程愛好者或是DELPHI程序員,你對(duì)變量的定義也許習(xí)慣了DELPHI 的關(guān)鍵字,如 int 類型常會(huì)用關(guān)鍵字Integer來(lái)定義,在用 單片機(jī)c語(yǔ)言時(shí)你還想用回這個(gè)的話,你能這樣寫:

  typedef int integer;

  integer a,b;

  這兩句在編譯時(shí),其實(shí)是先把 integer 定義為 int,在以后的語(yǔ)句中遇到 integer 就用 int 置換,integer 就等于 int,所以 a,b 也就被定義為 int。typedef 不能直接用來(lái)定義變量,它 只是對(duì)已有的數(shù)據(jù)類型作一個(gè)名字上的置換,并不是產(chǎn)生一個(gè)新的數(shù)據(jù)類型。下面兩句就是一個(gè)錯(cuò)誤的例子:

  typedef int integer;

  integer = 100;

  使用 typedef 能有方便程序的移植和簡(jiǎn)化較長(zhǎng)的數(shù)據(jù)類型定義。用 typedef 還能定義結(jié) 構(gòu)類型,這一點(diǎn)在后面詳細(xì)解說結(jié)構(gòu)類型時(shí)再一并說明。typedef 的語(yǔ)法是

  typedef 已有的數(shù)據(jù)類型 新的數(shù)據(jù)類型名 運(yùn)算符就是完成某種特定運(yùn)算的符號(hào)。運(yùn)算符按其表達(dá)式中與運(yùn)算符的關(guān)系可分為單目

  運(yùn)算符,雙目運(yùn)算符和三目運(yùn)算符。單目就是指需要有一個(gè)運(yùn)算對(duì)象,雙目就要求有兩個(gè)運(yùn) 算對(duì)象,三目則要三個(gè)運(yùn)算對(duì)象。表達(dá)式則是由運(yùn)算及運(yùn)算對(duì)象所組成的具有特定含義的式 子。C 是一種表達(dá)式語(yǔ)言,表達(dá)式后面加“;”號(hào)就構(gòu)成了一個(gè)表達(dá)式語(yǔ)句。

  賦值運(yùn)算符

  對(duì)于“=”這個(gè)符號(hào)大家不會(huì)陌生的,在 C 中它的功能是給變量賦值,稱之為賦值運(yùn)算 符。它的作用不用多說大家也明白,就是但數(shù)據(jù)賦給變量。如,x=10;由此可見利用賦值運(yùn) 算符將一個(gè)變量與一個(gè)表達(dá)式連接起來(lái)的式子為賦值表達(dá)式,在表達(dá)式后面加“;”便構(gòu)成 了賦值語(yǔ)句。使用“=”的賦值語(yǔ)句格式如下:

  變量 = 表達(dá)式; 示例如下

  a = 0xFF; //將常數(shù)十六進(jìn)制數(shù) FF 賦于變量 a

  b = c = 33; //同時(shí)賦值給變量 b,c d = e; //將變量 e 的值賦于變量 d

  f = a+b; //將變量 a+b 的值賦于變量 f 由上面的例子能知道賦值語(yǔ)句的意義就是先計(jì)算出“=”右邊的表達(dá)式的值,然后將得到 的值賦給左邊的變量。而且右邊的表達(dá)式能是一個(gè)賦值表達(dá)式。

  在一些朋友的來(lái)信中會(huì)出現(xiàn)“==”與“=”這兩個(gè)符號(hào)混淆的錯(cuò)誤原碼,問為何編譯報(bào) 錯(cuò),一般就是錯(cuò)在 if (a=x)之類的語(yǔ)句中,錯(cuò)將“=”用為“==”。“==”符號(hào)是用來(lái)進(jìn)行相 等關(guān)系運(yùn)算。

  算術(shù),增減量運(yùn)算符

  對(duì)于 a+b,a/b 這樣的表達(dá)式大家都很熟悉,用在 C 語(yǔ)言中,+,/,就是算術(shù)運(yùn)算符。單片機(jī)c語(yǔ)言 中的算術(shù)運(yùn)算符有如下幾個(gè),其中只有取正值和取負(fù)值運(yùn)算符是單目運(yùn)算符,其它則都是雙 目運(yùn)算符:

  + 加或取正值運(yùn)算符

  - 減或取負(fù)值運(yùn)算符

  * 乘運(yùn)算符

  / 除運(yùn)算符

  % 取余運(yùn)算符 算術(shù)表達(dá)式的形式:

  表達(dá)式 1 算術(shù)運(yùn)算符 表達(dá)式 2 如:a+b*(10-a), (x+9)/(y-a)

  除法運(yùn)算符和一般的算術(shù)運(yùn)算規(guī)則有所不一樣,如是兩浮點(diǎn)數(shù)相除,其結(jié)果為浮點(diǎn)數(shù),如

  10.0/20.0 所得值為 0.5,而兩個(gè)整數(shù)相除時(shí),所得值就是整數(shù),如 7/3,值為 2。像別的語(yǔ) 言一樣 C 的運(yùn)算符與有優(yōu)先級(jí)和結(jié)合性,同樣可用用括號(hào)“()”來(lái)改變優(yōu)先級(jí)。這些和我們 小時(shí)候?qū)W的數(shù)學(xué)幾乎是一樣的,也不必過多的說明了。

  ++ 增量運(yùn)算符

  -- 減量運(yùn)算符

  這兩個(gè)運(yùn)算符是 C 語(yǔ)言中特有的一種運(yùn)算符。在 VB,PASCAL 等都是沒有的。作用就是 對(duì)運(yùn)算對(duì)象作加 1 和減 1 運(yùn)算。要注意的是運(yùn)算對(duì)象在符號(hào)前或后,其含義都是不一樣的,雖 然同是加 1 或減 1。如:I++,++I,I--,--I。

  I++(或 I--) 是先使用 I 的值,再執(zhí)行 I+1(或 I-1)

  ++I(或--I) 是先執(zhí)行 I+1(或 I-1),再使用 I 的值。增減量運(yùn)算符只允許用于變量的運(yùn)算中,不能用于常數(shù)或表達(dá)式。 先來(lái)做一個(gè)實(shí)驗(yàn)吧。學(xué)習(xí)運(yùn)算符和另外一些知識(shí)時(shí),我們還是給我們的實(shí)驗(yàn)板加個(gè)串行

  接口吧。借助電腦轉(zhuǎn)件直觀的看單片機(jī)的輸出結(jié)果,如果你用的是成品實(shí)驗(yàn)板或仿真器,那你就能跳過這一段了。

  在制作電路前我們先來(lái)看看要用的 MAX232,這里不去具體討論它,只要知道它是 TTL和 RS232 電平相互轉(zhuǎn)換的芯片和基本的引腳接線功能就行了。通常我會(huì)用兩個(gè)小功率晶體管加少量的電路去替換MAX232,能省一點(diǎn),效 果也不錯(cuò) (如有興趣能查看 網(wǎng)站中的相關(guān)資料)。下圖就是 MAX232 的基本接線圖。

  

  圖 6-1 MAX232

  在上兩課的電路的基礎(chǔ)上按圖 6-3 加上 MAX232 就能了。串行口座用 DB9 的母頭,這樣 就能用買來(lái)的 PC 串行口延長(zhǎng)線進(jìn)行和電腦相連接,也能直接接到電腦 com 口上。

  點(diǎn)擊瀏覽下一頁(yè)

  圖 6-2 DB9 接頭

  圖 6-3 加上了 MAX232 的實(shí)驗(yàn)電路 做好后,就先用回前面的“Hello World!”程序,用它來(lái)和你的電腦說聲 Hello!把程序

  燒到芯片上,把串行口連接好。嘿嘿,這個(gè)時(shí)候要打開你的串行口調(diào)試軟件,沒有就趕快到網(wǎng)上 DOWN 一個(gè)了。你會(huì)用 Windows 的超級(jí)終端也行,不過我從不用它。我用 http://emouze.com 的 comdebug,它是個(gè)不錯(cuò)的軟件,我喜歡它是因?yàn)樗δ芎枚疫€有“線路狀態(tài)”功能,這對(duì)

  我制作小玩意時(shí)很有用。串行口號(hào),波特率調(diào)好,打開串行口,單片機(jī)上電,就能在接收區(qū)看 到不斷出現(xiàn)的“Hello World!”。一定要先打開軟件的串行口,再把單片機(jī)上電,不然可能因字符不對(duì)齊而看到亂碼哦。

  點(diǎn)擊瀏覽下一頁(yè)

?

  圖 6-4 調(diào)試結(jié)果


?

?

  第七課、運(yùn)算符和表達(dá)式(關(guān)系運(yùn)算符)

?

  關(guān)系運(yùn)算符,同樣我們也并不陌生。單片機(jī)C語(yǔ)言中有六種關(guān)系運(yùn)算符,這些東西同樣是在我們小時(shí)候?qū)W算術(shù)時(shí)就已經(jīng)學(xué)習(xí)過了的:

  > 大于

  < 小于

  >= 大于等于

  <= 小于等于

  == 等于

  != 等于

  或者你是個(gè)非 C語(yǔ)言 程序員,那么對(duì)前四個(gè)一定是再熟悉不過的了。而“==”在 VB 或 PASCAL 等中是用“=”,“!=”則是用“not ”。

  小學(xué)時(shí)的數(shù)學(xué)課就教授過運(yùn)算符是有優(yōu)先級(jí)別的,計(jì)算機(jī)的語(yǔ)言也不過是人類語(yǔ)言的一種擴(kuò)展,這里的運(yùn)算符同樣有著優(yōu)先級(jí)別。前四個(gè)具有相同的優(yōu)先級(jí),后兩個(gè)也具有相同的優(yōu)先級(jí),但是前四個(gè)的優(yōu)先級(jí)要高于后2個(gè)的。

  當(dāng)兩個(gè)表達(dá)式用關(guān)系運(yùn)算符連接起來(lái)時(shí),這個(gè)時(shí)候就是關(guān)系表達(dá)式。關(guān)系表達(dá)式通常是用來(lái)判別某個(gè)條件是否滿足。要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有 0 和 1 兩種,也就是邏輯的真與假,當(dāng)指定的條件滿足時(shí)結(jié)果為 1,不滿足時(shí)結(jié)果為 0。

  表達(dá)式 1 關(guān)系運(yùn)算符 表達(dá)式 2 如:I<J,I==J,(I=4)》(J=3),J+I》J

  借助我們?cè)谏弦徽n做好的電路和學(xué)習(xí)了的相關(guān)操作。我們來(lái)做一個(gè)關(guān)系運(yùn)算符相關(guān)的實(shí)例程序。為了增加學(xué)習(xí)的趣味性和生動(dòng)性,不妨我們來(lái)假設(shè)在做一個(gè)會(huì)做算術(shù)的機(jī)器人,當(dāng)然真正會(huì)思考對(duì)話的機(jī)器,我想我是做不出來(lái)的了,這里的程序只是用來(lái)學(xué)習(xí)關(guān)系運(yùn)算符的基本應(yīng)用。

  #include 《AT89X51.H》

  #include 《stdio.h》

  void main(void)

  {

  int x,y;

  SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時(shí)器 1 定時(shí)方式 2

  TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

  TI = 1;

  TR1 = 1; //啟動(dòng)定時(shí)器

  while(1)

  {

  printf(“您好!我叫 Robot!我是一個(gè)會(huì)做算術(shù)的機(jī)器人! ”); //顯示

  printf(“請(qǐng)您輸入兩個(gè) int,X 和 Y ”); //顯示

  scanf(“%d%d”,&x,&y); //輸入

  if (x 《 y)

  printf(“X《Y ”); //當(dāng) X 小于 Y 時(shí)

  else //當(dāng) X 不小于 Y 時(shí)再作判斷

  {

  if (x == y)

  printf(“X=Y ”); //當(dāng) X 等于 Y 時(shí)

  else

  printf(“X》Y ”); //當(dāng) X 大于 Y 時(shí)

  }

  }

  }

  要注意的是,在連接 PC 串行口調(diào)試時(shí)。發(fā)送數(shù)字時(shí),發(fā)送完一個(gè)數(shù)字后還要發(fā)送一個(gè)回車符,以使 scanf 函數(shù)確認(rèn)有數(shù)據(jù)輸入。


  邏輯運(yùn)算符 關(guān)系運(yùn)算符所能反映的是兩個(gè)表達(dá)式之間的大小等于關(guān)系,那邏輯運(yùn)算符則是用于求條件式的邏輯值,用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)就是邏輯表達(dá)式了。也許你會(huì) 對(duì)為什么“邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來(lái)就是邏輯表達(dá)式了”這一個(gè)描述有疑惑的地方。 其實(shí)之前說過“要注意的是用關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有 0 和 1 兩種,也就是邏輯的真與假”, 換句話說也就是邏輯量,而邏輯運(yùn)算符就用于對(duì)邏輯量運(yùn)算的表達(dá)。邏輯表達(dá)式的一般形式 為:

  邏輯與:條件式 1 && 條件式 2 邏輯或:條件式 1 || 條件式 2 邏輯非: ! 條件式 2

  點(diǎn)擊瀏覽下一頁(yè)

  圖 7-1 演示結(jié)果

  邏輯與,說白了就是當(dāng)條件式 1“與”條件式 2 都為真時(shí)結(jié)果為真(非 0 值),不然為 假(0 值)。也就是說運(yùn)算會(huì)先對(duì)條件式 1 進(jìn)行判斷,如果為真(非 0 值),則繼續(xù)對(duì)條件式

  2 進(jìn)行判斷,當(dāng)結(jié)果為真時(shí),邏輯運(yùn)算的結(jié)果為真(值為 1),如果結(jié)果不為真時(shí),邏輯運(yùn)算 的結(jié)果為假(0 值)。如果在判斷條件式 1 時(shí)就不為真的話,就不用再判斷條件式 2 了,而 直接給出運(yùn)算結(jié)果為假。

  邏輯或,是指只要二個(gè)運(yùn)算條件中有一個(gè)為真時(shí),運(yùn)算結(jié)果就為真,只有當(dāng)條件式都不 為真時(shí),邏輯運(yùn)算結(jié)果才為假。

  邏輯非則是把邏輯運(yùn)算結(jié)果值取反,也就是說如果兩個(gè)條件式的運(yùn)算值為真,進(jìn)行邏輯 非運(yùn)算后則結(jié)果變?yōu)榧伲瑮l件式運(yùn)算值為假時(shí)最后邏輯結(jié)果為真。

  同樣邏輯運(yùn)算符也有優(yōu)先級(jí)別,!(邏輯非)→&&(邏輯與)→||(邏輯或),邏輯非的 優(yōu)先值最高。

  如有 !True || False && True

  按邏輯運(yùn)算的優(yōu)先級(jí)別來(lái)分析則得到(True 代表真,F(xiàn)alse 代表假)

  下面我們來(lái)用程序語(yǔ)言去有表達(dá),如下:

  #include 《AT89X51.H》

  #include 《stdio.h》

  void main(void)

  {

  unsigned char True = 1; //定義

  unsigned char False = 0;

  SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時(shí)器 1 定時(shí)方式 2

  TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

  TI = 1;

  TR1 = 1; //啟動(dòng)定時(shí)器

  if (!True || False && True)

  printf(“True ”); //當(dāng)結(jié)果為真時(shí)

  else

  }

  printf(“False ”); //結(jié)果為假時(shí)

  大家能使用以往學(xué)習(xí)的方法用 keil 或燒到片子上用串行口調(diào)試。能更改“!True || False

  && True”這個(gè)條件式,以實(shí)驗(yàn)不一樣算法組合來(lái)掌握邏輯運(yùn)算符的使用方法。



  第八課、運(yùn)算符和表達(dá)式(位運(yùn)算符)

  學(xué)過匯編的朋友都知道匯編對(duì)位的處理能力是很強(qiáng)的,但是單片機(jī)C語(yǔ)言也能對(duì)運(yùn)算對(duì)象進(jìn)行按位操作,從而使單片機(jī)C語(yǔ)言也能具有一定的對(duì)硬件直接進(jìn)行操作的能力。位運(yùn)算符的作用是按位對(duì)變量進(jìn)行運(yùn)算,但是并不改變參與運(yùn)算的變量的值。如果要求按位改變變量的值,則要利用相應(yīng)的賦值運(yùn)算。還有就是位運(yùn)算符是不能用來(lái)對(duì)浮點(diǎn)型數(shù)據(jù)進(jìn)行操作的。單片機(jī)c語(yǔ)言中共有6種位運(yùn)算符。位運(yùn)算一般的表達(dá)形式如下:

  變量 1 位運(yùn)算符 變量 2 位運(yùn)算符也有優(yōu)先級(jí),從高到低依次是:“~”(按位取反)→“《《”(左移) →“》》”(右

  移) →“&”(按位與)→“^”(按位異或)→“|”(按位或)

  表 8-1 是位邏輯運(yùn)算符的真值表,X 表示變量 1,Y 表示變量 2

  表 8-1 按位取反,與,或和異或的邏輯真值表

  利用以前建立起來(lái)的實(shí)驗(yàn)板,我們來(lái)做個(gè)實(shí)驗(yàn)驗(yàn)證一下位運(yùn)算是否真是不改變參與變量 的值,同時(shí)學(xué)習(xí)位運(yùn)算的表達(dá)形式。程序很簡(jiǎn)單,用 P1 口做運(yùn)算變量,P1.0-P1.7 對(duì)應(yīng) P1 變量的最低位到最高位,通過連接在 P1 口上的 LED 我們便能直觀看到每個(gè)位運(yùn)算后變量 是否有改變或如何改變。程序如下:

  #include 《at89x51.h》

  void main(void)

  {

  unsigned int a;

  unsigned int b;

  unsigned char temp; //臨時(shí)變量

  P1 = 0xAA; //點(diǎn)亮 D1,D3,D5,D7 P1 口的二進(jìn)制為 10101010,為 0 時(shí)點(diǎn)亮 LED

  for (a=0;a《1000;a++)

  for (b=0;b《1000;b++); //延時(shí)

  temp = P1 & 0x7; //單純的寫 P1|0x7 是沒有意義的,因?yàn)闆]有變量被影響,不會(huì)被編譯

  //執(zhí)行 P1|0x7 后結(jié)果存入temp,這個(gè)時(shí)候改變的是 temp,但 P1 不會(huì)被影響。

  //這個(gè)時(shí)候 LED 沒有變化,仍然是 D1,D3,D5,D7 亮

  for (a=0;a《1000;a++)

  for (b=0;b《1000;b++); //延時(shí) P1 = 0xFF; //熄滅 LED

  for (a=0;a《1000;a++)

  for (b=0;b《1000;b++); //延時(shí)

  P1 = 0xAA; //點(diǎn)亮 D1,D3,D5,D7 P1 口的二進(jìn)制為 10101010,為 0 時(shí)點(diǎn)亮 LED

  for (a=0;a《1000;a++)

  for (b=0;b《1000;b++); //延時(shí)

  P1 = P1 & 0x7; //這個(gè)時(shí)候 LED 會(huì)變得只有 D2 滅

  //因?yàn)橹?P1=0xAA=10101010

  //與 0x7 位與 0x7=00000111

  //結(jié)果存入 P1 P1=00000010 //位為 O 時(shí)點(diǎn)亮 LED,電路看第三課

  for (a=0;a《1000;a++)

  for (b=0;b《1000;b++); //延時(shí) P1 = 0xFF; //熄滅 LED

  while(1);

  //大家能根據(jù)上面的程序去做位或,左移,取反等等。

  }

  復(fù)合賦值運(yùn)算符

  復(fù)合賦值運(yùn)算符就是在賦值運(yùn)算符“=”的前面加上其他運(yùn)算符。以下是 C 語(yǔ)言中的復(fù) 合賦值運(yùn)算符:

  %= 取模賦值 -= 邏輯非賦值

  《《= 左移位賦值 復(fù)合運(yùn)算的一般形式為:

  變量 復(fù)合賦值運(yùn)算符 表達(dá)式 其含義就是變量與表達(dá)式先進(jìn)行運(yùn)算符所要求的運(yùn)算,再把運(yùn)算結(jié)果賦值給參與運(yùn)算的

  變量。其實(shí)這是 C 語(yǔ)言中一種簡(jiǎn)化程序的一種方法,凡是二目運(yùn)算都能用復(fù)合賦值運(yùn)算符 去簡(jiǎn)化表達(dá)。例如:

  a+=56 等價(jià)于 a=a+56

  y/=x+9 等價(jià)于 y=y/(x+9) 很明顯采用復(fù)合賦值運(yùn)算符會(huì)降低程序的可讀性,但這樣卻能使程序代碼簡(jiǎn)單化,并

  能提高編譯的效率。對(duì)于開始學(xué)習(xí) C 語(yǔ)言的朋友在編程時(shí)最好還是根據(jù)自己的理解力和習(xí)慣去使 用程序表達(dá)的方式,不要一味追求程序代碼的短小。

  逗號(hào)運(yùn)算符

  如果你有編程的經(jīng)驗(yàn),那么對(duì)逗號(hào)的作用也不會(huì)陌生了。如在 VB 中“Dim a,b,c”的逗 號(hào)就是把多個(gè)變量定義為同一類型的變量,在 C 也一樣,如“int a,b,c”,這些例子說明逗 號(hào)用于分隔表達(dá)式用。但在 C 語(yǔ)言中逗號(hào)還是一種特殊的運(yùn)算符,也就是逗號(hào)運(yùn)算符,能 用它將兩個(gè)或多個(gè)表達(dá)式連接起來(lái),形成逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的一般形式為:

  表達(dá)式 1,表達(dá)式 2,表達(dá)式 3……表達(dá)式 n

  這樣用逗號(hào)運(yùn)算符組成的表達(dá)式在程序運(yùn)行時(shí),是從左到右計(jì)算出各個(gè)表達(dá)式的值,而 整個(gè)用逗號(hào)運(yùn)算符組成的表達(dá)式的值等于最右邊表達(dá)式的值,就是“表達(dá)式 n”的值。在實(shí) 際的應(yīng)用中,大部分情況下,使用逗號(hào)表達(dá)式的目的只是為了分別得到名個(gè)表達(dá)式的值,而 并不一定要得到和使用整個(gè)逗號(hào)表達(dá)式的值。要注意的還有,并不是在程序的任何位置出現(xiàn) 的逗號(hào),都能認(rèn)為是逗號(hào)運(yùn)算符。如函數(shù)中的參數(shù),同類型變量的定義中的逗號(hào)只是用來(lái) 間隔之用而不是逗號(hào)運(yùn)算符。

  條件運(yùn)算符

  上面我們說過單片機(jī)C語(yǔ)言中有一個(gè)三目運(yùn)算符,它就是“?:”條件運(yùn)算符,它要求有三個(gè)運(yùn)算對(duì)象。它能把三個(gè)表達(dá)式連接構(gòu)成一個(gè)條件表達(dá)式。條件表達(dá)式的一般形式如下:

  邏輯表達(dá)式? 表達(dá)式 1 : 表達(dá)式 2 條件運(yùn)算符的作用簡(jiǎn)單來(lái)說就是根據(jù)邏輯表達(dá)式的值選擇使用表達(dá)式的值。當(dāng)邏輯表達(dá)

  式的值為真時(shí)(非 0 值)時(shí),整個(gè)表達(dá)式的值為表達(dá)式 1 的值;當(dāng)邏輯表達(dá)式的值為假(值

  為 0)時(shí),整個(gè)表達(dá)式的值為表達(dá)式 2 的值。要注意的是條件表達(dá)式中邏輯表達(dá)式的類型可 以與表達(dá)式 1 和表達(dá)式 2 的類型不一樣。下面是一個(gè)邏輯表達(dá)式的例子。

  如有 a=1,b=2 這個(gè)時(shí)候我們要求是取 ab 兩數(shù)中的較小的值放入 min 變量中,也許你會(huì)這樣 寫:

  if (a《b)

  min = a;

  else

  min = b; //這一段的意思是當(dāng) a《b 時(shí) min 的值為 a 的值,不然為 b 的值。

  用條件運(yùn)算符去構(gòu)成條件表達(dá)式就變得簡(jiǎn)單明了了:

  min = (a《b)?a : b 很明顯它的結(jié)果和含意都和上面的一段程序是一樣的,但是代碼卻比上一段程序少很多,編譯的效率也相對(duì)要高,但有著和復(fù)合賦值表達(dá)式一樣的缺點(diǎn)就是可讀性相對(duì)效差。在實(shí)際應(yīng) 用時(shí)根據(jù)自己要習(xí)慣使用,就我自己來(lái)說我喜歡使用較為好讀的方式和加上適當(dāng)?shù)淖⒔猓@ 樣能有助于程序的調(diào)試和編寫,也便于日后的修改讀寫。


  第九課、C51運(yùn)算符和表達(dá)式(指針和地址運(yùn)算符)

  在第 3 課我們學(xué)習(xí)數(shù)據(jù)類型時(shí),學(xué)習(xí)過指針類型,知道它是一種存放指向另一個(gè)數(shù)據(jù)的地址的變量類型。指針是單片機(jī)C語(yǔ)言中一個(gè)十分重要的概念,也是學(xué)習(xí)單片機(jī)C語(yǔ)言中的一個(gè)難點(diǎn)。對(duì)于指針將會(huì)在第九課中做詳細(xì)的講解。在這里我們先來(lái)了解一下單片機(jī)C語(yǔ)言中供給的兩個(gè)專門用于指針和地址的運(yùn)算符:

  * 取內(nèi)容

  & 取地址取內(nèi)容和地址的一般形式分別為:

  變量 = * 指針變量 指針變量 = & 目標(biāo)變量

  取內(nèi)容運(yùn)算是將指針變量所指向的目標(biāo)變量的值賦給左邊的變量;取地址運(yùn)算是將目標(biāo)變量的地址賦給左邊的變量。要注意的是:指針變量中只能存放地址(也就是指針型數(shù)據(jù)), 一般情況下不要將非指針類型的數(shù)據(jù)賦值給一個(gè)指針變量。

  下面來(lái)看一個(gè)例子,并用一個(gè)圖表和實(shí)例去簡(jiǎn)單理解指針的使用方法和含義。

  設(shè)有兩個(gè) unsigned int 變量 ABC 處 CBA 存放在 0x0028,0x002A 中 另有一個(gè)指針變量 portA 存放在 0x002C 中 那么我們寫這樣一段程序去看看*,&的運(yùn)算結(jié)果

  unsigned int data ABC _at_ 0x0028; unsigned int data CBA _at_ 0x002A; unsigned int data *Port _at_ 0x002C;

  #include 《at89x51.h》

  #include 《stdio.h》

  void main(void)

  {

  SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時(shí)器 1 定時(shí)方式 2

  TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

  TI = 1;

  TR1 = 1; //啟動(dòng)定時(shí)器

  ABC = 10; //設(shè)初值 CBA = 20;

  Port = &CBA; //取 CBA 的地址放到指針變量 Port

  *Port = 100; //更改指針變量 Port 所指向的地址的內(nèi)容

  printf(“1: CBA=%d ”,CBA); //顯示此時(shí) CBA 的值

  Port = &ABC; //取 ABC 的地址放到指針變量 Port

  CBA = *Port; //把當(dāng)前 Port 所指的地址的內(nèi)容賦給變量 CBA

  printf(“2: CBA=%d ”,CBA); //顯示此時(shí) CBA 的值

  printf(“ ABC=%d ”,ABC); //顯示 ABC 的值

  }

  程序初始時(shí)


?

  其它的語(yǔ)句也是一樣的道理,大家能用 Keil 的單步執(zhí)行和打開存儲(chǔ)器查看器一看,這樣

  就更不難理解了。

  點(diǎn)擊瀏覽下一頁(yè)

  圖 9-1 存儲(chǔ)器查看窗

  點(diǎn)擊瀏覽下一頁(yè)

  圖 9-2 在串行調(diào)試窗口的最終結(jié)果

  sizeof 運(yùn)算符

  看上去這確實(shí)是個(gè)奇怪的運(yùn)算符,有點(diǎn)像函數(shù),卻又不是。大家看到 size 應(yīng)該就猜到 是和大小有關(guān)的吧?是的,sizeof 是用來(lái)求數(shù)據(jù)類型、變量或是表達(dá)式的字節(jié)數(shù)的一個(gè)運(yùn) 算符,但它并不像“=”之類運(yùn)算符那樣在程序執(zhí)行后才能計(jì)算出結(jié)果,它是直接在編譯時(shí) 產(chǎn)生結(jié)果的。它的語(yǔ)法如下:

  sizeof (數(shù)據(jù)類型)

  sizeof (表達(dá)式) 下面是兩句應(yīng)用例句,程序大家能試著編寫一下。

  printf(“char 是多少個(gè)字節(jié)? ? 字節(jié) ”,sizeof(char));

  printf(“l(fā)ong 是多少個(gè)字節(jié)? ? 字節(jié) ”,sizeof(long));

  結(jié)果是:

  char 是多少個(gè)字節(jié)? 1 字節(jié)

  long 是多少個(gè)字節(jié)? 4 字節(jié)

  強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 不知你們是否有自己去試著編一些程序,從中是否有遇到一些問題?開始學(xué)習(xí)時(shí)我就遇到過

  這樣一個(gè)問題:兩個(gè)不一樣數(shù)據(jù)類型的數(shù)在相互賦值時(shí)會(huì)出現(xiàn)不對(duì)的值。如下面的一段小程序:

  void main(void)

  {

  unsigned char a;

  unsigned int b;

  b=100*4;

  a=b;

  while(1);

  }

  這段小程序并沒有什么實(shí)際的應(yīng)用意義,如果你是細(xì)心的朋友定會(huì)發(fā)現(xiàn) a 的值是不會(huì)等于

  100*4 的。是的 a 和 b 一個(gè)是 char 類型一個(gè)是 int 類型,從以前的學(xué)習(xí)可知 char 只占一個(gè) 字節(jié)值最大只能是 255。但編譯時(shí)為何不出錯(cuò)呢?先來(lái)看看這程序的運(yùn)行情況:

  點(diǎn)擊瀏覽下一頁(yè)

  圖 9-3 小程序的運(yùn)行情況

  b=100*4 就能得知 b=0x190,這個(gè)時(shí)候我們能在 Watches 查看 a 的值,對(duì)于 watches 窗口我們 在第 5 課時(shí)簡(jiǎn)單學(xué)習(xí)過,在這個(gè)窗口 Locals 頁(yè)里能查看程序運(yùn)行中的變量的值,也能

  在 watch 頁(yè)中輸入所要查看的變量名對(duì)它的值進(jìn)行查看。做法是按圖中 1 的 watch#1(或

  watch#2),然后光標(biāo)移到圖中的 2 按 F2 鍵,這樣就能輸入變量名了。在這里我們能查看

  到 a 的值為 0x90,也就是 b 的低 8 位。這是因?yàn)閳?zhí)行了數(shù)據(jù)類型的隱式轉(zhuǎn)換。隱式轉(zhuǎn)換是 在程序進(jìn)行編譯時(shí)由編譯器自動(dòng)去處理完成的。所以有必要了解隱式轉(zhuǎn)換的規(guī)則:

  1.變量賦值時(shí)發(fā)生的隱式轉(zhuǎn)換,“=”號(hào)右邊的表達(dá)式的數(shù)據(jù)類型轉(zhuǎn)換成左邊變量的數(shù)

  據(jù)類型。就如上面例子中的把 INT 賦值給 CHAR 字符型變量,得到的 CHAR 將會(huì)是 INT 的低 8 位。如把浮點(diǎn)數(shù)賦值給整形變量,小數(shù)部分將丟失。

  2.所有 char 型的操作數(shù)轉(zhuǎn)換成 int 型。

  3.兩個(gè)具有不一樣數(shù)據(jù)類型的操作數(shù)用運(yùn)算符連接時(shí),隱式轉(zhuǎn)換會(huì)按以下次序進(jìn)行:如 有一操作數(shù)是 float 類型,則另一個(gè)操作數(shù)也會(huì)轉(zhuǎn)換成 float 類型;如果一個(gè)操作數(shù)為 long 類型,另一個(gè)也轉(zhuǎn)換成 long;如果一個(gè)操作數(shù)是 unsigned 類型,則另一個(gè)操作會(huì)被轉(zhuǎn)換成 unsigned 類型。

  從上面的規(guī)則能大概知道有那幾種數(shù)據(jù)類型是能進(jìn)行隱式轉(zhuǎn)換的。是的,在 單片機(jī)c語(yǔ)言 中只有 char,int,long 及 float 這幾種基本的數(shù)據(jù)類型能被隱式轉(zhuǎn)換。而其它的數(shù)據(jù)類型 就只能用到顯示轉(zhuǎn)換。要使用強(qiáng)制轉(zhuǎn)換運(yùn)算符應(yīng)遵循以下的表達(dá)形式:

  (類型) 表達(dá)式 用顯示類型轉(zhuǎn)換來(lái)處理不一樣類型的數(shù)據(jù)間運(yùn)算和賦值是十分方便和方便的,特別對(duì)指針

  變量賦值是很有用的。看一面一段小程序:

  #include 《at89x51.h》

  #include 《stdio.h》

  void main(void)

  {

  char xdata * XROM;

  char a;

  int Aa = 0xFB1C;

  long Ba = 0x893B7832;

  float Ca = 3.4534;

  SCON = 0x50; //串行口方式 1,允許接收 TMOD = 0x20; //定時(shí)器 1 定時(shí)方式 2

  TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

  TI = 1;

  TR1 = 1; //啟動(dòng)定時(shí)器

  XROM=(char xdata *) 0xB012; //給指針變量賦 XROM 初值

  *XROM = ‘R’; //給 XROM 指向的絕對(duì)地址賦值

  a = *((char xdata *) 0xB012); //等同于 a = *XROM

  printf (“%bx %x %d %c ”,(char) Aa, (int) Ba,(int)Ca, a);//轉(zhuǎn)換類型并輸出

  while(1);

  }

  程序運(yùn)行結(jié)果:1c 7832 3 R 在上面這段程序中,能很清楚到到各種類型進(jìn)行強(qiáng)制類型轉(zhuǎn)換的基本使用方法,程序中先

  在外部數(shù)據(jù)存儲(chǔ)器 XDATA 中定義了一個(gè)字符型指針變量 XROM,當(dāng)用 XROM=(char xdata *)

  0xB012 這一語(yǔ)句時(shí),便把 0xB012 這個(gè)地址指針賦于了 XROM,如你用 XROM 則會(huì)是非法的, 這種方法特別適合于用標(biāo)識(shí)符來(lái)存取絕對(duì)地址,如在程序前用#define ROM 0xB012 這樣的 語(yǔ)句,在程序中就能用上面的方法用 ROM 對(duì)絕對(duì)地址 0xB012 進(jìn)行存取操作了。









?
上一頁(yè)1234567全文
收藏

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

評(píng)論

查看更多

相關(guān)推薦

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(一)

  電子發(fā)燒友網(wǎng)訊:繼《單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略》得到廣大讀者好評(píng),電子發(fā)燒友網(wǎng)再接再厲再次為讀者誠(chéng)摯奉上非常詳盡的《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略》系列單片機(jī)C語(yǔ)言學(xué)習(xí)教程
2012-06-28 13:39:3250490

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(一)

  導(dǎo)語(yǔ):單片機(jī)對(duì)于初學(xué)者來(lái)說確實(shí)很難理解,不少學(xué)過單片機(jī)的同學(xué)或電子愛好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲。基于此,電子發(fā)燒友網(wǎng)將整合《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略》,共
2012-06-08 10:45:1959188

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(二)

導(dǎo)語(yǔ):單片機(jī)對(duì)于初學(xué)者來(lái)說確實(shí)很難理解,不少學(xué)過單片機(jī)的同學(xué)或電子愛好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲。基于此,電子發(fā)燒友網(wǎng)將整合《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略》,共分為
2012-06-12 08:53:1718693

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(三)

導(dǎo)語(yǔ):本期主要知識(shí)點(diǎn)單片機(jī)定時(shí)計(jì)數(shù)器、中斷和串行口的學(xué)習(xí)。單片機(jī)對(duì)于初學(xué)者來(lái)說確實(shí)很難理解,不少學(xué)過單片機(jī)的同學(xué)或電子愛好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲。基于此
2012-06-15 14:30:2413345

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略(完結(jié)篇)

導(dǎo)語(yǔ):本期是本次單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)的最終回,我們會(huì)列出前三回一起方便讀者回顧學(xué)習(xí)。本次主要知識(shí)點(diǎn)單片機(jī)串口通信、接口和實(shí)際案例實(shí)踐——單片機(jī)音樂程序設(shè)計(jì)的學(xué)習(xí)。單
2012-06-21 16:19:3628895

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(三)

電子發(fā)燒友網(wǎng)訊:繼《單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略》得到廣大讀者好評(píng),根據(jù)有網(wǎng)友提出美中不足的是所用單片機(jī)編程語(yǔ)言為匯編,基于此,電子發(fā)燒友網(wǎng)再接再厲再次為讀者誠(chéng)摯奉上非
2012-07-06 09:44:5822188

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(完結(jié)篇)

電子發(fā)燒友網(wǎng)訊:繼《單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略》得到廣大讀者好評(píng),根據(jù)有網(wǎng)友提出美中不足的是所用單片機(jī)編程語(yǔ)言為匯編,基于此,電子發(fā)燒友網(wǎng)再接再厲再次為讀者誠(chéng)摯奉上非
2012-07-11 14:41:0218045

C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍

  電子發(fā)燒友網(wǎng)訊:應(yīng)廣大電子發(fā)燒友網(wǎng)讀者要求,本電子書《C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍》為《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略單片機(jī)系列教程及《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略》系列
2012-07-30 13:59:219661

32位MCU開發(fā)全攻略

32位MCU開發(fā)全攻略上下兩冊(cè) ,主要講述32位MCU應(yīng)用開發(fā)知識(shí)
2016-05-04 15:42:15

51單片機(jī)C語(yǔ)言教程

51單片機(jī)C語(yǔ)言教程----入門、提高、開發(fā)、拓展全攻略
2013-11-29 17:27:47

51單片機(jī)C語(yǔ)言教程 郭天祥(入門、提高、開發(fā)、拓展全攻略

`51單片機(jī)C語(yǔ)言教程 郭天祥編著入門、提高、開發(fā)、拓展全攻略注意全部附件下載了 解壓才會(huì)成功[hide][/hide]`
2011-10-13 17:28:28

51單片機(jī)總線設(shè)計(jì)法全攻略

51單片機(jī)總線設(shè)計(jì)法全攻略
2012-08-20 19:44:03

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍
2012-09-28 23:18:43

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍
2012-12-20 22:50:36

c語(yǔ)言教程--很全的...

c語(yǔ)言教程-入門、提高、開發(fā)、拓展全攻略
2012-08-12 18:20:32

單片機(jī)C語(yǔ)言知識(shí)點(diǎn)精華集錦(三)

語(yǔ)言知識(shí)點(diǎn)全攻略》系列單片機(jī)C語(yǔ)言學(xué)習(xí)教程,本教程共分為四部分,本文為第三部分,主要知識(shí)點(diǎn)如下所示。參閱相關(guān)系列文章,單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略(一)單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略)第三部分知識(shí)點(diǎn)
2012-07-06 10:23:05

單片機(jī)知識(shí)點(diǎn)

單片機(jī)最常見的知識(shí)點(diǎn),總結(jié),歸納
2013-06-19 22:38:16

單片機(jī)知識(shí)點(diǎn)大合集

單片機(jī)知識(shí)點(diǎn)51系列考試必背1、單片機(jī)是將微處理器、一定容量的 RAM 和ROM以及I/O口、定時(shí)器等電路集成在一塊芯片上而構(gòu)成的微型計(jì)算機(jī)。2、單片機(jī)89C51片內(nèi)集成了4 KB的FLASH
2021-12-02 08:04:07

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略

本帖最后由 eehome 于 2013-1-5 09:53 編輯 單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略
2012-08-15 20:46:38

單片機(jī)學(xué)習(xí)知識(shí)點(diǎn)全攻略

單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略》,共分為四個(gè)系列,以饗讀者,敬請(qǐng)期待!此系列對(duì)于業(yè)內(nèi)電子工程師也有收藏和參考價(jià)值。
2012-06-16 09:16:10

單片機(jī)期末知識(shí)點(diǎn)總結(jié)

單片機(jī)期末知識(shí)點(diǎn)總結(jié),單片機(jī)期末復(fù)習(xí)臨近期末,單片機(jī)復(fù)習(xí)沒有頭緒,怎么辦?一個(gè)字,背。但是,背要有背的方法,干背是很頭痛也很難的,所以,我總結(jié)了一部分思路幫助大家,希望能幫助大家。根據(jù)參考教材順序,分為以下幾個(gè)內(nèi)容:一、單片機(jī)緒論(一)特點(diǎn)、結(jié)構(gòu)和原理(一)并行口...
2021-07-16 08:34:55

ATMEL-SAM4S-XPLAINED開發(fā)板測(cè)試完全攻略

ATMEL-SAM4S-XPLAINED開發(fā)板測(cè)試完全攻略
2018-01-25 10:16:46

CFL/LED照明驅(qū)動(dòng)IC應(yīng)用設(shè)計(jì)全攻略 200頁(yè)

CFL/LED照明驅(qū)動(dòng)IC應(yīng)用設(shè)計(jì)全攻略 200頁(yè)資料來(lái)自網(wǎng)絡(luò)資源
2021-03-12 22:07:40

FPGA 開發(fā)全攻略——電子工程師創(chuàng)新設(shè)計(jì)必備寶典 技巧篇

FPGA 開發(fā)全攻略——電子工程師創(chuàng)新設(shè)計(jì)必備寶典 技巧篇
2017-09-28 12:47:14

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略
2017-09-27 10:59:41

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略
2020-05-21 09:28:53

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略
2021-03-03 10:30:25

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略
2021-03-07 11:46:02

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略
2015-05-10 11:40:55

FPGA開發(fā)全攻略

FPGA開發(fā)全攻略章、FPGA基本知識(shí)與發(fā)展趨勢(shì) 72.1 FPGA結(jié)構(gòu)和工作原理 72.1.1 夢(mèng)想成就偉業(yè) 72.1.2 FPGA結(jié)構(gòu) 82.1.3 軟核、硬核以及固核的概念 152.1.4
2009-04-09 18:28:46

FPGA開發(fā)全攻略

電子工程師創(chuàng)新設(shè)計(jì)必備寶典系列之FPGA開發(fā)全攻略上,下兩冊(cè)
2016-04-24 21:11:22

FPGA開發(fā)全攻略_下.pdf

FPGA開發(fā)全攻略_下.pdf
2013-04-08 10:48:02

FPGA開發(fā)全攻略——上冊(cè).rar

FPGA開發(fā)全攻略——上冊(cè).rar
2013-04-08 10:44:28

FPGA開發(fā)全攻略—工程師創(chuàng)新設(shè)計(jì)寶典下冊(cè)技巧篇

FPGA開發(fā)全攻略—工程師創(chuàng)新設(shè)計(jì)寶典下冊(cè)技巧篇
2012-08-17 09:41:06

FPGA開發(fā)全攻略

本帖最后由 lee_st 于 2017-10-31 08:57 編輯 FPGA開發(fā)全攻略
2017-10-21 20:31:59

FPGA開發(fā)全攻略

本帖最后由 lee_st 于 2017-10-31 08:56 編輯 FPGA開發(fā)全攻略
2017-10-21 20:34:23

FPGA開發(fā)全攻略實(shí)用教程精粹

本帖最后由 lee_st 于 2017-10-31 08:57 編輯 FPGA開發(fā)全攻略實(shí)用教程精粹
2017-10-21 20:33:03

FPGA開發(fā)全攻略實(shí)用教程精粹

FPGA開發(fā)全攻略實(shí)用教程精粹
2017-09-28 13:50:53

FPGA開發(fā)全攻略(全,分為上下2部)

FPGA開發(fā)全攻略(全,分為上下2部)
2019-03-25 14:44:29

GPS 設(shè)計(jì)全攻略

GPS 設(shè)計(jì)全攻略
2008-09-25 14:11:07

GPS 設(shè)計(jì)全攻略

GPS 設(shè)計(jì)全攻略
2009-12-05 12:08:44

GPS設(shè)計(jì)全攻略

本帖最后由 zgzzlt 于 2012-8-16 13:58 編輯 GPS設(shè)計(jì)全攻略
2012-08-06 12:56:16

LED技術(shù)全攻略

本帖最后由 zgzzlt 于 2012-8-16 13:56 編輯 LED技術(shù)全攻略
2012-08-06 12:59:13

LED技術(shù)全攻略

LED技術(shù)全攻略
2008-09-25 14:16:23

MCU解密全攻略

MCU解密全攻略
2012-08-19 14:28:01

STM32單片機(jī)入門必備哪些知識(shí)點(diǎn)

STM32單片機(jī)入門必備哪些知識(shí)點(diǎn)
2021-11-15 06:23:59

STM32學(xué)習(xí)中會(huì)遇見的C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)講解

C語(yǔ)言單片機(jī)開發(fā)中的必備基礎(chǔ)知識(shí),這里就列舉部分STM32學(xué)習(xí)中會(huì)遇見的C 語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)。01位操作下面我們先講解幾種位操作符,然...
2022-02-28 07:11:38

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍》電子發(fā)燒友網(wǎng)創(chuàng)新系...

為讀者誠(chéng)摯奉上非常詳盡的《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)全攻略》系列單片機(jī)C語(yǔ)言學(xué)習(xí)教程,本教程共分為四部分,主要知識(shí)點(diǎn)如下所示。  第一部分知識(shí)點(diǎn):  第一課 建立你的第一個(gè)KeilC51項(xiàng)目  第
2014-10-31 14:32:18

《放大器應(yīng)用全攻略寶典》

《放大器應(yīng)用全攻略寶典》
2014-09-04 13:15:07

【信盈達(dá)】C語(yǔ)言知識(shí)點(diǎn)的總結(jié)

、算法說明:學(xué)習(xí)單片機(jī)C一般只需要前9個(gè)知識(shí)點(diǎn)即可進(jìn)行產(chǎn)品開發(fā),但要學(xué)習(xí)嵌入式C還需要要掌握:指針、結(jié)構(gòu)體、鏈表、宏定義等知識(shí)點(diǎn)單片機(jī)C、嵌入式C、標(biāo)準(zhǔn)C區(qū)別:這三種C語(yǔ)言都來(lái)源于標(biāo)準(zhǔn)C,基本上
2018-10-08 14:41:27

【干貨】單片機(jī)入門到精通之單片機(jī)C語(yǔ)言知識(shí)分享

`學(xué)習(xí)單片機(jī)C語(yǔ)言必要知識(shí)點(diǎn)集合,很實(shí)用,需要的可以看看,可以有很大提升。`
2021-02-27 11:31:37

關(guān)于單片機(jī)藍(lán)牙模塊的知識(shí)點(diǎn)看完你就懂了

關(guān)于單片機(jī)藍(lán)牙模塊的知識(shí)點(diǎn)看完你就懂了
2021-10-28 06:27:28

關(guān)于STM32中重要的C語(yǔ)言知識(shí)點(diǎn)看完你就懂了

關(guān)于STM32中重要的C語(yǔ)言知識(shí)點(diǎn)看完你就懂了
2021-10-13 07:47:00

發(fā)個(gè)比較基礎(chǔ)的學(xué)習(xí)文件---C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍

比較基礎(chǔ)的學(xué)習(xí)文件---C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍,適合新手哦,{:soso_e100:}
2012-11-29 12:51:22

學(xué)習(xí)51單片機(jī)需要學(xué)習(xí)哪些知識(shí)點(diǎn)

作為一名入門級(jí)的工程師,萬(wàn)事開頭難,只要知道學(xué)習(xí)51單片機(jī)需要學(xué)習(xí)哪些知識(shí)點(diǎn)就萬(wàn)事大吉了。然后再系統(tǒng)的將知識(shí)點(diǎn)全部掌握即可。那么我們一起看看吧,到底要學(xué)習(xí)哪些呢?實(shí)際上,其實(shí)不需要多少東西,會(huì)簡(jiǎn)單
2020-10-22 13:49:35

嵌入式C/單片機(jī)C/標(biāo)準(zhǔn)C知識(shí)點(diǎn)

、算法  說明:  學(xué)習(xí)單片機(jī)C一般只需要前9個(gè)知識(shí)點(diǎn)即可進(jìn)行產(chǎn)品開發(fā),但要學(xué)習(xí)嵌入式C還需要要掌握:指針、結(jié)構(gòu)體、鏈表、宏定義等知識(shí)點(diǎn)。  單片機(jī)C、嵌入式C、標(biāo)準(zhǔn)C區(qū)別:  這三種C語(yǔ)言都來(lái)
2014-10-24 14:42:09

工程師總結(jié)了一些C語(yǔ)言知識(shí)點(diǎn)

:結(jié)構(gòu)體知識(shí)點(diǎn)11:鏈表和文件(LINUX)知識(shí)點(diǎn)12:宏定義和編程思想、算法說明:學(xué)習(xí)單片機(jī)C一般只需要前9個(gè)知識(shí)點(diǎn)即可進(jìn)行產(chǎn)品開發(fā),但要學(xué)習(xí)嵌入式C還需要要掌握:指針、結(jié)構(gòu)體、鏈表、宏定義等知識(shí)點(diǎn)
2017-07-25 10:23:45

想要入門單片機(jī)必備哪些知識(shí)點(diǎn)

想要入門單片機(jī)必備哪些知識(shí)點(diǎn)
2021-11-01 06:06:18

掌握在單片機(jī)下使用C語(yǔ)言編程內(nèi)存對(duì)齊的知識(shí)點(diǎn)

一、前言在單片機(jī)下使用C語(yǔ)言編程時(shí),內(nèi)存對(duì)齊的知識(shí)點(diǎn)必須掌握。掌握內(nèi)存對(duì)齊后,可以防止內(nèi)存碎片化,單片機(jī)有限的內(nèi)存被更加有效地使用。、內(nèi)存對(duì)齊先看如下代碼:結(jié)構(gòu)體Test1占用了多少字節(jié)?如果事先
2022-02-28 07:47:08

新概念51單片機(jī)C語(yǔ)言教程 入門、提高、開發(fā)、拓展全攻略 ...

`新概念51單片機(jī)C語(yǔ)言教程 入門、提高、開發(fā)、拓展全攻略 545頁(yè).PDFhttp://yunpan.cn/QGCf7KVDzGZa7`
2013-09-29 14:20:40

新概念51單片機(jī)C語(yǔ)言教程 入門、提高、開發(fā)、拓展全攻略.pdf

新概念51單片機(jī)C語(yǔ)言教程 入門、提高、開發(fā)、拓展全攻略.pdf---郭天祥!
2013-05-20 19:17:51

新概念51單片機(jī)C語(yǔ)言教程--入門提高開發(fā)拓展全攻略_郭天祥

新概念51單片機(jī)C語(yǔ)言教程--入門提高開發(fā)拓展全攻略_郭天祥各章節(jié)例題程序匯總
2014-04-22 13:14:38

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略
2012-08-04 16:21:20

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略免費(fèi)下載
2018-01-30 17:05:40

無(wú)盤工作站2000終端全攻略

 無(wú)盤工作站2000終端全攻略: 
2008-05-29 15:02:38

智能小車DIY全攻略

給大家分享一個(gè)挺不錯(cuò)的資料,智能小車DIY全攻略,介紹了各種智能小車的機(jī)械結(jié)構(gòu)設(shè)計(jì)
2014-11-06 21:03:11

電子書:電源設(shè)計(jì)最強(qiáng)攻略, 帶你全面掌握設(shè)計(jì)竅門

電源的緩啟動(dòng)電路設(shè)計(jì)及原理2使用MOS管控制達(dá)到電源緩啟動(dòng)的目的3干貨 | 開關(guān)電源啟動(dòng)時(shí)出現(xiàn)輸入浪涌電流原因分析4電源工程師設(shè)計(jì)全攻略(一):充電電路設(shè)計(jì)5電源工程師設(shè)計(jì)全攻略):開關(guān)電源設(shè)計(jì)6
2020-07-10 13:42:49

經(jīng)典中的經(jīng)典!《C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍》

C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍》 電子發(fā)燒友網(wǎng)訊:應(yīng)廣大電子發(fā)燒友網(wǎng)讀者要求,本電子書《C51單片機(jī)C語(yǔ)言知識(shí)點(diǎn)必備秘籍》為《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略單片機(jī)系列教程及《單片機(jī)C語(yǔ)言知識(shí)點(diǎn)
2012-07-30 16:06:04

經(jīng)典電腦故障全攻略

經(jīng)典電腦故障全攻略
2012-08-17 16:35:43

經(jīng)典資料分享之CFL/LED照明驅(qū)動(dòng)IC應(yīng)用設(shè)計(jì)全攻略 200頁(yè)

CFL/LED照明驅(qū)動(dòng)IC應(yīng)用設(shè)計(jì)全攻略 200頁(yè) 資料分享來(lái)自網(wǎng)絡(luò)資源
2021-04-21 22:34:17

萌新求助,求大佬分享單片機(jī)知識(shí)點(diǎn)

萌新求助,求大佬分享單片機(jī)知識(shí)點(diǎn)
2021-10-18 06:03:13

解壓出錯(cuò)

我下載完全部《51單片機(jī)C語(yǔ)言教程 郭天祥編著入門、提高、開發(fā)、拓展全攻略》為什么一樣出錯(cuò).....求高人指點(diǎn)
2012-02-26 15:58:52

郭天祥 C語(yǔ)言教程-開發(fā)擴(kuò)展全攻略

`郭天祥 C語(yǔ)言教程-入門, 提高,開發(fā)擴(kuò)展全攻略經(jīng)典制作, 51單片機(jī)必看.文件太大, 上傳例程大家先看下.`
2013-06-08 21:24:11

郭天祥.新概念51單片機(jī)C語(yǔ)言教程.入門、提高、開發(fā)、拓展全攻略+5本實(shí)用參考書

].楊欣等.掃描版[新概念51單片機(jī)C語(yǔ)言教程.入門、提高、開發(fā)、拓展全攻略].郭天祥.掃描版掃描版圖書下載地址:http://pan.baidu.com/s/1nvqz5rz視頻教程下載地址:http
2016-03-27 15:20:53

酷!【FPGA】開發(fā)全攻略—工程師創(chuàng)新設(shè)計(jì)寶典,上、下冊(cè)全

`電子工程師創(chuàng)新設(shè)計(jì)必備寶典系列之FPGA開發(fā)全攻略,涵蓋FPGA基礎(chǔ)及應(yīng)用技巧,高清文字版的。是非常不錯(cuò)的入門學(xué)習(xí)資料。1.FPGA開發(fā)全攻略—工程師創(chuàng)新設(shè)計(jì)寶典上冊(cè)基礎(chǔ)篇2.FPGA開發(fā)全攻略
2019-11-19 11:29:30

飛思卡爾發(fā)展開發(fā)全攻略

飛思卡爾發(fā)展開發(fā)全攻略
2016-03-19 13:12:49

32位MCU開發(fā)全攻略 (含上冊(cè)、下冊(cè))

32位MCU(單片機(jī))開發(fā)全攻略:本文因?yàn)閮?nèi)容很多,分為上下冊(cè),上冊(cè)為基礎(chǔ)知識(shí)篇,從第一章到第五章,下冊(cè)為開發(fā)技巧篇,為第六章以后內(nèi)容。本書可以作為MCU應(yīng)用工程師、大中專
2009-10-26 14:37:521566

Protel PCB轉(zhuǎn)SCH全攻略

Protel  PCB轉(zhuǎn)SCH全攻略 本文以Protel 99se提供的4 Port Serial Interface為例進(jìn)行說明。
2010-04-03 11:04:330

光盤刻錄知識(shí)全攻略

光盤刻錄知識(shí)全攻略!    &n
2009-12-26 10:31:06955

AVR芯片的ISP全攻略+熔絲補(bǔ)救方

AVR芯片的ISP全攻略+熔絲補(bǔ)救方 并行編程,最早的編程方法,功能最強(qiáng)大,但需要連接較多的引腳,通常需要12V~24
2010-01-16 10:42:39760

投影燈泡維護(hù)全攻略

投影燈泡維護(hù)全攻略  隨著IT產(chǎn)品及新視聽設(shè)備的迅猛發(fā)展,無(wú)論是在多媒體教學(xué)、商務(wù)談判,還是家庭娛樂領(lǐng)
2010-02-08 11:07:38625

大于100米組建網(wǎng)絡(luò)方案全攻略

大于100米組建網(wǎng)絡(luò)方案全攻略 一、雙絞線直連   很多用戶都知道,在正式的規(guī)范中雙絞線的最大傳輸距
2010-04-14 11:37:56487

MCU解密全攻略

本內(nèi)容介紹了MCU解密的全攻略教程
2011-07-11 17:51:42644

《C51單片機(jī)及C語(yǔ)言知識(shí)點(diǎn)必備秘籍》電子發(fā)燒友網(wǎng)創(chuàng)新系列電子書

導(dǎo)語(yǔ):單片機(jī)對(duì)于初學(xué)者來(lái)說確實(shí)很難理解,不少學(xué)過單片機(jī)的同學(xué)或電子愛好者,甚至在畢業(yè)時(shí)仍舊是一無(wú)所獲。基于此,電子發(fā)燒友網(wǎng)將整合《單片機(jī)關(guān)鍵知識(shí)點(diǎn)全攻略》,共分為
2012-07-30 14:05:4816529

Protel_PCB轉(zhuǎn)SCH全攻略

Protel PCB 轉(zhuǎn)SCH全攻略 本文以Protel 99Se提供的4 Port Serial Interface為例進(jìn)行說明。
2016-03-09 11:19:260

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略

無(wú)感無(wú)刷直流電機(jī)之電調(diào)設(shè)計(jì)全攻略
2016-04-12 09:58:0131

FPGA開發(fā)全攻略_上

FPGA開發(fā)全攻略_上有需要的朋友下來(lái)看看。
2016-05-10 11:21:0629

新概念51單片機(jī)C語(yǔ)言教程--入門提高開發(fā)拓展全攻略_郭天祥

新概念51單片機(jī)C語(yǔ)言教程--入門提高開發(fā)拓展全攻略_郭天祥。
2016-05-16 11:05:3158

Proteus ARES 制板PCB 方法 全攻略

Proteus ARES 制板PCB 方法 全攻略單片機(jī)知識(shí)
2016-05-17 11:09:4021

Stm32初學(xué)者全攻略

Stm32初學(xué)者全攻略------值得一看
2016-06-15 17:36:4255

LED技術(shù)全攻略part1

LED技術(shù)全攻略part1,資源過大,分為2辦法上傳,有需要的下來(lái)看看。
2016-12-13 14:28:1930

LED技術(shù)全攻略part2

LED技術(shù)全攻略part2,資源過大,分為2辦法上傳,有需要的下來(lái)看看。
2016-12-13 14:28:1929

LED調(diào)光技術(shù)全攻略

LED調(diào)光技術(shù)全攻略
2017-02-08 00:50:3039

LED驅(qū)動(dòng)電源方案全攻略

LED驅(qū)動(dòng)電源方案全攻略
2017-01-14 12:22:2340

基于mycat的Mysql主從復(fù)制讀寫分離全攻略

基于mycat的Mysql主從復(fù)制讀寫分離全攻略
2017-09-08 10:10:444

智能小車的DIY全攻略

智能小車的DIY全攻略
2017-10-13 09:13:0128

新概念51單片機(jī)C語(yǔ)言教程.入門、提高、開發(fā)拓展全攻略PDF版電子書

《新概念51單片機(jī)C語(yǔ)言教程:入門、提高、開發(fā)、拓展全攻略》從實(shí)際應(yīng)用入手,以實(shí)驗(yàn)過程和實(shí)驗(yàn)現(xiàn)象為主導(dǎo),循序漸進(jìn)地講述51單片機(jī)C語(yǔ)言編程方法以及51單片機(jī)的硬件結(jié)構(gòu)和功能應(yīng)用。全書共分5篇,分別為
2019-03-18 17:06:400

全攻略自制esp8266 WIFI智能排插教程

全攻略自制esp8266 WIFI智能排插教程
2021-11-23 17:51:2517

程序員跳槽全攻略

程序員跳槽全攻略
2022-06-14 15:03:010

Protel PCB 轉(zhuǎn)SCH全攻略.zip

ProtelPCB轉(zhuǎn)SCH全攻略
2022-12-30 09:20:4511

已全部加載完成