51单片机寄存器备注版本

本文档详细描述了80C52和80C32微控制器的通用头文件REG52.H,包括各寄存器(如P0-P3、PSW、TCON、TMOD等)的定义,以及定时器、中断控制和串行口配置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*--------------------------------------------------------------------------
REG52.H

Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __REG52_H__
#define __REG52_H__

/*  BYTE Registers  */
sfr P0    = 0x80;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;
sfr PSW   = 0xD0;
sfr ACC   = 0xE0;
sfr B     = 0xF0;
sfr SP    = 0x81;
sfr DPL   = 0x82;
sfr DPH   = 0x83;
sfr PCON  = 0x87;
sfr TCON  = 0x88;
/*
D7     D6   D5   D4   D3      D2    D1   D0
GATE  C/T   M1   M0   GATE    C/T   M1   M0

GATE=1  T0/T1  必须在INT0/INT1 是高点位才初始化
C/T =1  使用外部引脚进行计数脉冲 
C/T =0   使用TH  TL 做定时器
计数器工作模式
M1   M0  工作模式   说明
0    0      0       13位计时计数器  8192
0	   1		  1       16位计时计数器  65536
1		 0      2       8位计数器,可自动重新载入计数值 256
1    1      3       当两组独立的8位计数器 256  T0 T1不能同时用
*/
sfr TMOD  = 0x89;
sfr TL0   = 0x8A;
sfr TL1   = 0x8B;
sfr TH0   = 0x8C;
sfr TH1   = 0x8D;
sfr IE    = 0xA8;
sfr IP    = 0xB8;
sfr SCON  = 0x98;
sfr SBUF  = 0x99;


sfr T2CON  = 0xC8;
sfr T2MOD  = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2    = 0xCC;
sfr TH2    = 0xCD;




/*  BIT Registers  */
/*程序状态字*/
/*  PSW  */
/*CY=1 表示运算有进位*/
sbit CY    = PSW^7;
/*补助进位  AC=1 表示运算时低4位有进位产生*/
sbit AC    = PSW^6;
/*用户自行设置*/
sbit F0    = PSW^5;
/*
RS1  RS0
 0    0     寄存器组0
 0    1     寄存器组1
 1    0     寄存器组2
 1    1     寄存器组3

*/
sbit RS1   = PSW^4;
sbit RS0   = PSW^3;
/*OV=1 表示有溢出产生*/
sbit OV    = PSW^2;
/*P=0 A中1的个数为偶数*/
sbit P     = PSW^0; //8052 only


/*计数器控制寄存器*/
/*  TCON  */
/*TF1=1 T1有中断产生*/
sbit TF1   = TCON^7;
/*TR1=1 T1开始运行*/
sbit TR1   = TCON^6;
/*TF0=1 T0 有中断产生*/
sbit TF0   = TCON^5;
/*TR0=1 T0 开始运行*/
sbit TR0   = TCON^4;
/*IE1/0 =1  INT1/0 有中断产生*/
sbit IE1   = TCON^3;
/*IT1/0 =1 INT1/0为下降沿触发,IT1/0 =1, INT1/0 为上升沿触发*/
sbit IT1   = TCON^2;
sbit IE0   = TCON^1;
sbit IT0   = TCON^0;

/*中断允许寄存器*/
/*  IE  */
/*EA=1 整体中断允许位*/
sbit EA    = IE^7;
/*ET2=1  T2 中断允许*/
sbit ET2   = IE^5; //8052 only
/*ES=1  串行允许位*/
sbit ES    = IE^4;
/*ET1=1 T1中断允许*/
sbit ET1   = IE^3;
/*INT1 中断允许位*/
sbit EX1   = IE^2;
/*T0 中断允许位*/
sbit ET0   = IE^1;
/*INT0 中断允许位*/
sbit EX0   = IE^0;

