wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標(biāo)題: 單片機(jī)C語(yǔ)言的知識(shí)匯總 [打印本頁(yè)]

作者: cangyuan    時(shí)間: 2021-7-17 21:03
標(biāo)題: 單片機(jī)C語(yǔ)言的知識(shí)匯總
本帖最后由 cangyuan 于 2021-7-18 18:49 編輯

一、概述

1、結(jié)合8051介紹單片機(jī)C語(yǔ)言的優(yōu)越性:
   ·無(wú)須懂得單片機(jī)的具體硬件,也能夠編出符合硬件實(shí)際的專業(yè)水平的程序;
   ·不懂得單片機(jī)的指令集,也能夠編寫完美的單片機(jī)程序;
   ·不同函數(shù)的數(shù)據(jù)實(shí)行覆蓋,有效利用片上有限的RAM空間;
   ·提供auto、static、const等存儲(chǔ)類型和專門針對(duì)8051單片機(jī)的data、idata、pdata、xdata、code等存儲(chǔ)類型,自動(dòng)為變量合理地分配地址;
   ·C語(yǔ)言提供復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等),極大地增強(qiáng)了程序處理能力和靈活性;
   ·提供small、compact、large等編譯模式,以適應(yīng)片上存儲(chǔ)器的大小;
   ·中斷服務(wù)程序的現(xiàn)場(chǎng)保護(hù)和恢復(fù),中斷向量表的填寫,是直接與單片機(jī)相關(guān)的,都由C編譯器代辦;
   ·程序具有堅(jiān)固性:數(shù)據(jù)被破壞是導(dǎo)致程序運(yùn)行異常的重要因素。C語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行了許多專業(yè)性的處理,避免了運(yùn)行中間非異步的破壞
   ·提供常用的標(biāo)準(zhǔn)函數(shù)庫(kù),以供用戶直接使用;
   ·有嚴(yán)格的句法檢查,錯(cuò)誤很少,可容易地在高級(jí)語(yǔ)言的水平上迅速地被排掉;
   ·可方便地接受多種實(shí)用程序的服務(wù):如片上資源的初始化有專門的實(shí)用程序自動(dòng)生成;再如,有實(shí)時(shí)多任務(wù)操作系統(tǒng)可調(diào)度多道任務(wù),簡(jiǎn)化用戶編程,提高運(yùn)行的安全性等等。
   ·頭文件中定義宏、說(shuō)明復(fù)雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機(jī)的系列化產(chǎn)品的開發(fā);
2、HEX文件
  建立了第一個(gè)單片機(jī)C語(yǔ)言項(xiàng)目,但為了讓編譯好的程序能通過(guò)編程器寫入51芯 片中,要先用編譯器生成HEX文件
3、C 編譯器所支持的注釋語(yǔ)句:
   一種是以“//”符號(hào)開始的語(yǔ)句,符號(hào)之后 的語(yǔ)句都被視為注釋,直到有回車換行。另一種是在“/*”和“*/”符號(hào)之內(nèi)的為注釋。注 釋不會(huì)被 C 編譯器所編譯。
4、main函數(shù):
   一個(gè) C 應(yīng)用程序中應(yīng)有一個(gè) main 主函數(shù),main 函數(shù)能調(diào)用別的功能函數(shù),但其它功能函數(shù)不允許調(diào)用 main 函數(shù)。不論 main 函數(shù)放在程序中的那個(gè)位置, 總是先被執(zhí)行。
5、最小系統(tǒng)
   其中加了一個(gè)電阻和一個(gè) LED,用以顯示它的狀態(tài),晶體震蕩器能根據(jù)自己的情況使用, 一般實(shí)驗(yàn)板上是用 11.0592MHz 或 12MHz,使用前者的好外是能產(chǎn)生標(biāo)準(zhǔn)的串行口波特率,后 者則一個(gè)機(jī)器周期為 1 微秒,便于做精確定時(shí)。
二、C51常量

1、常量數(shù)據(jù)類型說(shuō)明:
   (1)整型常量能表示為十進(jìn)制如 123,0,-89 等。十六進(jìn)制則以 0x 開頭如 0x34,-0x3B 等。長(zhǎng)整型就在數(shù)字后面加字母 L,如 104L,034L,0xF340 等。
   (2)浮點(diǎn)型常量可分為 十進(jìn) 制和指數(shù)表示形式。指數(shù)表 示形式為[±]數(shù)字[.數(shù)字]e[±]數(shù)字,[]中的內(nèi)容為可選項(xiàng),其中內(nèi)容根據(jù)具體情 況可有可無(wú),但其余部分必須有,如125e3,7e9,-3.0e-3。
   (3)字符型常量是單引號(hào)內(nèi)的字符,如‘a(chǎn)’,‘d’等,不能顯示的控制字符,能 在該字符前面加一個(gè)反斜杠“\”組成專用轉(zhuǎn)義字符。常用轉(zhuǎn)義字符表請(qǐng)看表
轉(zhuǎn)義字符 含義 ASCII 碼(16/10 進(jìn)制)
\o 空字符(NULL) 00H/0
\n 換行符(LF) 0AH/10
\r 回車符(CR) 0DH/13
\t 水平制表符(HT) 09H/9
\b 退格符(BS) 08H/8
\f 換頁(yè)符(FF) 0CH/12
\' 單引號(hào) 27H/39

\" 雙引號(hào) 22H/34
\\ 反斜杠 5CH/92
  (4)字符串型常量由雙引號(hào)內(nèi)的字符組成,如“test”,“OK”等。當(dāng)引號(hào)內(nèi)的沒有字 符時(shí),為空字符串。在使用特殊字符時(shí)同樣要使用轉(zhuǎn)義字符如雙引號(hào)。在 C 中字符 串常量是做為字符類型數(shù)組來(lái)處理的,在存儲(chǔ)字符串時(shí)系統(tǒng)會(huì)在字符串尾部加上\o 轉(zhuǎn)義字符以作為該字符串的結(jié)束符。字符串常量“A”和字符常量‘A’是不一樣的, 前者在存儲(chǔ)時(shí)多占用一個(gè)字節(jié)的字間。
   (5)位標(biāo)量,它的值是一個(gè)二進(jìn)制。
2、應(yīng)用
  常量可用在不必改變值的場(chǎng)合,如固定的數(shù)據(jù)表,字庫(kù)等。常量的定義方式有幾種,下面來(lái)加以說(shuō)明。
  #difine False 0x0;//用預(yù)定義語(yǔ)句能定義常量
  #difine True 0x1;//這里定義 False 為 0,True 為 1
  //在程序中用到 False 編譯時(shí)自動(dòng)用 0 替換,同理 True 替換為 1
  unsigned int code a=100;//這一句用 code 把 a 定義在程序存儲(chǔ)器中并賦值
  const unsigned int c=100;//用 const 定義 c 為無(wú)符號(hào) int 常量并賦值 以上兩句它們的值都保存在程序存儲(chǔ)器中,而程序存儲(chǔ)器在運(yùn)行中是不允許被修改的,所以如果在這兩句后面用了類似 a=110,a++這樣的賦值語(yǔ)句,編譯時(shí)將會(huì)出錯(cuò)。
三、C51變量

1、變量格式
  [存儲(chǔ)種類] 數(shù)據(jù)類型 [存儲(chǔ)器類型] 變量名表
  在定義格式中除了數(shù)據(jù)類型和變量名表是必要的,其它都是可選項(xiàng)。

2、存儲(chǔ)種類    
  存儲(chǔ)種類有四種:自動(dòng)(auto),外部(extern),靜態(tài)(static)和寄存器(register),缺省類型為自動(dòng)(auto)。
(1)static(靜態(tài)局部)變量
   在程序整個(gè)運(yùn)行期間都不會(huì)釋放內(nèi)存。如果定義局部變量的時(shí)候不賦值,則編譯的時(shí)候自動(dòng)賦值為0。而對(duì)于自動(dòng)變量而言,定義的時(shí)候不賦值,則是一個(gè)不確定的值。其他函數(shù)不能引用。
(2)用extern聲明外部變量
   一個(gè)程序能由多個(gè)源程序文件組成。如果一個(gè)程序中需要引用另外一個(gè)文件中已經(jīng)定義的外部變量,就需要使用extern來(lái)聲明。
    例: 一個(gè)文件中:   int abc;
       另外一個(gè)文件中: extern abc;
