第一部分 C語言基礎
第一章 詞法
1.1 標識符
1.2 關鍵字
1.3 常量
1.3.1 整數常量
1.3.2 浮點數常量
1.3.3 枚舉常量
1.3.4 字符常量
1.4 字符串
1.5 運算符
1.5.1 單目運算符
1.5.2 雙目運算序
1.5.3 三目運算管
1.5.4 賦值運算管
1.5.5 逗號運算符
1.5.6 函數參數運算林
1.5.7 數組下標運算浮
1.5.8 結構/聯(lián)合成員運算符
1.5.9 結構/聯(lián)合指針運算符
1.6 分隔符
1.6.1 方括號分隔符
1.6.2 圓括號分隔浮
1.6.3 花括號分隔符
1.6.4 逗號分隔符
1.6.5 分號分隔符
1.6.6 冒號分隔符
1.6.7 省略號分隔符
1.6.8 星號分隔符
1.6.9 等號分隔符
1.6.10 預處理器偽指令符
1.7 空白符(nul)
第二章 說明
2.1 對象與左值
2.1.1 對象
2.1.2 左值
2.2 變量說明
2.3 數組說明
2.3.1 一維數組,一維指針數組,一維數組指針
2.3.2 多維數組,多維指針數組,多維數組指針,多重指針
2.4 結構說明
2.4.1 原型法
2.4.2 類型別名法
2.4.3 關于結構的討論
2.4.4 位段結構
2.5 聯(lián)合說明
2.6 函數說明
第三章 語句
3.1 語句
3.2 表達式
3.3 表達式語句
3.4 復合語句
3.5 循環(huán)語句
3.5.1 for循環(huán)語句
3.5.2 while循環(huán)語句
3.5.3 do while循環(huán)語句
3.6 條件語句
3.6.1 一般條件語句
3.6.2 嵌套條件語句
3.6.3 多選一條件語句
3.7 開關語句
3.8 間斷語句
3.9 接續(xù)語句
3.10 跳轉語句
3.11 返回語句
3.12 空語句
第四章 函數及函數庫
4.1 前言
4.2 單文件程序(一)——字符串處理
4.3 單文件程序(二)——二維數組
4.4 多文件程序——臺式計算器逆波蘭算法的實現
4.5 關于函數參數值的傳送問題
4.6 主函數
4.7 C語言的函數庫
4.8 頭文件
4.9 分類庫函數
4.9.1 歸類函數
4.9.2 轉換函數
4.9.3 目錄控制函數
4.9.4 診斷函數
4.9.5 圖形函數
4.9.6 內部函數
4.9.7 輸入輸出函數
4.9.8 各類接口函數(dos,bios,8086)
4.9.9 串與內存塊操作函數
4.9.10 數學函數
4.9.11 動態(tài)內存管理函數
4.9.12 雜項函數
4.9.13 進程控制函數
4.9.14 窗口文本顯示函數
4.9.15 日期時間函數
4.9.16 變參數表函數
4.10 全局變量
4.10.1 argc
4.10.2 argv
4.10.3 ctype
4.10.4 daylight
4.10.5 directvideo
4.10.6 environ
4.10.7 error,_doserrno,sys_errlist,sys_nerr
4.10.8 fmode
4.10.9 heaplen
4.10.10 _new_handler
4.10.11 _osmajor,_osminor
4.10.12 ovrbuffer
4.10.13 _psp
4.10.14 _stklen
4.10.15 timezone
4.10.16 tzname
4.10.17 _version
4.10.18 _wscroll
4.10.19 _8087
第五章 預處理器
5.1 前言
5.2 包含文件偽指令
5.3 偽指令宏
5.3.1 簡單宏
5.3.2 參數宏
5.3.3 宏釋放
5.3.4 條件宏定義
5.3.5 預定義宏
5.3.6 宏體中使用轉義符#和合并將##
5.4 條件編譯偽指令
5.5 #pragma偽指令
5.6 #line偽指令
5.7 #error偽指令
第二部分 C51(8051用8位嵌入式C語言)
第六章 C51前言
第七章 C51說明
7.1 C51簡單變量說明
7.1.1 類型說明將bit
7.1.2 預定義特殊功能寄存器說明符sfr和sfr16
7.1.3 預定義特殊功能寄存器位說明符sbit
7.1.4 在bdata RAM空間定義位變量(借用位類型符shit)
7.2 C51復合變量說明
7.3 C51指針變量說明
7.3.1 通用指針
7.3.2 抽象指針——匿名指體
7.3.3 指針可用運算管
第八章 C51存儲模式
8.1 C51三種存儲模式
8.2 C51內部對數據和函數的組織規(guī)范
8.2.1 標識符改大寫字符和函數換名
8.2.2 全局變量存放的段名規(guī)定
8.2.3 函數的段名
8.2.4 函數的參數傳送規(guī)則
8.2.5 重入棧的有關規(guī)定
8.2.6 函數返回值的規(guī)定
第九章 C51函數及庫函數
9.1 函數說明
9.2 函數被修飾使用指定的寄存器組
9.3 函數被修飾為中斷函數
9.4 函數被修飾為重入函數
9.5 函數被修飾為使用指定的存儲模式
9.6 C51與PL/M51函數的交叉調用
9.7 C與匯編函數的交叉調用
9.8 內部函數
9.8.1 左移多位函數
9.8.2 右移多位函數
9.8.3 空操作函數
9.8.4 位測試函數
9.9 抽象數組(絕對地址存取)——absacc庫函數
9.10 C到庫函數介紹
第十章 C51 SFR頭文件和配置文件
10.1 特殊功能寄存器頭文件
10.2 C51配置文件
10.2.1 STARTUP.A51文件
10.2.2 INIT.A51文件
10.2.3 PUTCHAR.C文件
10.2.4 GETKEY.C文件
第十一章 C51預處理器偽指令
第十二章 C51編譯命令行控制選項和控制偽指令
12.1 簡介
12.2 編譯命令行
12.2.1 一次性使用編譯控制偽指令
12.2.2 可多次使用編譯控制偽指令
第十三章 C51及L51使用方法
13.1 C51的使用環(huán)境
13.2 C51安裝
13.3 編譯方法
13.4 C51支持的文件名和設備名
13.5 錯誤號
13.6 連接/定位方法
13.7 連接控制選項
13.7.1 一般的連接控制選項
13.7.2 特殊的連接控制選項
13.8 定位控制選項
13.9 映像列表文件控制選項
13.10 連接/定位命令
13.11 特殊連接控制選項示例
13.12 使用C51和L51的完整示例
13.12.1 多模塊編程
13.12.2 多模塊編譯
13.12.3 多模塊連接定位
第三部分 XAC(80C51XA用16位嵌入式C語言)
第十四章 XAC說明
14.1 XAC變量說明
14.1.1 XAC一般變量說明
14.1.2 絕對變量與SFR
14.1.3 位變量與可位尋址SFR
14.2 XAC數組說明
14.3 XAC結構說明
14.4 XAC聯(lián)合說明
14.5 XAC函數說明
14.5.1 XAC一般函數說明
14.5.2 XAC banked中斷函數說明
14.5.3 中斷向量表(ROM向量表)的添寫
14.5.4 中斷接管與RAM向量表
第十五章 XAC編譯器內部管理規(guī)范和約定
15.1 XAC標準程序子段(psect)
15.2 XAC有關寄存器的約定
15.3 XAC有關參數傳送和函數返回的約定
15.4 XAC關于函數的簽字
15.5 XAC有關存賭器的約定
15.6 XAC的存儲模式
15.7 XAC關于運行時啟動模塊的規(guī)定
15.8 XAC上電子程序
15.9 XAC標準啟動模塊的編程
15.9.1 連接器定義符號名
15.9.2 bss和rbss清零程序
15.9.3 data和rdta復制程序
15.10 XAC定制的啟動模塊
15.10.1 手工優(yōu)化代碼
15.10.2 定制啟動模塊的編寫
15.10.3 關于版權信息
第十六章 XAC的混合編程和函數庫
16.1 C語言與匯編語言混合編程
16.1.1 C與匯編函數的交叉調用
16.1.2 在線嵌入匯編指令段
16.2 XAC運行時間庫函數
16.2.1 標準輸入輸出庫函數及用戶的定制
16.2.2 XAC庫函數匯總
16.2.3 XAC庫管理器實用程序
第十七章 XAC編譯器
17.1 編譯命令行控制選項
17.1.1 -A(指定ROM和RAM定位地址)
17.1.2 -AAHEX(指定按美國自動化符號格式生成HEX文件)
17.1.3 -AV((指定符號文件用Avocet風格)
17.1.4 -BIN(指定生成二進制輸出文件)
17.1.5 -BI(指定選用大存儲模式)
17.1.6 -Bm(指定選用中存儲模式)
17.1.7 -Bs(指定選用小存儲模式
17.1.8 -C(只翻譯到目標文件)
17.1.9 -CR(生成交叉訪問表)
17.1.10 -CLIST(生成C列表文件)
17.1.11 -D(定義宏)
17.1.12 -DOUBLE(起用IEEE64位DOUBLE變量)
17.1.13 -E(編譯器使用editor格式的錯誤信息)
17.1.14 -E(編譯器錯誤信息重走向到指定文件)
17.1.15 -H(生成匯編級符號文件)
17.1.16 -I(指定附加的搜索頭文件的路徑)
17.1.17 -L(指定附加的掃描庫)
17.1.18 -L-(指定傳遞給LINKER的控制選項)
17.1.19 -M(生成映像文件)
17.1.20 -MOTOROLA(生成Motorola S-Record格式的HEX文件)
17.1.21 -N(指定標識符有效字符長度)
17.1.22 -O(啟動優(yōu)化)
17.1.23 -O(指定輸出文件)
17.1.24 -OMF51(指定生成OMF51格式的輸出文件)
17.1.25 -PROTO(指定生成包括ANSI和K&R風格的函數原型文件)
17.1.26 -PSECTMAP(程序段映像表)
17.1.27 -S(編譯生成匯編源文件)
17.1.28 -STRICT(嚴格遵守ANSI標準)
17.1.29 -TEK(編譯生成Tektronics HEX文件)
17.1.30 -U(解除宏定義)
17.1.31 -UBROF(指定生成UBROF格式的輸出文件)
17.1.32 -UNSIGNED(指定unsigned char為char的缺省類型)
17.1.33 -V(詳示編譯命令)
17.1.34 -W(設置告警級別)
17.1.35 -X(去除局部符號)
17.1.36 -Zg(啟動全局優(yōu)化)
17.2 編譯器輸出文件格式
17.3 編譯器生成的符號文件
17.4 CREF生成交叉訪問表的實用程序
17.4.1 -F路徑或文件名
17.4.2 -H表頭名
17.4.3 -L每頁行數
17.4.4 -O輸出文件名
17.4.5 -p頁寬
17.4.6 -S包含拒選符號的文件名
17.4.7 -X拒選符號的前導字符序列
第十八章 XAC預處理器
18.1 XAC預定義宏
18.2 #pragma編譯控制偽指令
第十九章 XAC宏匯編器
19.1 序言
19.2 XA匯編源文件語句
19.2.1 字符集
19.2.2 數
19.2.3 分隔符
19.2.4 特殊字符
19.2.5 標識符
19.2.6 匯編生成的標識符
19.2.7 位置計數器
19.2.8 寄存器符號
19.2.9 字符串
19.2.10 暫時標號
19.2.11 表達式
19.2.12 匯編語句的格式
19.3 XA匯編偽指令
19.3.1 偽指令語句格式
19.3.2 PUBLIC
19.3.3 EXTRN
19.3.4 GLOBAL
19.3.5 END
19.3.6 程序段(PSECT)
19.3.7 ORG
19.3.8 EQU和SET
19.3.9 DB和DW
19.3.10 DF
19.3.11 DS
19.3.12 IF ELSE EKSEIF ENDIF
19.3.13 SIGNAT
19.3.14 控制選項偽指令行
19.4 宏
19.4.1 MACRO ENDM
19.4.2 LOCAL
19.4.3 REPT
19.4.4 IRP
19.4.5 IRPC
19.5 XA匯編命令行
19.5.1 XA匯編命令行格式
19.5.2 匯編選項
第二十章 HLINK連接器
20.1 簡介
20.2 連接與定位(或裝載)的基本概念
20.3 連接命令
20.4 OBTOHEX實用程序
第二十一章 HPDXA 51XA集成開發(fā)平臺
21.1 安裝
21.1.1 MS_DOS下的安裝
21.1.2 UNIX操作系統(tǒng)下的安裝
21.2 快速入門
21.2.1 簡單程序示例
21.2.2 使用HPDXA
21.2.3 使用XAC命令行
21.2.4 運行程序
21.3 HPDXA用戶接口
21.3.1 監(jiān)視器模式必性選擇
21.3.2 菜單命令操作
21.4 HPDXA菜單命令快覽
21.4.1 系統(tǒng)子菜單(<<>>)
21.4.2 File子菜單
21.4.3 Edit子菜單
21.4.4 Option子菜單
21.4.5 Compile子菜單
21.4.6 Make子菜單
21.4.7 Run子菜單
21.4.8 Utility子菜單
21.4.9 Help子菜單
21.5 HPDXA編輯器
21.6 編譯連接一條龍示例
附錄
附錄A C51函數庫
A.1 數學函數
A.1.1 函數名:abs,cabs.fabs.labs
A.1.2 函數名:exp,log,log10
A.1.3 函數名:sqrt
A.1.4 函數名:rand,srand
A.1.5 函數名:cos,sin,tan
A.1.6 函數名:acos,asin,atan,atan2
A.1.7 函數名:cosh,sinh,tanh,
A.1.8 函數名:fpsave,fprestore
A.1.9 函數名:ceil
A.1.10 函數名:floor
A.1.11 函數名:modf
A.1.12 函數名:pow
A.2 標準化I/O函數
A.2.1 函數名:_getkey()
A.2.2 函數名:getchar
A.2.3 函數名:gets
A.2.4 函數名:ungetchar
A.2.5 函數名:-ungetkey
A.2.6 函數名:putchar
A.2.7 函數名:printf
A.2.8 函數名:sprintf
A.2.9 函數名:puts
A.2.10 函數名:scanf
A.2.11 函數名:sscanf
A.3 動態(tài)存儲函數
A.3.1 函數名:calloc
A.3.2 函數名:free
A.3.3 函數名:int_mempool
A.3.4 函數名:malloc
A.3.5 函數名:realloc
A.4 字符歸類函數
A.4.1 函數名:isalpha
A.4.2 函數名:isalnum
A.4.3 函數名:iscntrl
A.4.4 函數名:isdigit
A.4.5 函數名:isgraph
A.4.6 函數名:isprint
A.4.7 函數名:ispunct
A.4.8 函數名:islower
A.4.9 函數名:isupper
A.4.10 函數名:isspace
A.4.11 函數名 isxdigit
A.4.12 函數名:toascil(參數宏)
A.4.13 函數名:toint
A.4.14 函數名:tolower
A.4.15 函數名: tolower(參數宏)
A.4.16 函數名: toupper
A.4.17 函數名:_toupper(參數宏)
A.5 字符串函數
A.5.1 函數名:memchr
A.5.2 函數名:memcmp
A.5.3 函數名:memcpy
A.5.4 函數名:memccpy
A.5.5 函數名:memmove
A.5.6 函數名:memset
A.5.7 函數名:strcat
A.5.8 函數名:strncat
A.5.9 函數名:strcmp
A.5.10 函數名:strncmp
A.5.11 函數名:strcpy
A.5.12 函數名:strncpy
A.5.13 函數名:strlen
A.5.14 函數名:strchr,strpos
A.5.15 函數名:strrchr,strrpos
A.5.16 函數名:strspn,strcspn,strpbrk,strrpbrk
A.6 字符串轉換函數
A.6.1 函數名:atof
A.6.2 函數名:atol
A.6.3 函數名:atoi
A.7 變參數函數
A.7.1 宏名:va_list
A.7.2 宏名:va_start(va_list ap,last_argument)
A.7.3 宏名:type va_ arg(va_list ap,type)
A.7.4 宏名:va_end(va_list ap)
A.8 全程跳轉函數
A.8.1 函數名:setjmp
A.8.2 函數名:longjmp
A.9 內部函數
A.9.1 函數名:_crol_,_irol_,_lrol_
A.9.2 函數名:_cror_,_iror_,_lror_
A.9.3 函數名:_nop_
A.9.4 函數名:_testbit_
A.10 抽象數組
A.10.1 函數名:CBYTE,BDYTE,PBYTE,XBYTE
A.10.2 函數名:CWORD,DWORD,XWORD,PWORD
附錄B C51編譯器使用錯誤提示
B.1 前言
B.2 致命錯誤
B.3 語法及語義錯誤
附錄C L51連接/定位器使用錯誤提示
C.1 前言
C.2 L51警告
C.3 L51錯誤
C.4 L51致命錯誤
C.5 例外信息
附錄D C51的極限值
附錄E XAC運行時間庫函數
E.1 ACOS
E.2 ASCTIME
E.3 ASIN
E.4 ASSERT
E.5 ATAN
E.6 ATOF
E.7 ATOI
E.8 ATOL
E.9 BSEARCH
E.10 CALLOC
E.11 CEIL
E.12 CGETS
E.13 COS
E.14 COSH,SINA,TANH
E.15 CPUTS
E.16 CTIME
E.17 DI,EI
E.18 DIV
E.19 EXIT
E.20 EXP
E.21 FABS
E.22 FLOOR
E.23 FREE
E.24 FREXP
E.25 GETC
E.26 GETCH,GETCHE,UNGETCH
E.27 GETS
E.28 GMTIME
E.29 ISALNUM,ISALPHA,ISDIGIT,ISLOWER等
E.30 KBHIT
E.31 LDEXP
E.32 LDIV
E.33 LOCALTIME
E.34 LOG,LOG10
E.35 LONGJMP
E.36 MALLOC
E.37 MEMCHR
E.38 MEMCMP
E.39 MEMCPY
E.40 MEMMOV
E.41 MEMSET
E.42 PERSIST_CHECK,PERSIST_VALIDATE
E.43 POW
E.44 PRINTF,VPRINTF
E.45 PUTCH
E 46 PUTS
E.47 QSORT
E.48 RAND
E.49 REALLOC
E.50 SCANF,VSCANF
E.51 SET_VECTOR
E.52 SETJMP
E.53 SIN
E.54 SPRINTF,VSPRINTF
E.55 SQRT
E.56 SRAND
E.57 SSCANF,VSSCANF
E.58 STRCAT
E.59 STRCHR
E.60 STRCMP
E.61 STRCPY
E.62 STRLEN
E.63 STRNCAT
E.64 STRNCMP
E.65 STRNCPY
E.66 STRRCHR
E.67 TAN
E.68 TOLOWER,TOUPPER,TOASCll
E.69 VA_STSRT,VA_ARG,VA_END
附錄F XAC使用錯誤信息
附錄G HTDXA菜單命令熱健