/*中断优先次序寄存器*/
/*  IP  */
/*T2*/
sbit PT2   = IP^5;
/*串行口*/
sbit PS    = IP^4;
/*T1*/
sbit PT1   = IP^3;
/*INT1*/
sbit PX1   = IP^2;
/*T0*/
sbit PT0   = IP^1;
/*INT0*/
sbit PX0   = IP^0;

/*  P3  */
sbit RD    = P3^7;

sbit WR    = P3^6;
/*定时器1*/
sbit T1    = P3^5;
/*定时器0*/
sbit T0    = P3^4;
/*中断1*/
sbit INT1  = P3^3;
/*中断0*/
sbit INT0  = P3^2;
/*串口发*/
sbit TXD   = P3^1;
/*串口收*/
sbit RXD   = P3^0;


/*串行口控制寄存器*/
/*  SCON  */
/*
SM0  SM1  工作模式      说明              波特率
0     0      0        移位寄存器         F/2
0     1      1        8bit UART          T1 SMOD 决定
1     0      2        9bit UART          F/64   F/32
1     1      3        9bit  UART         T1  SMOD 决定
*/
sbit SM0   = SCON^7;
sbit SM1   = SCON^6;
/*
工作模式0  SM2=0
工作模式1  SM2=1 只有收到有效的停止位才激活RI
工作模式2/3  多机通讯控制位  SM2=1 则接受的第9位数据为0 时不激活RI
*/
sbit SM2   = SCON^5;
/*REN=1 允许接收数据*/
sbit REN   = SCON^4;
/*模式2 3时为第9位的 发送位 */
sbit TB8   = SCON^3;
/*模式2 3时为第9位的 接收位  方式1  SM2=1,RB8为接收停止位  */
sbit RB8   = SCON^2;
/*TI=1 表示UART 传送完成 产生中断*/
sbit TI    = SCON^1;
/*RI=1 表示UART 接收完成 产生中断*/
sbit RI    = SCON^0;



/*
PCON
D7    D6  D5  D4  D3    D2    D1   D0
SMOD              CF1   GF0   PD   IDL
SMOD=1  波特率倍增位是 16位   SMOD=0是32位
PD=1   进入停止模式  复位或外部中断产生时回复
闲置模式控制位 IDL=1 进入闲置模式  复位或者重新上电时恢复
*/
/*sbit SMOD = PCON^7;*/

/*
常用波特率计算 11.0592M
波特率   TH1    SMOD
1200     E8       0
2400     F4				0
4800     FA      0
9600     FD      0 
19200    FD      1
方式1
SMOD=0     brate = 1/32 * fc/(12*(256-TH1))
SMOD=1     brate = 1/16 *fc/(12*(256-TH1))
方式2
SMOD=0     brate = 1/32  * fc/12
SMOD=1     brate = 1/16  *fc/12

*/








/*  P1  */
sbit T2EX  = P1^1; // 8052 only
sbit T2    = P1^0; // 8052 only
            

/*定时器T2*/
/*  T2CON  */
/*T2中断溢出标志位  方式2 3  置TF2  方式3不置*/
sbit TF2    = T2CON^7;
/*T2 外部中断标志位,EXF2=1  P1.1发生下降沿时会置EXF2*/
sbit EXF2   = T2CON^6;
/*T2 工作方式

RCLK/TCLK   CP/RL2    TR2  工作方式   备注
0            0         1    1         16位常数自动再装入方式
0		         1         1    2         16位捕获模式
1            X         1    3         串行口波特率发生方式
X            X         X    4         停止

*/
sbit RCLK   = T2CON^5;
sbit TCLK   = T2CON^4;
sbit EXEN2  = T2CON^3;
sbit TR2    = T2CON^2;
/*外部计数器/定时器选择位, C/T2=1 为计数器 计数脉冲来自 P1.0  C/T2=0为定时器,以振荡脉冲的12分频信号为计数信号*/
sbit C_T2   = T2CON^1;
/*CP/RL2 =1 捕获模式   CP/RL2 =0 自动再装入方式   RCLK或TCLK 为1  此位可忽略*/
sbit CP_RL2 = T2CON^0;

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢娘蓝桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值