3、數(shù)據(jù)類型
(1)數(shù)據(jù)類型
數(shù)據(jù)類型
長(zhǎng)    度
值    域
unsigned  char
單字節(jié)
0~255
signed  char
單字節(jié)
-128~+127
unsigned  int
雙字節(jié)
0~65535
signed  int
雙字節(jié)
-32768~+32767
unsigned  long
四字節(jié)
0~4294967295
signed  long
四字節(jié)
-2147483648~+2147483647
float
四字節(jié)
±1.175494E-38~±3.402823E+38
*
1~3 字節(jié)
對(duì)象的地址
bit
0 或 1
sfr
單字節(jié)
0~255
sfr16
雙字節(jié)
0~65535
sbit
0 或 1
  字節(jié)中最高位字節(jié)表示數(shù)據(jù)的符號(hào),“0”表示正數(shù),“1”表示負(fù)數(shù), 負(fù)數(shù)用補(bǔ)碼表示。
(2)特殊
   bit 位標(biāo)量是 c51 編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個(gè)位標(biāo)量,但不能定義 位指針,也不能定義位數(shù)組。它的值是一個(gè)二進(jìn)制位,不是 0 就是 1,類似一些高級(jí)語(yǔ) 言中的 Boolean 類型中的 True 和 False。
   sfr 也是一種擴(kuò)充數(shù)據(jù)類型,點(diǎn)用一個(gè)內(nèi)存單元,值域?yàn)?0~255。利用它能訪問(wèn) 51 單片機(jī)內(nèi)部的所有特殊功能寄存器。
   sfr16 占用兩個(gè)內(nèi)存單元,值域?yàn)?0~65535。sfr16 和 sfr 一樣用于操作特殊功能寄存 器,所不一樣的是它用于操作占兩個(gè)字節(jié)的寄存器,如定時(shí)器 T0 和 T1。sfr16 T2 = 0xCC; //這里定義8052定時(shí)器2,地址為T2L=CCH,T2H=CDH。用sfr16定義16位特殊功能寄存器時(shí),等號(hào)后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定時(shí)器0和1的定義。
   sbit 同樣是 單片機(jī)c語(yǔ)言 中的一種擴(kuò)充數(shù)據(jù)類型,利用它能訪問(wèn)芯片內(nèi)部的 RAM 中的可尋址位或特殊功能寄存器中的可尋址位。如先前定義了sfr P1=0x90;//因 P1 端口的寄存器是可位尋址的,所以能定義sbit P1_1=P1^1;//P1_1 為 P1 中的 P1.1 引腳。同樣我們能用 P1.1 的地址去寫,如 sbit P1_1=0x91;這樣在以后的程序語(yǔ)句中就能用 P1_1 來(lái)對(duì) P1.1 引腳進(jìn)行讀寫操作了。
(3)重新定義數(shù)據(jù)類型的的語(yǔ)句typedef
  typedef 的語(yǔ)法:typedef 已有的數(shù)據(jù)類型 新的數(shù)據(jù)類型名
  樣寫:typedef  int  integer; integer  a,b;
   typedef 不能直接用來(lái)定義變量,它只是對(duì)已有的數(shù)據(jù)類型作一個(gè)名字上的置換,并不是產(chǎn)生一個(gè)新的數(shù)據(jù)類型。
4、存儲(chǔ)器類型
    指定該變量在單片機(jī)c語(yǔ)言硬件系統(tǒng)中所使用的存儲(chǔ)區(qū)域,并在編譯時(shí)準(zhǔn)確的定位。
存儲(chǔ)器類型說(shuō)明
data 直接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器(128字節(jié)),訪問(wèn)速度最快
bdata 可位尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器(16字節(jié)),允許位與字節(jié)混合訪問(wèn)
idata 間接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器(256字節(jié)),允許訪問(wèn)全部?jī)?nèi)部地址
pdata 分頁(yè)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器(256字節(jié)),用MOVX @Ri指令訪問(wèn)
xdata 外部數(shù)據(jù)存儲(chǔ)器(64KB),用MOVX @DPTR指令訪問(wèn)
code 程序存儲(chǔ)器(64KB),用MOVC @A+DPTR指令訪問(wèn)
  注意的是在AT89c51芯片中RAM只有低128位,位于80H到FFH的高128位則在52芯片中才有用,并和特殊寄存器地址重疊。如果省略存儲(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)的。
(1)特殊寄存器(SFR)的地址
   AT89C51特殊功能寄存器列表(適用于同一架構(gòu)的芯片)
符 號(hào)
地 址
注 釋
*ACC
E0H
累加器
*B
F0H
乘法寄存器
*PSW
D0H
程序狀態(tài)字
SP
81H
堆棧指針
DPL
82H
數(shù)據(jù)存儲(chǔ)器指針低8位
DPH
83H
數(shù)據(jù)存儲(chǔ)器指針高8位
*IE
A8H
中斷允許控制器
*IP
D8H
中斷優(yōu)先控制器
*P0
80H
端口0
*P1
90H
端口1
*P2
A0H
端口2
*P3
B0H
端口3
PCON
87H
電源控制及波特率選擇
*SCON
98H
串行口控制器
SBUF
99H
串行數(shù)據(jù)緩沖器
*TCON
88H
定時(shí)器控制
TMOD
89H
定時(shí)器方式選擇
TL0
8AH
定時(shí)器0低8位
TL1
8BH
定時(shí)器1低8位
TH0
8CH
定時(shí)器0高8位
TH1
8DH
定時(shí)器1高8位
帶*號(hào)的特殊功能寄存器都是可以位尋址的寄存器

(2)數(shù)據(jù)存儲(chǔ)模式
   ①Small模式:所有缺省變量參數(shù)均裝入內(nèi)部RAM,優(yōu)點(diǎn)是訪問(wèn)速度快,缺點(diǎn)是空間有限,只適用于小程序。
   ②Compact模式:所有缺省變量均位于外部RAM區(qū)的一頁(yè)(256Bytes),具體哪一頁(yè)可由P2口指定,在STARTUP.A51文件中說(shuō)明,也可用pdata指定,優(yōu)點(diǎn)是空間較Small為寬裕速度較Small慢,較large要快,是一種中間狀態(tài)。
   ③large模式:所有缺省變量可放在多達(dá)64KB的外部RAM區(qū),優(yōu)點(diǎn)是空間大,可存變量多,缺點(diǎn)是速度較慢。
5、Keil c51指針變量
  單片機(jī)c語(yǔ)言支持一般指針(Generic Pointer)和存儲(chǔ)器指針(Memory_Specific Pointer)。
  (1)一般指針
   一般指針的聲明和使用均與標(biāo)準(zhǔn)C相同,不過(guò)同時(shí)還能說(shuō)明指針的存儲(chǔ)類型,例如:char * xdata ptr;ptr為一個(gè)指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū)。一般指針本身用3個(gè)字節(jié)存放,分別為存儲(chǔ)器類型,高位偏移,低位偏移量。

  (2)存儲(chǔ)器指針
   基于存儲(chǔ)器的指針說(shuō)明時(shí)即指定了存貯類型,例如:char data * str;str指向data區(qū)中char型數(shù)據(jù);這種指針存放時(shí),只需一個(gè)字節(jié)或2個(gè)字節(jié)就夠了,因?yàn)橹恍璐娣牌屏俊?/font>
  (3)指針轉(zhuǎn)換
  當(dāng)基于存儲(chǔ)器的指針作為一個(gè)實(shí)參傳遞給需要一般指針的函數(shù)時(shí),指針自動(dòng)轉(zhuǎn)化。如果不說(shuō)明外部函數(shù)原形,基于存儲(chǔ)器的指針自動(dòng)轉(zhuǎn)化為一般指針,導(dǎo)致錯(cuò)誤,因而請(qǐng)用“#include”說(shuō)明所有函數(shù)原形。
