指令系统统计
111
总指令数
49
单字节指令
45
双字节指令
17
三字节指令
执行周期分布
1个机器周期
64条 (57.66%)
2个机器周期
45条 (40.54%)
4个机器周期
2条 (1.8%)
R
特殊功能寄存器(SFR)速查表
| 寄存器名 | 地址 | 位地址 | 功能说明 |
|---|---|---|---|
| ACC | E0H | E7H-E0H | 累加器,用于算术运算和数据传送 |
| B | F0H | F7H-F0H | 寄存器B,用于乘法和除法运算 |
| PSW | D0H | D7H-D0H | 程序状态字,存放程序运行状态标志 |
| SP | 81H | - | 堆栈指针,指向堆栈顶部 |
| DPTR | 83H/82H | - | 数据指针,用于访问外部存储器 |
| P0 | 80H | 87H-80H | 端口0,双向I/O口,可作为地址/数据总线 |
| P1 | 90H | 97H-90H | 端口1,准双向I/O口 |
| P2 | A0H | A7H-A0H | 端口2,准双向I/O口,可作为高8位地址总线 |
| P3 | B0H | B7H-B0H | 端口3,准双向I/O口,具有第二功能 |
| TMOD | 89H | - | 定时器/计数器模式控制寄存器 |
| TCON | 88H | 8FH-88H | 定时器/计数器控制寄存器 |
| TH0/TL0 | 8CH/8AH | - | 定时器0高/低字节 |
| TH1/TL1 | 8DH/8BH | - | 定时器1高/低字节 |
| SCON | 98H | 9FH-98H | 串行口控制寄存器 |
| SBUF | 99H | - | 串行口数据缓冲器 |
| PCON | 87H | - | 电源控制寄存器 |
| IE | A8H | AFH-A8H | 中断允许控制寄存器 |
| IP | B8H | BFH-B8H | 中断优先级控制寄存器 |
F
状态标志寄存器 PSW
CY
AC
F0
RS1
RS0
OV
-
P
D7
CY (进位标志)
加法进位/减法借位时置1
D6
AC (辅助进位)
低4位向高4位进位时置1
D5
F0 (用户标志)
用户自定义标志位
D4/D3
RS1/RS0 (工作寄存器组选择)
选择4组工作寄存器之一
D2
OV (溢出标志)
有符号数运算溢出时置1
D0
P (奇偶标志)
累加器A中1的个数为奇数时置1
R
工作寄存器组
51单片机内部RAM的00H~1FH共32个单元被划分为4组工作寄存器,每组8个寄存器(R0~R7)。通过PSW中的RS1、RS0两位可选择当前使用的工作寄存器组,便于现场保护和中断切换。
| 组别 | R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | 地址范围 | RS1 | RS0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 第0组 | 00H | 01H | 02H | 03H | 04H | 05H | 06H | 07H | 00H-07H | 0 | 0 |
| 第1组 | 08H | 09H | 0AH | 0BH | 0CH | 0DH | 0EH | 0FH | 08H-0FH | 0 | 1 |
| 第2组 | 10H | 11H | 12H | 13H | 14H | 15H | 16H | 17H | 10H-17H | 1 | 0 |
| 第3组 | 18H | 19H | 1AH | 1BH | 1CH | 1DH | 1EH | 1FH | 18H-1FH | 1 | 1 |
默认组别:系统复位后RS1=0、RS0=0,自动选中第0组(00H-07H)作为当前工作寄存器。
使用技巧:中断服务程序中可切换到非默认组以保护现场,主程序与中断使用不同组避免冲突。
A
ASCII码表
| 十进制 | 十六进制 | 字符 | 说明 |
|---|---|---|---|
| 0 | 00H | NUL | 空字符 |
| 7 | 07H | BEL | 响铃 |
| 8 | 08H | BS | 退格 |
| 9 | 09H | TAB | 水平制表 |
| 10 | 0AH | LF | 换行 |
| 13 | 0DH | CR | 回车 |
| 20 | 20H | SPACE | 空格 |
| 32-47 | 20H-2FH | !"#$%&'()*+,-./ | 标点符号 |
| 48-57 | 30H-39H | 0-9 | 数字 |
| 58-64 | 3AH-40H | :;<=>?@ | 标点符号 |
| 65-90 | 41H-5AH | A-Z | 大写字母 |
| 91-96 | 5BH-60H | [\\]^_` | 标点符号 |
| 97-122 | 61H-7AH | a-z | 小写字母 |
| 123-127 | 7BH-7FH | {|}~DEL | 标点符号/删除 |
ASCII码特点
- ASCII码是7位编码,范围0~127(00H~7FH)
- 数字'0'~'9'的ASCII码为30H~39H,连续排列
- 大写字母'A'~'Z'的ASCII码为41H~5AH,连续排列
- 小写字母'a'~'z'的ASCII码为61H~7AH,连续排列
- 大写字母与小写字母相差20H(32)
常用ASCII码转换
数字转ASCII: MOV A, #30H
将数字0~9转换为对应的ASCII码
ASCII转数字: ANL A, #0FH
将ASCII码字符'0'~'9'转换为数字
大写转小写: ADD A, #20H
将大写字母转换为小写字母
小写转大写: ANL A, #0DFH
将小写字母转换为大写字母
Keil uVision
51单片机最常用的开发环境,支持汇编和C语言编程,集成编译器、调试器和仿真功能。
支持51/STM32等多种MCU
集成C51编译器
支持硬件仿真调试
Proteus
专业的电路仿真软件,支持51单片机的硬件电路设计和程序仿真,无需实际硬件即可验证电路。
支持电路图设计
支持单片机程序仿真
支持示波器等虚拟仪器
STC-ISP
STC单片机专用的程序下载工具,支持通过串口将程序烧录到单片机中,操作简单方便。
支持所有STC系列单片机
自动检测串口
支持波特率自动识别
PuTTY
常用的串口调试工具,用于与单片机进行串行通信,查看调试信息和发送命令。
支持串口/Telnet/SSH
免费开源
支持多种编码格式
Notepad++
强大的代码编辑器,支持语法高亮和代码折叠,适合编写51单片机汇编和C语言程序。
支持多种编程语言
支持插件扩展
轻量级,启动快
Git
版本控制工具,用于管理代码版本,方便团队协作和代码备份。
分布式版本控制
支持分支管理
与GitHub/Gitee无缝集成
A.5 在线资源
精选的51单片机学习在线资源,涵盖官方文档、教程、社区等多个方面,帮助你更好地学习和开发。