第1章 MCS-51单片机基本运算子程序 1
1.1 二进制基本运算子程序 1
1.1.1 两个半字节数合并成一个一字节数子程序RZD_YZD 1
1.1.2 双字节数取补子程序D_QBSUB 1
1.1.3 双字节补码(或原码)加法子程序D_BYJSUB 2
1.1.4 两个无符号双字节数相加子程序DW_ADD1 2
1.1.5 多字节无符号加法子程序D_WADD1 3
1.1.6 多字节无符号整数加法子程序D_WADD2 3
1.1.8 多字节无符号整数减法子程序D_NISUB1 4
1.1.7 双字节补码(或原码)减法子程序D_QYJSUB 4
1.1.9 多字节无符号减法子程序D_NISUB2 5
1.1.10 双字节无符号乘法子程序D_MULSUB 5
1.1.11 双字节乘法子程序H2MUL_SUB 6
1.1.12 双字节无符号快速乘法子程序D_MULSUB2 7
1.1.13 多字节数乘10子程序D_MUL10 8
1.1.14 三字节乘二字节乘法子程序H3MUL_SUB 9
1.1.15 四字节乘四字节乘法子程序H4MUL_SUB 10
1.1.16 多字节无符号数乘法子程序D_WMUL1 12
1.1.17 多字节无符号整数乘法子程序D_NIMUL2 14
1.1.18 双字节平方根子程序SQRT_SUB 15
1.1.19 双字节无符号除法子程序D_WFHDIV 16
1.1.20 多字节无符号除法子程序D_NIDIV 17
1.1.21 带符号双字节除单字节除法子程序SHF_1DIV 18
1.1.22 双字节除以双字节除法子程序SHZ_2DIV 20
1.1.23 三字节除双字节商为三字节除法子程序SH_32DIV 22
1.1.24 四字节除双字节商为二字节除法子程序SH_42DIV 23
1.1.25 五字节除五字节除法子程序SHZ_5DIV 25
1.1.26 程序转入相应的分支子程序JMP_XX 26
1.2.1 原码有符号双字节小数乘法子程序YD_2MUL 27
1.2 二进制符点运算子程序 27
1.2.2 双字节带符号小数乘法子程序SHF_2MUL 28
1.2.3 原码有符号双字节小数除法子程序YD_DIVX 30
1.2.4 尾数用原码表示的双字节浮点数乘法子程序WS_2FMUL 31
1.2.5 尾数用原码表示的双字节除单字节浮点数除法子程序WS_1FDIV 33
1.2.6 浮点数比较大小子程序FD_CMPP 35
1.3 十进制(BCD码)运算子程序 36
1.3.1 单字节BCD码转换成压缩BCD码子程序D_BCD_Y 36
1.3.2 十进制求补运算子程序BCD_QMP 36
1.3.3 多字节十进制加法子程序D_BCDADD 37
1.3.5 多字节十进制BCD码减法子程序D_BCDSUB 38
1.3.4 多字节十进制减法子程序D_BCDSSUB 38
1.3.6 无符号十进制数乘法子程序W_BCDCMUL 39
1.3.7 无符号十进制数除法子程序W_BCDDIV 40
1.3.8 四字节十进制除法子程序DEV_BCD4 42
1.3.9 多字节无符号BCD码除法子程序D_WBCDDIV 44
1.3.10 单字节BCD码平方根子程序D_1SQR_SUB 46
1.3.11 双字节BCD码平方根子程序D_2SQR_SUB 47
1.3.12 三字节BCD码平方根子程序D_3SQR_SUB 48
2.1.2 单字节无符号数据块排序子程序SQRT_2WP 51
2.1.1 单字节无符号数排序子程序SQRT_1WP 51
2.1 数据排序子程序 51
第2章 MCS-51单片机排序、数码转换等子程序 51
2.1.3 单字节带符号数按由小到大排序子程序SQRT_3WP 52
2.1.4 双字节无符号数由小到大排序子程序SQRT_4WP 53
2.1.5 存储器无符号数据排序子程序DATA_SORT 54
2.1.6 单字节顺序检索子程序DZ_1FIND 55
2.1.7 测试字符串的长度子程序T_CHAR 56
2.1.8 比较两个无符号数大小子程序CMP_DX 56
2.1.9 大于256个字节表的双字节查表子程序D_FIND 56
2.2.1 二进制数转换成ASCII码字符串子程序BIN_ASCII 57
2.2 数码转换子程序 57
2.2.2 四位二进制数转换为ASCII码子程序SBIN_ASCII 58
2.2.3 十六进制数转换成ASCII码子程序HEX_ASCII 58
2.2.4 十六进制数转换成二位ASCII码子程序HEX_ASCII 59
2.2.5 ASCII码转换为四位二进制数子程序ASII_SBIN 60
2.2.6 ASCII码转换成十六进制数子程序ASCII_HEX 60
2.2.7 二进制数转换成十六进制数子程序BIN_16BCH 61
2.2.8 BCD码转换成二进制数转换子程序BCD_BIN 61
2.2.10 四位十进制数(BCD码)转换为二进制码子程序S_BCDBIN 62
2.2.9 四字节非压缩BCD码数据转换成二进制数子程序S_BCD_BIN 62
2.2.11 四位BCD码转换成十六位二进制数子程序SZ_16BIN_S 64
2.2.12 双字节二进制数转换成三字节BCD码子程序SBIN_BCD 65
2.2.13 双字节二进制小数转换成四字节BCD码子程序DXS_SBCD 66
2.2.14 三字节二进制整数转换成四字节BCD码子程序SBIN_SBCD 67
2.2.15 三字节小数BCD码转换成四字节二进制数子程序SXB_SBIN 68
2.2.16 带符号小数BCD码转换成二进制数子程序DX_BINSUB 69
2.3 其它实用子程序 70
2.3.1 读取汉字字模子程序LOAD_ZM 70
2.3.2 点与点画图子程序POINT_P 73
2.3.3 几种散转程序PRG-JMP1/2/3/4/5 76
2.3.4 子程序调用时的几种参数传递程序PRG_CALL1/2/3/4 80
第3章 MCS-51单片机软件抗干扰、串口等子程序 85
3.1 单片机执行过程中的软件抗干扰措施 85
3.1.1 采用指令冗余对程序“跑飞”的一种软件处理 85
3.1.2 采用软件陷阱对程序“跑飞”的一种软件处理 85
3.1.3 使用“看门狗”对程序“跑飞”的软件处理 87
3.1.4 采用8155芯片对单片机“死机”的处理 89
3.1.5 通过“复位”使系统恢复正常 90
3.2.1 中值数字滤波子程序ZZ_FILLE 93
3.2 数字滤波子程序 93
3.2.2 防脉冲干扰数字滤波子程序FG_FILIE 94
3.2.3 循环冗余检测(CRC)子程序LOP_CRCS 96
3.3 中断服务子程序 97
3.3.1 利用定时/计数器T0、T1端作为外部中断源子程序TO_T0SUB 97
3.3.2 精确定时子程序TIMES_P 98
3.3.3 扩展外部中断源子程序IO_POOP 101
3.4 串行通信子程序 102
3.4.1 全双工串行通信子程序QS_COMMA 102
3.4.2 多机串口通信子程序D_COMMA 105
3.4.3 用外部中断配合查询接收串行数据子程序YW_READCX 107
3.4.4 PC机与51单片机的快速串行通信程序COMUN_PC/COMUN_51 110
3.4.5 带纠错的串行通信子程序JERR_COM 115
第4章 MCS-51单片机应用程序 119
4.1 步进电机控制子程序MOT_DRVB 119
4.1.1 硬件描述 119
4.1.2 应用程序 120
4.2 八位串行输出A/D转换器TLC548/549及应用程序 121
4.2.1 硬件描述 121
4.3.1 硬件描述 124
4.2.2 数据采集程序 124
4.3 11路12位串行A/D转换器TLC2543及应用程序 124
4.3.2 数据采集程序 131
4.4 10位串行D/A转换器TLC5615及应用程序 133
4.4.1 硬件描述 133
4.4.2 应用程序 135
4.5 八位串行LED显示驱动器MAX7219/7221及应用程序 136
4.5.1 硬件描述 136
4.5.2 应用程序 142
4.6.1 硬件描述 143
4.6 液晶显示驱动器HD61202及应用子程序 143
4.6.2 驱动程序的编写 146
4.7 液晶显示控制器SED1330/1335/1336/E1330及应用程序 149
4.7.1 硬件描述 149
4.7.2 应用程序 154
4.8 点阵液晶显示控制器MSM6255及应用程序 162
4.8.1 硬件描述 162
4.8.2 驱动及应用程序 168
4.9 高性能低功耗带RAM实时时钟芯片DS1302及应用程序 172
4.9.1 硬件描述 172
4.9.2 应用程序 177
4.10 跨越2000年的时钟芯片DS12C887及应用程序 182
4.10.1 硬件描述 182
4.10.2 器件的软件编程 186
4.11 二总线串行EEPROM AT24C01/02/04/08/16及应用程序 188
4.11.1 硬件描述 188
4.11.2 应用程序 193
4.12 51单片机中两种典型的查表程序设计 195
4.12.1 RAM表的程序设计 195
4.12.2 ROM表的程序设计 196
4.13.1 硬件接口描述 198
4.13 μP-16B微打印机与51单片机的硬件接口与应用程序 198
4.13.2 软件编程 199
第5章 PIC单片机与MCS-96单片机应用程序 201
5.1 PIC单片机应用子程序 201
5.1.1 单字节无符号数BCD码加法子程序WBCD_ADD 201
5.1.2 单字节无符号数BCD码减法子程序WBCD_SUBB 202
5.1.3 双精度加法运算子程序DJD_ADD 203
5.1.4 双精度减法运算子程序DJD_SUBB 203
5.1.5 双精度乘法运算子程序D_MULSUB 204
5.1.6 双精度除法运算子程序DJD_DIV 206
5.1.7 二进制数转换成BCD码子程序PICBIN_BCD 208
5.1.8 BCD码转换成二进制数子程序PICBCD_BIN 209
5.2 MCS-96单片机应用程序 210
5.2.1 单字节ASCII码转换成十六进制数子程序DASCII_HEX 210
5.2.2 单字节十六进制数转换成ASCII子程序DHEX_ASCII 210
5.2.3 二通道数据采集程序SCD2_SUB 211
5.2.4 转速系统的测量与控制程序ZHUAN_CTR 213
5.2.5 用定时器0定时中断发送ASCII码字符串程序T0_INTESUB 216
5.2.6 通过HSO0中断发送ASCII码字串程序HSO0_INTE 218
5.2.7 对应用程序进行加密程序PRG_SAVE 220