6、單片機(jī)c語(yǔ)言中變量的空間分配幾個(gè)方法
  (1)data區(qū)空間小,所以只有頻繁用到或?qū)\(yùn)算速度要求很高的變量才放到data區(qū)內(nèi),比如for循環(huán)中的計(jì)數(shù)值。
   data區(qū)內(nèi)最好放局部變量。局部變量空間在退出該函數(shù)是就釋放,當(dāng)然靜態(tài)局部變量除外,其內(nèi)存使用方式與全局變量相同;
  (2)確保你的程序中沒有未調(diào)用的函數(shù)。在Keil C里遇到未調(diào)用函數(shù),編譯器就將其認(rèn)為可能是中斷函數(shù)。函數(shù)里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。
  (3)程序中遇到的邏輯標(biāo)志變量能定義到bdata中,能大大降低內(nèi)存占用空間。
  (4)其他不頻繁用到和對(duì)運(yùn)算速度要求不高的變量都放到xdata區(qū)。如果想節(jié)省data空間就必須用large模式,將未定義內(nèi)存位置的變量全放到xdata區(qū)。當(dāng)然最好對(duì)所有變量都要指定內(nèi)存類型。
  (5)當(dāng)使用到指針時(shí),要指定指針指向的內(nèi)存類型。未定義指向內(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;
四、C51運(yùn)算符和表達(dá)式

  運(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ì)象所組成的具有特定含義的式子。表達(dá)式后面加“;”號(hào)就構(gòu)成了一個(gè)表達(dá)式語(yǔ)句。
1、運(yùn)算符和表達(dá)式
  ①賦值運(yùn)算符:變量=表達(dá)式;
  ②算術(shù)運(yùn)算符:+,/,-,*,%;除法運(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ùn)算符,-- 減量運(yùn)算符。這兩個(gè)運(yùn)算符是 C 語(yǔ)言中特有的一種運(yùn)算符。在 VB,PASCAL 等都是沒有的。I++(或I--)是先使用I的值,再執(zhí)行 I+1(或 I-1);++I(或--I)是先執(zhí)行I+1(或 I-1),再使用I的值。
  ④關(guān)系運(yùn)算符:>,<,>=,<=,==,!=。“==”在 VB 或 PASCAL 等中是用“=”,“!=”則是用“not”。
  ⑤邏輯運(yùn)算符:邏輯與:條件式1&&條件式2;邏輯或:條件式1||條件式2;邏輯非: !條件式2。注意的是用邏輯運(yùn)算符的運(yùn)算結(jié)果只有0和1兩種,也就是邏輯的真與假,換句話說(shuō)也就是邏輯量。
  ⑥位運(yù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)行操作的。
  ⑦復(fù)合賦值運(yùn)算符:在賦值運(yùn)算符“=”的前面加上其他運(yùn)算符。+=,-=,*=,/=,>>=,&=,|=,^=,%=,!=,<<=。a+=56等價(jià)于a=a+56;y/=x+9 等價(jià)于y=y/(x+9)。
  ⑧逗號(hào)運(yùn)算符
  ⑨條件運(yùn)算符:邏輯表達(dá)式? 表達(dá)式1 : 表達(dá)式2。當(dāng)邏輯表達(dá)式的值為真時(shí)(非0值)時(shí),整個(gè)表達(dá)式的值為表達(dá)式1的值;當(dāng)邏輯表達(dá)式的值為假(值為0)時(shí),整個(gè)表達(dá)式的值為表達(dá)式2的值。
  ⑩指針和地址運(yùn)算符:*: 取內(nèi)容;&:取地址;取內(nèi)容和地址的一般形式分別為:變量=*指針變量;指針變量=&目標(biāo)變量。  ⑪sizeof 運(yùn)算符:語(yǔ)法:sizeof(數(shù)據(jù)類型)。例句:printf("char 是多少個(gè)字節(jié)?½字節(jié)\n",sizeof(char)),結(jié)果是:char 是多少個(gè)字節(jié)?1字節(jié)。
  ⑫強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:語(yǔ)句:(類型) 表達(dá)式。
注:程序進(jìn)行編譯時(shí)由編譯器自動(dòng)去處理完成的轉(zhuǎn)換稱為隱式轉(zhuǎn)換。其規(guī)則如下:
  變量賦值時(shí)發(fā)生的隱式轉(zhuǎn)換,“=”號(hào)右邊的表達(dá)式的數(shù)據(jù)類型轉(zhuǎn)換成左邊變量的數(shù)據(jù)類型。
  所有 char 型的操作數(shù)轉(zhuǎn)換成 int 型。
  兩個(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 類型。
  
2、運(yùn)算符優(yōu)先級(jí)和結(jié)合性
級(jí)別
類 別
名 稱
運(yùn)算符
結(jié)合性
1
強(qiáng)制轉(zhuǎn)換、數(shù)組、結(jié)構(gòu)、聯(lián)合
強(qiáng)制類型轉(zhuǎn)換

下標(biāo)

存取結(jié)構(gòu)或聯(lián)合成員

( )

[ ]

->或.

右結(jié)合
2
邏 輯

字 位

增 量

減 量

指 針

算 術(shù)

長(zhǎng)度計(jì)算

邏輯非

按位取反

加一

減一

取地址、取內(nèi)容

單目減

長(zhǎng)度計(jì)算

!

~

++

--

&、*

-

sizeof

左結(jié)合
3
算 術(shù)


取模

*

/

%


右結(jié)合

4
算術(shù)和指針運(yùn)算


+

-

右結(jié)合


5
字 位
左移

右移

<<

>>

右結(jié)合


6
關(guān)系
大于等于

大于

小于等于

小于

>=

>

<=

<


右結(jié)合

7
關(guān)系
恒等于

不等于

==

!=

右結(jié)合


8
字 位
按位與
&
右結(jié)合
9
字 位
按位異或
^
右結(jié)合
10
字 位
按位或
|
右結(jié)合
11
邏 輯
邏輯與
&&
左結(jié)合
12
邏 輯
邏輯或
||
左結(jié)合
13
條 件
條件運(yùn)算
?:
左結(jié)合
14
賦 值
賦值

復(fù)合賦值

=

Op=

左結(jié)合
15
逗 號(hào)
逗號(hào)運(yùn)算
,
右結(jié)合

五、C51表達(dá)式語(yǔ)句

1、不一樣的程序設(shè)計(jì)語(yǔ)言都會(huì)有不一樣的表達(dá)式語(yǔ)句,如VB就是在表達(dá)式后面加入回車就構(gòu)成了VB 的表達(dá)式語(yǔ)句,而在51單片機(jī)的C語(yǔ)言中則是加入分號(hào)“;”構(gòu)成表達(dá)式語(yǔ)句。
2、一個(gè)特殊的表達(dá)式語(yǔ)句,稱為空語(yǔ)句
  通常用
while,for 構(gòu)成的循環(huán)語(yǔ)句后面加一個(gè)分號(hào),形成一個(gè)不執(zhí)行其它操作的空循環(huán)體。
  示例:#include  <AT89x51.h>
       void  main(void)
       { unsigned  int  a;
         do
          {
           P1  =  0xFF;  //關(guān)閉 P1 上的 LED
           while(P3_7);  //空語(yǔ)句,等待 P3_7 按下為低電平,低電平時(shí)執(zhí)行下面的語(yǔ)句 P1  =  0;  //點(diǎn)亮 LED
           for(;a<60000;a++);  //這也是空語(yǔ)句的使用方法,注意 a 的初值為當(dāng)前值
           }  //這樣第一次按下時(shí)會(huì)有一延時(shí)點(diǎn)亮一段時(shí)間,以后按多久就亮多久
         while(1);  //點(diǎn)亮一段時(shí)間后關(guān)閉再次判斷 P3_7,如此循環(huán)
        }
3、復(fù)合語(yǔ)句:將若干條語(yǔ)句組合在一起形成一種功能塊,這種由若干條語(yǔ)句組合 而成的語(yǔ)句就叫復(fù)合語(yǔ)句。它內(nèi)部的各條語(yǔ)句還是需要以分號(hào)“;” 結(jié)束。復(fù)合語(yǔ)句是允許嵌套的。對(duì)于一個(gè)函數(shù)而言,函數(shù)體就是一個(gè)復(fù)合語(yǔ)句,也許大家會(huì)因 此知道復(fù)合語(yǔ)句中不單能用可執(zhí)行語(yǔ)句組成,還能用變量定義語(yǔ)句組成。
4、條件語(yǔ)句:
  C 語(yǔ)言供給了 3 種形式的條件語(yǔ)句:
  ①if(條件表達(dá)式) 語(yǔ)句。當(dāng)條件表達(dá)式的結(jié)果為真時(shí),就執(zhí)行語(yǔ)句,不然就跳過(guò)。 如if(a==b) a++; 當(dāng)a等于b時(shí),a就加1
  ②if(條件表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2。當(dāng)條件表達(dá)式成立時(shí),就執(zhí)行語(yǔ)句1,不然就執(zhí)行語(yǔ)句2。如if(a==b) a++;else a--;當(dāng)a等于b時(shí),a加1,不然a-1。
  ③if(條件表達(dá)式1) 語(yǔ)句1;
   else if(條件表達(dá)式2) 語(yǔ)句2;
   else if(條件表達(dá)式3) 語(yǔ)句3;
   else if(條件表達(dá)式m) 語(yǔ)句n;
   else 語(yǔ)句m;
5、開關(guān)語(yǔ)句:
  語(yǔ)法:switch(表達(dá)式)

       {case 常量表達(dá)式1: 語(yǔ)句1;break;
        case 常量表達(dá)式2: 語(yǔ)句2;break;
        case 常量表達(dá)式3: 語(yǔ)句3;break;
        case 常量表達(dá)式n: 語(yǔ)句n;break;
        default:語(yǔ)句}

6、循環(huán)語(yǔ)句:在C語(yǔ)言中構(gòu)成循環(huán)控制的語(yǔ)句有while,do-while,for和goto語(yǔ)句。
(1)goto語(yǔ)句
   一個(gè)無(wú)條件的轉(zhuǎn)向語(yǔ)句。語(yǔ)法:goto 語(yǔ)句標(biāo)號(hào); 其中的語(yǔ)句標(biāo)號(hào)為一個(gè)帶冒號(hào)的標(biāo)識(shí)符。示例如下:

    void  main(void)
    {
      unsigned  char  a;
      start:  a++;
      if  (a==10)  goto  end;
      goto  start;
      end:;
    }

   常見的 goto 語(yǔ)句使用方法是用它來(lái)跳出多重循環(huán),不過(guò)它只能從內(nèi)層循環(huán) 跳到外層循環(huán),不能從外層循環(huán)跳到內(nèi)層循環(huán)。(2)while語(yǔ)句
   語(yǔ)法:while(條件表達(dá)式) 語(yǔ)句;
   當(dāng)條件表達(dá)式為真時(shí),它才執(zhí)行后面的語(yǔ)句,執(zhí)行完后再次回到 while 執(zhí)行條件判斷,為真時(shí)重復(fù)執(zhí)行語(yǔ)句,為假時(shí)退出循環(huán)體。當(dāng)條件一開始就為假時(shí), 那么 while 后面的循環(huán)體(語(yǔ)句或復(fù)合語(yǔ)句)將一次都不執(zhí)行就退出循環(huán)。在調(diào)試程序時(shí)要注意 while 的判斷條件不能為假而造成的死循環(huán),調(diào)試時(shí)適當(dāng)?shù)脑?while 處加入斷點(diǎn),也許 會(huì)使你的調(diào)試工作更加順利。
(3)do while語(yǔ)句
   語(yǔ)法:do  語(yǔ)句  while(條件表達(dá)式);
   先執(zhí)行循環(huán)體,再根據(jù)條件判斷是否要退出循環(huán)。
(4)for語(yǔ)句
        for([初值設(shè)定表達(dá)式];[循環(huán)條件表達(dá)式];[條件更新表達(dá)式]) 語(yǔ)句;語(yǔ)句中括號(hào)中的表達(dá)式是可選的。
7、continue 語(yǔ)句(也叫中斷語(yǔ)句)
  一個(gè)無(wú)條件跳轉(zhuǎn)語(yǔ)句。作用是結(jié)束本次循環(huán),跳過(guò)循環(huán)體中沒有執(zhí)行的語(yǔ)句,跳轉(zhuǎn)到下一次循環(huán)周期。和前面說(shuō)到的break語(yǔ)句有所不一樣,continue執(zhí)行后不是跳出循環(huán),而是跳到循環(huán)的開始并執(zhí)行下一次的循環(huán)。
8、return語(yǔ)句
   語(yǔ)法:return (表達(dá)式);返回時(shí)先計(jì)算表達(dá)式,再返回表達(dá)式的值。不帶表達(dá)式則返回的值不確定。
六、C51函數(shù)

1、函數(shù)的定義
  定義的模式如下:
    函數(shù)類型 函數(shù)名稱(形式參數(shù)表)
   {
     函數(shù)體
    }
   函數(shù)類型是說(shuō)明所定義函數(shù)返回值的類型。返回值其實(shí)就是一個(gè)變量,只要按變量類型來(lái)定義函數(shù)類型就行了。如函數(shù)不需要返回值函數(shù)類型能寫作“void”表示該函數(shù)沒 有返回值。注意的是函數(shù)體返回值的類型一定要和函數(shù)類型一致。形式參數(shù)是指調(diào)用函數(shù)時(shí)要傳入到函數(shù)體內(nèi)參與運(yùn)算的變量,它能有一個(gè)、幾個(gè)或沒有,當(dāng)不需要形式參數(shù)也就是無(wú)參函數(shù),括號(hào)內(nèi)能為空或?qū)懭搿皏oid”表示,但括號(hào)不能少。函數(shù)體中能包含有局部變量的定義和程序語(yǔ)句,如函數(shù)要返回運(yùn)算值則要使用return語(yǔ)句進(jìn)行返回。在函數(shù)的{}號(hào)中也能什么也不寫,這就成了空函數(shù),在一個(gè)程序項(xiàng)目中能寫一些空函數(shù),在以后的修改和升級(jí)中能方便的在這些空函數(shù)中進(jìn)行功能擴(kuò)充。
2、函數(shù)調(diào)用
  (1)在調(diào)用函數(shù)前,必須對(duì)函數(shù)的類型進(jìn)行說(shuō)明,就算是標(biāo)準(zhǔn)庫(kù)函數(shù)也不例外。標(biāo)準(zhǔn)庫(kù)函數(shù)的說(shuō)明會(huì)被按功能分別寫在不一樣的頭文件中,使用時(shí)只要在文件最前面用#include< .h> 預(yù)處理語(yǔ)句引入相應(yīng)的頭文件。
     (2)函數(shù)語(yǔ)句。如printf("Hello World!\n"); 這是在我們的第一個(gè)程序中出現(xiàn)的,它以"Hello World!\n"為參數(shù)調(diào)用printf這個(gè)庫(kù)函數(shù)。在這里函數(shù)調(diào)用被看作了一條語(yǔ)句。
     (3)函數(shù)參數(shù)如 temp=StrToInt(CharB(16));CharB 的返回值作為 StrToInt 函數(shù)的實(shí)際參數(shù)傳遞。
  (4)函數(shù)表達(dá)式:temp=Count();這樣一句,這個(gè)時(shí)候函數(shù)的調(diào)用作為一個(gè)運(yùn)算對(duì)象出現(xiàn)在表達(dá)式中,能稱為函數(shù)表達(dá)式。
     (5)調(diào)用的是自定義的函數(shù)則要用如下形式編寫函數(shù)類型說(shuō)明:類型標(biāo)識(shí)符 函數(shù)的名稱(形式參數(shù)表); 這樣的說(shuō)明方式是用在被調(diào)函數(shù)定義和主調(diào)函數(shù)是在同一文件中。
  (6)寫到 文件名.h  的文件中用#include "文件名.h"引入。
     如果被調(diào)函數(shù)的定義和主調(diào)函數(shù)不是在同 一文件中的,則要用如下的方式進(jìn)行說(shuō)明,說(shuō)明被調(diào)函數(shù)的定義在同一項(xiàng)目的不一樣文件之上
extern 類型標(biāo)識(shí)符 函數(shù)的名稱(形式參數(shù)表);
3、中斷服務(wù)函數(shù)
  擴(kuò)展的關(guān)鍵字是 interrupt,它是函數(shù)定義時(shí)的一個(gè)選項(xiàng)。
   形式:函數(shù)類型 函數(shù)名(形式參數(shù)) interrupt n [using n]
AT89C51芯片中斷號(hào)和中斷向量
中斷號(hào) 中斷源 中斷向量
0 外部中斷 0 0003H
1 定時(shí)器/計(jì)數(shù)器 0 000BH
2 外部中斷 1 0013H
3 定時(shí)器/計(jì)數(shù)器 1 001BH
4 串行口 0023H
  例:

  1. #include <at89x51.h>
  2. unsigned char P3State(void); //函數(shù)的說(shuō)明,中斷函數(shù)不用說(shuō)明
  3. void main(void)
  4. {
  5. IT0 = 0; //設(shè)外部中斷 0 為低電平觸發(fā)
  6. EX0 = 1; //允許響應(yīng)外部中斷 0
  7. EA = 1; //總中斷開關(guān)
復(fù)制代碼
七、C51數(shù)組的使用

   例:unsigned int xcount [10]; //定義無(wú)符號(hào)整形數(shù)組,有 10 個(gè)數(shù)據(jù)單元
     char inputstring [5]; //定義字符形數(shù)組,有 5 個(gè)數(shù)據(jù)單元
     float outnum [10],[10];//定義浮點(diǎn)型數(shù)組,有 100 個(gè)數(shù)據(jù)單元
     unsigned char LEDNUM[2]={12,35}; //一維數(shù)組賦初值
     int Key[2][3]={{1,2,4},{2,2,1}}; //二維數(shù)組賦初值
     unsigned char IOStr[]={3,5,2,5,3}; //沒有指定數(shù)組長(zhǎng)度,編譯器自動(dòng)設(shè)置
     unsigned char code skydata[]={0x02,0x34,0x22,0x32,0x21,0x12}; //數(shù)據(jù)保存在 code 區(qū)

八、C51指針的使用

  指針變量的內(nèi)容是另一個(gè)變量的地址,地址所屬的變量稱為指針變量所指向的變量。
  方法是先用&STR 取變量地址并賦于 STRIP 指針變量,然后就能用*STRIP 來(lái)對(duì) STR 進(jìn)行訪問(wèn)了。‘*’是指針運(yùn)算符,用它能取得指針變量所指向的地址的值。
   形式:數(shù)據(jù)類型 [存儲(chǔ)器類型] *變量名;
  例: unsigned char xdata *pi;//指針會(huì)占用二字節(jié),指針自身存放在編譯器默認(rèn)存儲(chǔ)區(qū),指向xdata存儲(chǔ)區(qū)的char類型
     unsigned char xdata * data pi; //除指針自身指定在 data 區(qū),其它同上
     int * pi; //定義為一般指針,指針自身存放在編譯器默認(rèn)存儲(chǔ)區(qū),占三個(gè)字節(jié)
  指針變量最大的值為 0xFFFF,這樣就決定了一般指針在內(nèi)存會(huì)占用3個(gè)字節(jié),第一字節(jié)存放該指針存儲(chǔ)器類型編碼,后兩個(gè)則存放該指針的高低位址。而基于存儲(chǔ)器的指針因?yàn)椴挥米R(shí)別存儲(chǔ)器類型所以會(huì)占一或二個(gè)字節(jié),idata,data,pdata存儲(chǔ)器指針占一個(gè)字節(jié),code,xdata則會(huì)占二個(gè)字節(jié)。
九、C51結(jié)構(gòu)、聯(lián)合和枚舉的使用

1、結(jié)構(gòu):
一種數(shù)據(jù)的集合體
(1)結(jié)構(gòu)類型一般定義格式:struct 結(jié)構(gòu)名 {結(jié)構(gòu)元素表};
    例:truct FileInfo{unsigned char FileName[4]; unsigned long Date; unsigned int Size;}
(2)定義結(jié)構(gòu)變量格式:struct 結(jié)構(gòu)名 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2,……結(jié)構(gòu)變量N;
    例:struct FileInfo NewFileInfo, OleFileInfo;
   只有結(jié)構(gòu)變量才能參與程序的執(zhí)行,結(jié)構(gòu)類型只是用于說(shuō)明結(jié)構(gòu)變量是屬于那一種結(jié)構(gòu)。通過(guò)上面的定義 NewFileInfo 和 OleFileInfo 都是 FileInfo 結(jié)構(gòu),都具有一個(gè)字符型數(shù)組一個(gè)長(zhǎng)整型和一個(gè)整形數(shù)據(jù)。定義結(jié)構(gòu)類型只是給出了這個(gè)結(jié)構(gòu)的組織形式,它不會(huì)占用存儲(chǔ)空間,也就說(shuō)結(jié)構(gòu)名是不能進(jìn)行賦值和運(yùn)算等操作的。結(jié)構(gòu)變量則是結(jié)構(gòu)中的具體成員, 會(huì)占用空間,能對(duì)每個(gè)成員進(jìn)行操作。結(jié)構(gòu)是允許嵌套的,也就是說(shuō)在定義結(jié)構(gòu)類型時(shí),結(jié)構(gòu)的元素能由另一個(gè)結(jié)構(gòu)構(gòu)成。
    例: struct clock{unsigned char sec, min, hour;}
       struct date{
           unsigned int year;
           unsigned char month,day;
           struct clock Time; //這是結(jié)構(gòu)嵌套
          }
       struct date NowDate; //定義 data 結(jié)構(gòu)變量名為 NowDate
  (3)引用、賦值
    格式:結(jié)構(gòu)變量名.結(jié)構(gòu)元素。
    要存取上例結(jié)構(gòu)變量中的月份時(shí),就要寫成 NowDate.year=2021

    NowDate.Time.min++; //分針加 1,嵌套時(shí)只能引用最低一級(jí)元素一個(gè)結(jié)構(gòu)變量中元素的名字能和程序中其他地方使用的變量同名,因?yàn)樵厥菍儆谒诘慕Y(jié)構(gòu)中,使用時(shí)要用成員運(yùn)算符指定。
  (4)其他定義方式
   struct{結(jié)構(gòu)元素表} 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2……結(jié)構(gòu)變量名N;
   例:struct{unsigned char FileName[4]; unsigned long Date; unsigned int Size;} NewFileInfo, OleFileInfo;
   這一種定義方式定義沒有使用結(jié)構(gòu)名,稱為無(wú)名結(jié)構(gòu)。通常會(huì)用于程序中只有幾個(gè)確定 的結(jié)構(gòu)變量的場(chǎng)合,不能在其它結(jié)構(gòu)中嵌套。
   struct 結(jié)構(gòu)名{結(jié)構(gòu)元素表} 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2……結(jié)構(gòu)變量名N;
   例:struct FileInfo{unsigned char FileName[4]; unsigned long Date; unsigned int Size;} NewFileInfo, OleFileInfo;
   使用結(jié)構(gòu)名能便于閱讀程序和便于以后要在定義其它結(jié)構(gòu)中使用。
2、枚舉:把某些整型常量的集合用一個(gè)名字表示,其中的整型常量就是這種枚舉類型變量的可取的合法值。
   (1)定義格式
         enum 枚舉名 {枚舉值列表} 變量列表;例:enum TFFlag {False, True} TFF;
         enum 枚舉名 {枚舉值列表}; emum 枚舉名 變量列表;例:enum Week {Sun,Mon,Tue,Wed,Thu,Fri,Sat};enum Week OldWeek,NewWeek;
   (2)在枚舉列表中,每一項(xiàng)名稱代表一個(gè)整數(shù)值,在默認(rèn)的情況下,編譯器會(huì)自動(dòng)為每一項(xiàng)賦值,第一項(xiàng)賦值為0,第二項(xiàng)為1……如Week中的Sun為0,F(xiàn)ri為5。C語(yǔ)言也允許對(duì)各項(xiàng)值做初始化賦值,要注意的是在對(duì)某項(xiàng)值初始化后,它的后續(xù)的各項(xiàng)值也隨之遞增。
          例: enum Week {Mon=1, Tue, Wed, Thu, Fri, Sat, Sun};
3、聯(lián)合
   (1)它和其他結(jié)構(gòu)類型一樣能包含不一樣類型的數(shù)據(jù)元素。所不一樣的是其他類型的數(shù)據(jù)元素都是從同一個(gè)數(shù)據(jù)地址開始存放,結(jié)構(gòu)變量占用的內(nèi) 存大小是該結(jié)構(gòu)中數(shù)據(jù)元素所占內(nèi)存數(shù)的總和,而聯(lián)合變量所占用內(nèi)存大小只是該聯(lián)合中最長(zhǎng)的元素所占用的內(nèi)存大小。
(2)程序先為聯(lián)合中的 int 賦值 1000,后來(lái)又為 char 賦值 10,那么這個(gè)時(shí)候就不能引用int了,不然程序會(huì)出錯(cuò),起作用的是最后一次賦值的元素,而上一次賦值的元素就失效了。使用中還要注意定義聯(lián)合變量時(shí)不能對(duì)它的值初始化、能使用指向聯(lián)合變量的指針對(duì)其操作、聯(lián)合變量不能作為函數(shù)的參數(shù)進(jìn)行傳遞,數(shù)組和結(jié)構(gòu)能出現(xiàn)在聯(lián)合中。
   (3)定義形式:union 結(jié)構(gòu)名{結(jié)構(gòu)元素表};
           union 結(jié)構(gòu)名 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2,……結(jié)構(gòu)變量N;
           union {結(jié)構(gòu)元素表} 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2……結(jié)構(gòu)變量名N;
           union 結(jié)構(gòu)名{結(jié)構(gòu)元素表} 結(jié)構(gòu)變量名1,結(jié)構(gòu)變量名2……結(jié)構(gòu)變量名N;




作者: seco_li    時(shí)間: 2021-8-6 22:01
這個(gè)也太基礎(chǔ)了吧?
作者: muhou    時(shí)間: 2021-8-15 05:46
會(huì)的感覺太基礎(chǔ)1+1=2,但不會(huì)的師兄這篇絕對(duì)好文章,辛苦作者了!
作者: wylyhz999    時(shí)間: 2021-8-17 20:33
非常棒,溫故知新;整理的很好,基礎(chǔ)功扎實(shí)
作者: 況屬高風(fēng)晚    時(shí)間: 2021-8-18 22:27
muhou 發(fā)表于 2021-8-15 05:46
會(huì)的感覺太基礎(chǔ)1+1=2,但不會(huì)的師兄這篇絕對(duì)好文章,辛苦作者了!

贊一個(gè)
作者: zyluglugl    時(shí)間: 2021-8-20 08:58
非常好的文章,對(duì)于我這沒上過(guò)正式學(xué)校的人來(lái)說(shuō)真是好文章,有空時(shí)要經(jīng)常來(lái)看看!
作者: 5428138    時(shí)間: 2021-8-21 15:46

非常好的文章,學(xué)習(xí)了
作者: 敲代碼的小白    時(shí)間: 2021-8-21 23:36
想自學(xué)單片機(jī),目前大二計(jì)算機(jī)學(xué)院學(xué)生
作者: angelheu    時(shí)間: 2021-8-22 16:29
整理的不錯(cuò)
作者: 2301525法國(guó)    時(shí)間: 2021-8-25 21:12
辛苦作者了
作者: caocl2011    時(shí)間: 2021-8-27 13:55
基礎(chǔ)總結(jié)
作者: 用戶2111143    時(shí)間: 2021-8-30 17:00
辛苦作者了!!
作者: 青山0410    時(shí)間: 2021-9-3 14:18
太棒了!基礎(chǔ)牢固才可以更好的編程。
作者: 王秋冬    時(shí)間: 2021-9-4 10:51
這個(gè)必須贊,這是對(duì)于我這個(gè)初學(xué)者太有幫助。
作者: LJMEP    時(shí)間: 2021-9-6 08:31
這篇絕對(duì)好文章,辛苦作者了!這個(gè)必須贊,這是對(duì)于我這個(gè)初學(xué)者太有幫助。
作者: 598698947    時(shí)間: 2021-9-11 16:45
這個(gè)必須贊,這是對(duì)于我這個(gè)初學(xué)者太有幫助。
作者: 二當(dāng)家666    時(shí)間: 2021-9-13 08:25
雖然基礎(chǔ),但是系統(tǒng)且具體,辛苦作者了
作者: zbjllq    時(shí)間: 2021-9-23 11:04
非常好的文章
作者: langzipofeng    時(shí)間: 2021-9-25 01:17
對(duì)新手很有幫助,辛苦了
作者: angalp    時(shí)間: 2021-9-28 10:16
期待后續(xù)篇章,前面的都好基礎(chǔ)!
作者: lsh04    時(shí)間: 2021-10-8 16:12


整理的不錯(cuò),期待后續(xù)篇章,前面的都好基礎(chǔ)!
作者: wkaikai    時(shí)間: 2021-10-9 17:01
在這里真的可以學(xué)到很多很多,很給力
作者: andiwxz    時(shí)間: 2021-10-11 09:01

雖然基礎(chǔ),但是系統(tǒng)且具體,辛苦作者了
作者: 981025    時(shí)間: 2021-10-19 14:41
非常有幫助的帖子
作者: 阿信新    時(shí)間: 2021-10-27 18:42
全是基礎(chǔ),對(duì)初學(xué)者幫助很大
作者: redflaggo    時(shí)間: 2021-10-28 09:32
對(duì)新手很有幫助,辛苦了,多謝樓主
作者: 圓滾滾的發(fā)燒友    時(shí)間: 2021-11-9 20:17
muhou 發(fā)表于 2021-8-15 05:46
會(huì)的感覺太基礎(chǔ)1+1=2,但不會(huì)的師兄這篇絕對(duì)好文章,辛苦作者了!

有理
作者: XIAOTAOTAOYUYU    時(shí)間: 2021-11-16 23:04
感謝,我要好好看看,希望入門輕松點(diǎn)
作者: slikies    時(shí)間: 2021-11-20 15:10
新人報(bào)道

作者: 王梓沿    時(shí)間: 2021-11-20 19:33
正在學(xué)習(xí)  謝謝了  我打印出來(lái)看
作者: 699789    時(shí)間: 2021-11-21 19:57
重新復(fù)習(xí)下,整理的不錯(cuò),謝謝
作者: guoqiang881245    時(shí)間: 2021-11-23 21:32
很好,重新看了下,有些都不記得了啊
作者: a49hf    時(shí)間: 2021-12-3 11:05
重新復(fù)習(xí)下,整理的不錯(cuò),謝謝
作者: 威22    時(shí)間: 2021-12-5 18:19
樓主辛苦了,我得好好學(xué)了
作者: curtain520    時(shí)間: 2021-12-14 21:09
非常感謝,這很有用
作者: sanmaodeai    時(shí)間: 2021-12-19 21:55
兜兜轉(zhuǎn)轉(zhuǎn)十幾年,還是需要重新學(xué)習(xí)基礎(chǔ),因?yàn)?1編程每次都是學(xué)習(xí)一段時(shí)間停止,再學(xué)習(xí)一段時(shí)間停止,所以一直沒長(zhǎng)進(jìn),哎~~~人哪
作者: 860012525    時(shí)間: 2021-12-19 22:38
作為入門用的基礎(chǔ)內(nèi)容相當(dāng)扎實(shí)的感覺
作者: l156613673    時(shí)間: 2021-12-19 23:19
謝謝總結(jié),太贊了
作者: HAPPY3    時(shí)間: 2021-12-23 11:00
沒遂個(gè)解釋,匆匆而過(guò)
作者: 十三境阿良    時(shí)間: 2021-12-28 21:45
收藏一下
作者: 搬磚的漢子    時(shí)間: 2022-1-3 16:18
對(duì)初學(xué)者來(lái)說(shuō)太好了 ,謝謝樓主分享
作者: LiTDou    時(shí)間: 2022-1-3 20:21
很不錯(cuò)的單片機(jī) 基礎(chǔ)知識(shí),留一個(gè)足跡,以后回來(lái)溫顧。
作者: xiaolinwu    時(shí)間: 2022-1-6 23:07
謝謝,辛苦辛苦,看了很受教
作者: lpcyh    時(shí)間: 2022-1-19 09:32
絕對(duì)好文,太實(shí)用了,尤其對(duì)于小白來(lái)說(shuō)簡(jiǎn)直是一本手冊(cè)
作者: Ethan_123    時(shí)間: 2022-1-24 14:17
謝謝,辛苦辛苦,看了很受教
作者: lijiancwd    時(shí)間: 2022-1-28 11:44
非常好的文章,學(xué)習(xí)了。謝謝!
作者: haiming8685    時(shí)間: 2022-2-3 10:31
謝謝樓主,對(duì)初學(xué)者確實(shí)能起到一定作用的
作者: 小釗    時(shí)間: 2022-2-15 09:17
對(duì)于沒有任何基礎(chǔ)的我,覺得好難啊。。。。。嗚嗚~
作者: gosharing    時(shí)間: 2022-2-20 21:52
雖然基礎(chǔ),但對(duì)初學(xué)者幫助很大
作者: szhuide    時(shí)間: 2022-2-21 12:26
剛?cè)腴T的新手正好需要,謝謝樓主
作者: op5726170    時(shí)間: 2022-3-1 13:32
好的知識(shí)居然又忘了,在來(lái)學(xué)一下
作者: rambo.hu    時(shí)間: 2022-3-16 10:09
對(duì)我這種剛?cè)腴T的初學(xué)者,真是概述得太好了!謝謝!
作者: 龍江阿東    時(shí)間: 2022-3-25 10:56
對(duì)新手很有幫助,辛苦了,多謝樓主
作者: Ameridru    時(shí)間: 2022-3-25 19:05
很好的基礎(chǔ)知識(shí),適合初學(xué)者學(xué)習(xí),感謝分享
作者: yqsir    時(shí)間: 2022-3-26 13:55
看完這個(gè)應(yīng)該可以入手,學(xué)到挺多的,真不錯(cuò)
作者: zhyqzhxr    時(shí)間: 2022-3-30 10:03
真好,學(xué)了不少東西。壞感謝樓主。
作者: 越快樂(lè)越墮落    時(shí)間: 2022-4-7 18:31
很不錯(cuò)
作者: seasoul_song    時(shí)間: 2022-4-11 17:57
學(xué)習(xí)了,總結(jié)的很到位。
作者: 723408    時(shí)間: 2022-4-13 09:09
文章不錯(cuò),辛苦了
作者: twj168    時(shí)間: 2022-4-16 13:11
這個(gè)好,很明白
作者: 463328508    時(shí)間: 2022-4-26 07:41
單片機(jī)一直都在想學(xué)習(xí)就是沒有找到好的教材,感謝分享
作者: 15329429060    時(shí)間: 2022-4-26 17:09
太好了,這正是我需要的。謝謝分享!
作者: jinanyuanyue    時(shí)間: 2022-5-12 10:25
好文章,實(shí)用初級(jí)福音,謝謝
作者: overcool503    時(shí)間: 2022-5-17 13:42

