
| 数据类型 | 关键字 | 位数 | 数范围 |
|---|---|---|---|
| 无符号字符型 | unsigned char | 8 | 0~255 |
| 有符号字符型 | char | 8 | -128~127 |
| 无符号整型 | unsigned int | 16 | 0~65535 |
| 有符号整型 | int | 16 | -32768~32767 |
| 无符号长整型 | unsigned long | 32 | 0~ 2 32 − 1 2^{32}-1 232−1 |
| 有符号长整型 | long | 32 | − 2 31 -2^{31} −231 ~ 2 31 − 1 2^{31}-1 231−1 |
| 单精度浮点型 | float | 32 | 3.4e-38~3.4e38 |
| 双精度浮点型 | double | 64 | 1.7e-308~1.7e308 |
| 类型 | 长度 | 值域 | 说明 |
|---|---|---|---|
| bit | 位 | 0/1 | 位变量声明 |
| sbit | 位 | 0/1 | 特殊功能位声明 |
| sfr | 8位=1字节 | 0~255 | 特殊功能寄存器声明 |
| Sfr16 | 16位=2字节 | 0-65535 | Srf的16位数据声明 |
| * | 1~3字节 | 对象的地址 |
示例:
sfr SCON=0x98;
sbit T1=SCON^1; # 取SCON第一位
'a';\0;变量是用来存储和处理数据的标识符。
& 按位与| 按位或^ 按位异或~ 按位取反<< 左移>> 右移表达式1, 表达式2, ……表达式n
表达式从左到右运算,返回最右边一个表达式的值。
unsigned char x[5];
unsigned int y[3]={1,2,3};
char string1[10];
SFR(Special Function Registers,特殊功能寄存器)是嵌入式系统中一种特殊类型的寄存器,它们被设计用来控制单片机的各种功能和外设。在8051系列单片机中,SFR被广泛应用,用于控制IO口、定时器、串口等硬件模块的工作。
用途:
特点:
常见的SFR:
sbit是用于声明单片机特殊功能寄存器(Special Function Registers,SFR)中的位(bit)的关键字。
例如IO口、定时器、串口等。sbit关键字用于声明SFR中的某一位,使得程序员可以通过该位进行控制和操作。
例如,假设有一个SFR称为P1,代表单片机的一个IO口,而我们想要操作该口的第0位,我们可以使用sbit进行声明,如下所示:
sbit LED = P1^0; // 声明P1寄存器中的第0位,并将其命名为LED
这样,我们就可以通过操作LED变量来控制或者读取P1口的第0位的值了,例如:
LED = 1; // 将P1口的第0位设置为高电平
除了 sbit 外,在 C51 编程中还有其他一些特殊的数据操作方式,用于访问特定的数据结构或者硬件资源。以下是一些常见的特殊数据操作方式:
sfrbit 关键字用于声明特殊功能寄存器的位,类似于 sbit,但用于声明在 SFR 中的位。sfrbit P1_0 = 0x90 ^ 0; 声明了一个名为 P1_0 的位,对应于 SFR P1 中的第 0 位。sfr16 关键字用于声明一个 16 位的特殊功能寄存器,通常用于声明定时器/计数器等功能。sfr16 TMR0 = 0x8C; 声明了一个名为 TMR0 的 16 位 SFR,其地址为 0x8C。sfr16bit 关键字用于声明 16 位特殊功能寄存器中的位。sfr16bit TMR0_1 = 0x8C ^ 1; 声明了一个名为 TMR0_1 的位,对应于 16 位 SFR TMR0 中的第 1 位。
晶振一般选择12M或11.0592Mhz,
复位条件:在RST/VPD引脚端出现 >=10ms时间的高电平时复位。 高电平要>=3V。
一般有两种实现方式;

上电时,电容通交流、断直流,rst会直连5V高电平。
然后电容开始充电,充电完成后,电容对直流隔断,rst通过r2连到地低电平。
按下开关时,电容放电,放电过程电容通交流,RST相当于连5V高电平。由于R1的阻值很小(有的电路设计里不用这个R1,但直接对电容短接放电可能不太好),rst也可以通过这个通路连接高电平。

供电脑使用USB转TTL连接电路板。这里使用CH340C芯片,它自带晶阵,芯片7、8脚是空的。
如果使用CH340G需要外接晶振。

CH340C的13、14脚要对应普中开发板下载程序使用,通过Q5三极管控制Q3MOS的通断。
当DTR高电平、RTS低电平,三极管导通,MOS会导通,VCC通电。
当DTR低电平、RTS高电平,三极管截止,Q3的G脚被R20拉低,MOS管截止,VCC没有电源。
这个电路可以在使用普中开发板的下载程序省掉冷启动的过程。