打印
[经验分享]

C51数据类型及最小系统

[复制链接]
34|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、 C51数据类型
1. 基本类型
数值类型:整型(hort,int,long)、浮点型(float,double)
字符类型 char
构造类型:数组、结构体、共用体、枚举
指针
空类型 void



2. C51扩充数据类型



示例:

sfr SCON=0x98;
sbit T1=SCON^1;    # 取SCON第一位


3. C51运算量
(1)常量
整型常量,如 长整型:L结尾;
浮点型常量
字符型常量:单引号定义,如'a';
字符串型常量:双引号定义,如: “DA”,字符串结尾处会有\0;
(2)变量
变量是用来存储和处理数据的标识符。

(3)位运算符
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移
>> 右移
(4)逗号运算符
表达式1, 表达式2, ……表达式n

表达式从左到右运算,返回最右边一个表达式的值。

4. 数组
unsigned char x[5];
unsigned int y[3]={1,2,3};
char string1[10];


二、特殊数据操作方式
1. sfr
SFR(Special Function Registers,特殊功能寄存器)是嵌入式系统中一种特殊类型的寄存器,它们被设计用来控制单片机的各种功能和外设。在8051系列单片机中,SFR被广泛应用,用于控制IO口、定时器、串口等硬件模块的工作。

用途:

SFR用于控制和配置单片机的各种硬件功能,包括IO口的输入输出控制、定时器的工作模式设置、串口通信的参数配置等。
它们是单片机内部的特殊寄存器,可以直接由CPU访问和操作。
特点:

SFR通常具有较短的位宽度,通常为1位或者几位,用于控制特定硬件模块的某些特定功能。
它们在单片机的内存映射中占据了特定的地址空间,可以通过读写该地址来访问对应的SFR。
有些SFR具有只读属性,用于读取硬件状态或者状态标志,而有些具有可读写属性,用于配置硬件工作模式。
常见的SFR:

GPIO口控制寄存器:用于控制IO口的输入输出状态和电平,如P0、P1、P2、P3等。
定时器控制寄存器:用于配置定时器的工作模式、计数值、中断使能等,如TMOD、TCON等。
串口控制寄存器:用于配置串口通信的波特率、数据格式、中断使能等,如SCON、SBUF等。
中断控制寄存器:用于控制中断的使能和优先级,如IE、IP等。
2. sbit
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 编程中还有其他一些特殊的数据操作方式,用于访问特定的数据结构或者硬件资源。以下是一些常见的特殊数据操作方式:

3. sfrbit:
sfrbit 关键字用于声明特殊功能寄存器的位,类似于 sbit,但用于声明在 SFR 中的位。
例如:sfrbit P1_0 = 0x90 ^ 0; 声明了一个名为 P1_0 的位,对应于 SFR P1 中的第 0 位。
4. sfr16:
sfr16 关键字用于声明一个 16 位的特殊功能寄存器,通常用于声明定时器/计数器等功能。
例如:sfr16 TMR0 = 0x8C; 声明了一个名为 TMR0 的 16 位 SFR,其地址为 0x8C。
5. sfr16bit:
sfr16bit 关键字用于声明 16 位特殊功能寄存器中的位。
例如:sfr16bit TMR0_1 = 0x8C ^ 1; 声明了一个名为 TMR0_1 的位,对应于 16 位 SFR TMR0 中的第 1 位。
二、51 最小系统构成
1. 晶振电路



晶振一般选择12M或11.0592Mhz,

12M更容易计算机器周期,
串口通讯中使用11.0592MHz更适合,在串行通信设置波特率时误差为0.
晶振起振时一瞬间会产生电感,2端加无极性旁路电容,用来消除起振电感,容量一般选择 10-33p。
2. 复位电路
复位条件:在RST/VPD引脚端出现 >=10ms时间的高电平时复位。 高电平要>=3V。
一般有两种实现方式;

上电复位
手动按键复位
(1)上电复位运行过程



上电时,电容通交流、断直流,rst会直连5V高电平。
然后电容开始充电,充电完成后,电容对直流隔断,rst通过r2连到地低电平。

(2)按键复位
按下开关时,电容放电,放电过程电容通交流,RST相当于连5V高电平。由于R1的阻值很小(有的电路设计里不用这个R1,但直接对电容短接放电可能不太好),rst也可以通过这个通路连接高电平。

3. 电源电路



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



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

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/xundh/article/details/127991928

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

56

帖子

0

粉丝