這個(gè)必須贊,對(duì)我這個(gè)初學(xué)者由用
作者: 51老鷹    時(shí)間: 2022-7-12 10:57
適合初學(xué)51的,必須贊
作者: xiaohaibo81    時(shí)間: 2022-7-23 10:17
因?yàn)?1編程每次都是學(xué)習(xí)一段時(shí)間停止,所以一直沒長(zhǎng)進(jìn)。還是要多學(xué)習(xí)。
作者: dyx811    時(shí)間: 2022-9-13 13:53
兜兜轉(zhuǎn)轉(zhuǎn),轉(zhuǎn)轉(zhuǎn)兜兜。認(rèn)識(shí)單片機(jī)快18年了。始終 無(wú)法突破!
作者: xiyuan2180    時(shí)間: 2022-9-17 10:57
這個(gè)很好  對(duì)初學(xué)者 不錯(cuò)  學(xué)習(xí)了
作者: ecjd    時(shí)間: 2022-9-24 12:10
基礎(chǔ)不牢,地動(dòng)山搖。好貼!
作者: cnpzj    時(shí)間: 2022-10-22 10:17
我感這篇文章有用,至少對(duì)本人來(lái)說(shuō)。
作者: Longan.Wang    時(shí)間: 2022-11-14 10:44
應(yīng)該是總結(jié)了應(yīng)用C語(yǔ)言對(duì)C51編程,還是不錯(cuò)
作者: rongruo    時(shí)間: 2023-1-12 00:41
我一口氣看完了,身心舒暢。感謝作者的整理!
作者: 小周家電維修    時(shí)間: 2023-2-6 21:43
小白的福音,贊一個(gè)!
作者: 13029345710    時(shí)間: 2023-5-24 18:04
絕對(duì)好文章,小白的知音,辛苦作者了!
作者: lym_tb_1    時(shí)間: 2023-6-28 01:07
辛苦樓主整理,初學(xué)入門很不錯(cuò)
作者: netkingsky    時(shí)間: 2023-7-11 21:21
收藏備讀!
作者: 老頑童63    時(shí)間: 2023-10-13 19:14
對(duì)新手總結(jié)的很好,很有作用
作者: 老頑童63    時(shí)間: 2023-10-13 19:18
對(duì)于我們這些新手指導(dǎo)意義很大
作者: 老頑童63    時(shí)間: 2023-10-13 19:21
感謝,對(duì)新手太有用了
作者: 市井閑叟    時(shí)間: 2023-12-7 19:56
感謝,對(duì)新手太有用了
作者: 小白菜c    時(shí)間: 2024-2-19 14:51
很棒,溫故而知新,謝謝樓主

