在前面的STM32中我并没有直接对寄存器进行操作,而是通过固件库直接引用进行各个外设的配置和应用,现在,我开始进行寄存器的学习(51单片机)。
我们先简单看一下80C51/52的微控制头文件 <REG52.h>
一、字节寄存器定义
- 定义了一系列的特殊功能寄存器,如 P0、P1、P2、P3、PSW、ACC、B、SP、DPL、DPH、PCON、TCON、TMOD、TL0、TL1、TH0、TH1、IE、IP、SCON、SBUF。
- 对于 8052 扩展部分,定义了 T2CON、RCAP2L、RCAP2H、TL2、TH2。
二、位寄存器定义
- PSW 相关位
- 定义了 PSW 寄存器中的各个位,如 CY(进位标志位)、AC(辅助进位标志位)、F0(用户标志位)、RS1 和 RS0(寄存器组选择位)、OV(溢出标志位)、P(8052 特有的奇偶校验位)。
- TCON 相关位
- 定义了 TCON 寄存器中的各个位,如 TF1(定时器 1 溢出标志位)、TR1(定时器 1 运行控制位)、TF0、TR0、IE1、IT1、IE0、IT0。
- IE 相关位
- 定义了 IE 寄存器中的各个位,如 EA(总中断允许位)、ET2(8052 特有的定时器 2 中断允许位)、ES、ET1、EX1、ET0、EX0。
- IP 相关位
- 定义了 IP 寄存器中的各个位,如 PT2、PS、PT1、PX1、PT0、PX0。
- P3 相关位
- 定义了 P3 端口的各个位,如 RD(外部数据存储器读选通位)、WR、T1、T0、INT1、INT0、TXD、RXD。
- SCON 相关位
- 定义了 SCON 寄存器中的各个位,如 SM0、SM1、SM2、REN、TB8、RB8、TI、RI。
- P1 相关位(8052 特有的)
- 定义了 P1 端口的两个位 T2EX 和 T2。
- T2CON 相关位
- 定义了 T2CON 寄存器中的各个位,如 TF2、EXF2、RCLK、TCLK、EXEN2、TR2、C_T2、CP_RL2。
这个微控制器有四个端口,分别是:
- P0:8 位并行输入 / 输出端口。
- P1:8 位并行输入 / 输出端口。
- P2:8 位并行输入 / 输出端口。
- P3:8 位并行输入 / 输出端口,同时部分引脚具有第二功能。
比如我们要操作一个蜂鸣器或者一个LED灯的亮暗,我们就可以查看想要在那个引脚处进行驱动,执行高低电平,这里是控制一个低电平触发的蜂鸣器。
sbit等价于set bit,也就是设置引脚的作用,在这个程序中我们设置了P1端口的第1位,并设置为低电平态。
重温继电器:
- 继电器内部主要由线圈和触点组成。当线圈两端加上合适的电压时,会产生磁场,使触点状态发生改变。在低电平触发的情况下,线圈通过低电平信号驱动电流,从而产生磁场使继电器动作。
- 继电器的触点可以用于控制外部电路的通断,例如连接高电压、大电流的负载。
使用继电器实现对LED灯的控制
我们如果想写一个延迟的函数可以借助STC—ISP下载器,在这里可以直接生成相对应的代码。
利用震动传感器实现震动感应灯
注:震动传感器为低电平触发
中断知识:
在 51 单片机中,中断是一种重要的机制,它允许单片机在执行主程序的过程中,暂停当前任务,转而去处理更紧急的事件,处理完后再返回原来被中断的地方继续执行主程序。
一、中断的作用
- 提高系统的实时性:当有紧急事件发生时,能够及时响应,而不必等待主程序循环执行到相应的位置。比如,外部设备发送数据需要立即处理,通过中断可以快速响应,避免数据丢失。
- 实现多任务处理:在单一处理器上模拟多任务的效果。不同的中断源可以代表不同的任务,单片机可以根据中断的优先级依次处理这些任务。
二、中断源
51 单片机通常有多个中断源,主要包括:
- 外部中断:由外部信号触发,可以设置为低电平触发或下降沿触发。例如,按键按下时产生的外部中断信号。
- 定时器中断:当定时器计数溢出时产生中断。可以用于定时控制、产生周期性的信号等。
- 串口中断:当串口接收到数据或发送完数据时产生中断,方便进行数据的接收和发送处理。
三、中断优先级
51 单片机具有两级中断优先级,可以设置高优先级和低优先级中断。当多个中断同时发生时,高优先级的中断会先被响应。如果同一优先级的中断同时发生,则按照硬件查询顺序响应。
四、中断的过程
- 中断请求:当中断源产生中断信号时,