kell,编写51单片机出现报错warning C316:unterminated conditionals一般解决方法

由于头文件丢失#endif   出现报错warning C316:unterminated conditionals

解决方式就是在头文件尾部添加#endif,如图所示

鼠标右击头文件选择打开52头文件

既然打开了头文件就来介绍里面的内容吧

/*--------------------------------------------------------------------------
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__


/*  特殊字节(8位)寄存器 */
sfr    P0    =    0x80;    // P0口特殊寄存器寻址位
sfr    P1    =    0x90;    // P1口特殊寄存器寻址位
sfr    P2    =    0xA0;    // P2口特殊寄存器寻址位
sfr    P3    =    0xB0;    // P3口特殊寄存器寻址位
sfr    PSW    =    0xD0;    //程序状态字寄存器
sfr    ACC    =    0xE0;    //累加器
sfr    B    =    0xF0;    //B 特殊寄存器
sfr    SP    =    0x81;    //堆栈指针寄存器
sfr    DPL    =    0x82;    //数字指针(低位)
sfr    DPH    =    0x83;    //数字指针(高位)
sfr    PCON    =    0x87;    //电源控制寄存器
sfr    TCON    =    0x88;    //定时器/计数器 0 和 1 控制
sfr    TMOD    =    0x89;    //定时器/计数器 0 和 1 模式
sfr    TL0    =    0x8A;    //定时器/计数器 0 低8位寄存器 
sfr    TL1    =    0x8B;    //定时器/计数器 1低8位寄存器  
sfr    TH0    =    0x8C;    //定时器/计数器 0高8位寄存器  
sfr    TH1    =    0x8D;    //定时器/计数器 1高8位寄存器
sfr    IE    =    0xA8;    //中断允许寄存器
sfr    IP    =    0xB8;    //中断优先寄存器(低)
sfr    SCON    =    0x98;    //串口控制寄存器
sfr    SBUF    =    0x99;    //串口数据缓冲器

/*  8052扩展寄存器 */
sfr    T2CON    =    0xC8;    //定时器/计数器2 控制
sfr    RCAP2L    =    0xCA;    //定时器/计数器2 重载/捕捉低位
sfr    RCAP2H    =    0xCB;    //定时器/计数器2 重载/捕捉高位
sfr    TL2    =    0xCC;    //定时器/计数器2 低位
sfr    TH2    =    0xCD;    //定时器/计数器2 高位

/*  位寄存器  */


/*  PSW (程序状态字寄存器) */
sbit    CY    =    PSW^7;    //进位、借位标志。进位、借位CY=1;否则CY=0
sbit    AC    =    PSW^6;    //辅助进位、借位标志。当D3向D4有借位或进位时,AC=1;否则AC=0
sbit    F0    =    PSW^5;    //用户标志位
sbit    RS1    =    PSW^4;    //寄存器组选择控制位1
sbit    RS0    =    PSW^3;    //寄存器组选择控制位0
sbit    OV    =    PSW^2;    //溢出标志。有溢出OV=1,否则OV=0
sbit    F1    =    PSW^1;    //保留位,无定义
sbit    P    =    PSW^0;    //8052 only 奇偶校验标志位,由硬件置位或清0;
                //存在ACC中的运算结果有奇数个1时P=1,否则P=0


/*  TCON (定时器/计数器 0 和 1 控制) */
sbit    TF1    =    TCON^7;    //定时器1溢出标志位。当字时器1计满溢出时, 
                //由硬件使TF1置“1”,并且申请中断。
                //进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清 “0”
sbit    TR1    =    TCON^6;    //定时器1运行控制位。由软件清“0”关闭定时器1。
                //当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;
                //当GATE=0,TR1置“1” 启动定时器1
sbit    TF0    =    TCON^5;    //定时器0溢出标志。其功能及操作情况同TF1。
sbit    TR0    =    TCON^4;    //定时器0运行控制位。其功能及操作情况同TR1。
sbit    IE1    =    TCON^3;    //外部中断1请求标志。
sbit    IT1    =    TCON^2;    //外部中断1触发方式选择位。
sbit    IE0    =    TCON^1;    //外部中断0请求标志。
sbit    IT0    =    TCON^0;    //外部中断0触发方式选择位。


/* IE (中断允许寄存器) */
sbit    EA    =    IE^7;    //允许/禁止总中断
sbit    ET2    =    IE^5;    //8052 only 允许/禁止定时器2(T2)中断
sbit    ES    =    IE^4;    //允许/禁止串口中断
sbit    ET1    =    IE^3;    //允许/禁止T1溢出中断
sbit    EX1    =    IE^2;    //允许/禁止外部中断1(INT1)
sbit    ET0    =    IE^1;    //允许/禁止T0溢出中断
sbit    EX0    =    IE^0;    //允许/禁止外部中断0(INT0)


/* IP (中断优先寄存器低) */
sbit    PT2    =    IP^5;    //定时/计数器T2优先级设定位。
sbit    PS    =    IP^4;    //串行口优先级设定位;
sbit    PT1    =    IP^3;    //定时/计数器T1优先级设定位;
sbit    PX1    =    IP^2;    //外部中断0优先级设定位;
sbit    PT0    =    IP^1;    //定时/计数器T0优先级设定位;
sbit    PX0    =    IP^0;    //外部中断0优先级设定位;

/* P3 (第二功能) */
sbit    RD    =    P3^7;    //外部数据存储器读脉冲
sbit    WR    =    P3^6;    //外部数据存储器写脉冲
sbit    T1    =    P3^5;    //定时器/计数器1外部输入
sbit    T0    =    P3^4;    //定时器/计数器0外部输入
sbit    INT1    =    P3^3;    //外部中断0。
sbit    INT0    =    P3^2;    //外部中断1。
sbit    TXD    =    P3^1;    //串行数据输出口
sbit    RXD    =    P3^0;    //串行数据输入口


/* SCON(控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制) */    
sbit    SM0    =    SCON^7;    //串行口工作方式控制位0。
sbit    SM1    =    SCON^6;    //串行口工作方式控制位1。
sbit    SM2    =    SCON^5;    //多机通信控制位。 
sbit    REN    =    SCON^4;    //允许接收位。用于控制数据接收的允许和禁止,
                // ren=1时,允许接收,ren=0时,禁止接收。
sbit    TB8    =    SCON^3;    //发送接收数据位8。
sbit    RB8    =    SCON^2;    //接收数据位8。
sbit    TI    =    SCON^1;    //发送中断标志位。
sbit    RI    =    SCON^0;    //接收中断标志位。 


/*  P1(第二功能) */
sbit    T2EX    =    P1^1;    // 8052 only    定时/计数器2捕捉/重装入触发
sbit    T2    =    P1^0;    // 8052 only    定时/计数器2外部输入


/*  T2CON  (定时器/计数器2 控制) */
sbit    TF2    =    T2CON^7;    //定时器2 溢出标记
sbit    EXF2    =    T2CON^6;    //定时器2 外部标记
sbit    RCLK    =    T2CON^5;    //0=串口时钟应用定时器1 溢出,  1=定时器 2
sbit    TCLK    =    T2CON^4;    //0=串口时钟应用定时器1 溢出,  1=定时器 2
sbit    EXEN2    =    T2CON^3;    //定时器 2 外部允许
sbit    TR2    =    T2CON^2;    //0=停止定时器, 1=开始定时器
sbit    C_T2    =    T2CON^1;    //0=定时器, 1=计数器
sbit    CP_RL2    =    T2CON^0;    //0=重载, 1=捕捉选择。


#endif

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值