作者: 8181    時(shí)間: 2024-3-5 22:30
好東西,定位定位,收藏收藏
作者: ly_zhy    時(shí)間: 2024-8-21 15:54
系統(tǒng)且具體,辛苦作者了
作者: gemxie    時(shí)間: 2025-1-12 00:23
會(huì)的感覺太基礎(chǔ)1+1=2,但不會(huì)的師兄這篇絕對(duì)好文章,辛苦作者了!
作者: 15820010996    時(shí)間: 2025-1-12 08:04
整理的不錯(cuò),期待后續(xù)篇章,前面的都好基礎(chǔ)!
作者: Longan.Wang    時(shí)間: 2025-7-12 18:36
可以溫故而知新!
作者: 宇宙小塵粒    時(shí)間: 2025-9-3 16:15
非常好的文章




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
天天做综合网| 午夜精彩视频在线观看不卡| 一区二区日韩| 免费在线一级视频| 亚洲欧美日韩动漫| 日本 欧美 国产| 九九九九免费视频| 国产精品视频免费观看| 九色精品美女在线| 精品国产亚洲在线| 亚洲va欧美va天堂v国产综合| 国内精品免费在线观看| 久久电影院7| 91精品网站在线观看| 成人在线观看免费网站| 日本性视频网| 99视频都是精品热在线播放| 国产又粗又黄又爽的视频| 欧美日韩国产一二三区| 手机免费av片| 污污污污污污www网站免费| 91色琪琪电影亚洲精品久久| 色综合久久天天综线观看| 精品福利视频一区二区三区| 欧美午夜丰满在线18影院| 国产三级欧美三级| 国产一区二区不卡在线| 亚洲少妇诱惑| 欧美成人自拍| 欧美三级午夜理伦三级小说| 日韩精品一区二区在线播放| 国产黄色一区二区| 中文字幕在线看精品乱码| av一区二区三区在线观看| 精品久久久91| 亚洲精品在线观看视频| 欧美日韩亚洲视频| 国产精品视频一二三| 国产精品一区一区| 亚洲一区日韩在线| 99久久99久久精品国产片果冰| 成人福利一区| 欧美韩国亚洲| 岛国精品在线播放| 亚洲欧美自拍另类| 凹凸精品一区二区三区| 小早川怜子一区二区的演员表| 久久精品一卡二卡| 99热成人精品热久久66| 欧美在线观看黄| 亚洲精品成人a8198a| 国产日韩欧美综合精品| 国产日韩精品视频| 国产精品人人做人人爽| 538国产精品视频一区二区| www.xxxx精品| 中文字幕久久久av一区| 亚洲毛片在线观看| 亚洲男人第一网站| 亚洲国产福利在线| 精品国内二区三区| 69av一区二区三区| 日韩限制级电影在线观看| 欧美性猛交一区二区三区精品| 亚洲成av人综合在线观看| 综合婷婷亚洲小说| 亚洲人xxxx| 亚洲男同1069视频| 一级中文字幕一区二区| 亚洲国产欧美日韩另类综合| 亚洲一区二区三区四区的| 亚洲一区二区在线视频| 亚洲国产成人精品视频| 欧美日韩激情美女| 欧洲精品在线观看| 欧美老女人第四色| 精品国产一区二区三区久久久蜜月| 91麻豆精品国产91久久久| 91精品一区二区三区久久久久久| 欧美男女性生活在线直播观看| 欧美日韩成人在线| 日韩精品最新网址| 亚洲老司机av| 久久精品国产99国产精品澳门| 久久久国产精品一区| 欧美激情影音先锋| 日本国产欧美一区二区三区| 国产精品视频1区| 91精品天堂| 久久99精品国产一区二区三区| 久久精品国产一区二区三区不卡| 日本一区免费观看| 800av在线免费观看| 99爱视频在线| www.成人黄色| 成人无码www在线看免费| 丰满的亚洲女人毛茸茸| 校园春色 亚洲| 久久久精品毛片| 成人毛片在线免费观看| 免费国产高清| 被陌生人带去卫生间啪到腿软| 国产主播福利| 1024国产在线| 亚洲人成午夜免电影费观看| 粉嫩一区二区三区在线观看| 亚洲+变态+欧美+另类+精品| 欧美日韩综合| 国产在线一区二区综合免费视频| 国产日韩亚洲欧美综合| 精品久久在线播放| 亚洲娇小xxxx欧美娇小| 欧美精品久久一区二区| 99在线看视频| 欧美精品卡一卡二| 亚洲精品久久一区二区三区777| 手机av在线不卡| 真实新婚偷拍xxxxx| 久久性生活视频| 国产经典第一页| 黄色网页在线免费看| 成人国产一区二区三区精品麻豆| 神马午夜久久| 久久国产日本精品| 国产欧美日韩精品一区| 国产精品久久久久一区二区三区| 一本到不卡免费一区二区| 337p日本欧洲亚洲大胆色噜噜| 久久天天躁狠狠躁夜夜av| 国产精品无av码在线观看| 神马影院我不卡午夜| 另类小说色综合| av激情在线观看| 亚洲春色一区二区三区| 福利视频大全| 黄色网在线免费观看| caoporn成人| 久久久一二三| 亚洲视频在线一区二区| 亚洲国产成人精品电影| 国产精品美乳在线观看| ijzzijzzij亚洲大全| 人妻换人妻a片爽麻豆| 中国一级免费毛片| 国产永久在线观看| 成黄免费在线| 精品国产一区二区三区不卡蜜臂| 久久久国产亚洲精品| 亚洲图片欧美激情| 亚洲第一男人天堂| 国产噜噜噜噜噜久久久久久久久 | 欧美三区在线视频| 麻豆一区二区在线观看| 久久久久久久久久久一区 | 国产一区二区三区四区hd| 中文字幕日本最新乱码视频| 日本美女黄色一级片| 女人18毛片一区二区三区| 日本粉色视频在线观看| 搜成人激情视频| 亚洲免费黄色| 亚洲免费av网站| 在线观看欧美成人| 欧美亚洲精品日韩| 欧美性xxxx图片| 隣の若妻さん波多野结衣| 日本在线аv| 欧美aaaaaa| 丝袜亚洲另类欧美综合| 午夜天堂影视香蕉久久| 欧美激情欧美激情| 国产又粗又猛又爽又黄的网站| 精品人妻一区二区三区日产乱码卜| 国产一区二区小视频| 人猿泰山h版在线观看| 国产麻豆精品| 国产一区在线看| 91精品国产91热久久久做人人 | 欧美白人最猛性xxxxx69交| 国产日韩欧美另类| 手机在线国产视频| 国产手机av在线| 亚洲成人精品一区二区三区| 国产精品天天看天天狠| 91麻豆福利精品推荐| 亚洲毛片在线看| 亚洲国产精品久久久久婷婷老年| 人妻aⅴ无码一区二区三区 | 欧美三级小视频| 摸bbb搡bbb搡bbbb| 成人一级视频| 国产99久久久精品| 日韩高清中文字幕| 亚洲精品一卡二卡三卡四卡| 91大神福利视频| 91sese| 精品国模一区二区三区| 精品综合免费视频观看| 日韩欧美的一区| 欧美另类一区| 欧美色图一区二区| 1024手机看片国产| 精品素人av| 国产精品婷婷午夜在线观看| 欧美激情奇米色| 天天色综合社区| 亚洲AV无码一区二区三区性 | 国产精品二区三区| 亚洲成人黄色av| 性xx十八spa按摩| 日本久久久久| 久久综合色一综合色88| 久久亚洲精品小早川怜子66| 激情综合网婷婷| 亚洲av无码乱码国产精品| 欧美videossex| 精品一区二区三区免费观看| 成人午夜无人区一区二区| 亚洲国产aⅴ成人精品无吗| 日本成年免费网站| 欧亚乱熟女一区二区在线| 欧洲精品中文字幕| 夜色资源网av在先锋网站观看| 国产欧美一区二区| 日本久久一二三四| 日韩精品一区不卡| 中日韩美女免费视频网站在线观看| 人人草在线视频| 亚洲成人日韩在线| 日韩激情毛片| 香蕉久久一区二区三区| 天堂网在线观看| 欧美不卡在线观看| 亚洲欧美一区二区视频| 国产精品6699| 神马久久久久久久久久久| wwwwww99| 99精品综合| 91麻豆精品国产综合久久久久久| 图片区小说区区亚洲五月| 免费视频久久久| 国产在线69| 成人精品国产福利| 97在线日本国产| 在线观看日韩精品视频| 成人免费视频77777| 97视频热人人精品免费| 欧美一区二区免费| 大陆av在线播放| 香蕉视频黄色片| av在线精品| 午夜精品福利在线| 日本精品一区二区| 中文字幕91爱爱| 成入视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品678| 久久99久久98精品免观看软件| 男人天堂网在线观看| 麻豆一区二区三区| 97久久精品人人澡人人爽缅北| 中文字幕国产专区| 午夜成人影视| 国产精品1区2区3区| 日本中文字幕成人| 九九精品在线观看视频| 青春草在线观看| 精品无码国产一区二区三区51安| 欧美激情一区三区| 日本一本在线免费福利| 国产精品嫩草影院俄罗斯| 91tv亚洲精品香蕉国产一区7ujn| 久久精品久久精品| 日本三级在线视频| www.av麻豆| 国产三区精品| 中文字幕第3页| 久草一本av| 久久亚洲一区| 欧美第一页在线| 国产在线免费av| 91欧美在线视频| 91原创在线视频| 91久久精品国产91久久性色tv| www.久久精品视频| 黑人一区二区三区| 欧美性色xo影院| 国产在线精品91| 九九热在线观看视频| 99热免费精品在线观看| 欧美激情在线一区| 久久久久久久久久网站| 国产精品一区hongkong| 亚洲一区av在线| 8x8ⅹ国产精品一区二区二区| 欧美成人久久电影香蕉| 亚洲网色网站| 欧美第一黄色网| 国产对白videos麻豆高潮| 欧美性理论片在线观看片免费| 欧美午夜丰满在线18影院| 97av视频在线观看| 成人黄网18免费观看的网站| 美女国产一区二区| 成人亲热视频网站| 国产高清第一页| 精品日韩免费| 久热在线中文字幕色999舞| 丰满少妇高潮久久三区| 天堂久久午夜av| 717成人午夜免费福利电影| 美女被艹视频网站| 日本人妖在线| 国产精品三级在线观看| 天天在线免费视频| av先锋资源| 大胆亚洲人体视频| 日本一区网站| 日本黄色免费在线观看| 久久国产精品免费| 蜜桃久久精品乱码一区二区| 韩国av在线播放| 人人爽香蕉精品| 91香蕉视频在线下载| 在线天堂中文www视软件| 亚洲精品乱码| 成人在线观看视频网站| 污视频在线免费| 亚洲经典在线| 91亚洲精品久久久| 先锋影音欧美官网| 久久青草久久| 国产传媒欧美日韩| 国产网站麻豆精品视频| 国产一区二区三区在线观看精品 | 精品电影一区二区| 欧美乱大交做爰xxxⅹ小说| 成人在线观看免费播放| 日韩av一区二区在线| 91嫩草|国产丨精品入口| 精品视频一区二区三区| 色婷婷综合成人av| 人人爽人人爽人人片av| 国产欧美日韩精品一区二区免费| 国内伊人久久久久久网站视频 | 一区二区三区四区日本视频| 欧美成人伊人久久综合网| 在线观看天堂av| 欧美一区一区| 欧美大片免费看| 亚洲伦理在线观看| 国产日韩亚洲欧美精品| 国产精选一区二区| h网站在线观看| 国产亚洲精品aa午夜观看| 50路60路老熟妇啪啪| 日本美女高清在线观看免费| 欧美探花视频资源| 黄色片在线观看免费| 高清久久精品| 欧美精品久久久久久久免费观看| www.av在线.com| 日本伊人色综合网| 亚洲一区二区三区涩| 在线免费福利| 色老汉一区二区三区| www亚洲色图| 欧美三级电影在线| 国产日韩在线精品av| 青青操在线观看| 中文字幕在线不卡| 久久久久亚洲AV成人无码国产| 成人一级视频| 97视频免费看| 欧美xxxx性xxxxx高清视频| 99精品视频中文字幕| 五月婷婷六月合| 国产精品av一区二区三区 | 成人在线中文字幕| 老熟妇一区二区三区| 你懂的国产精品永久在线| 成人动漫视频在线观看完整版 | 一级片视频免费| 美女爽到呻吟久久久久| 一本久久a久久精品vr综合| 男人的天堂av高清在线| 欧美一级黄色录像| 国产一级片免费在线观看| 亚洲日本欧美| 91九色国产ts另类人妖| 免费成人黄色| 亚洲男人天堂2023| 黄色小视频免费观看| 99久久综合国产精品| 成人免费播放视频| 亚洲视频一起| 国产aaa精品| 成人精品久久av网站| 77777亚洲午夜久久多人| 欧美一区三区四区|