xiaobendan 发表于 3 天前

一个几年前的项目,重新编译,找不到15W408S.H了 | 解决了

改成包含STC\STC15.H,结果编译过了,写到板子上,不行。根本 不对,是啥问题?谁有早期的那个头文件给一下

神农鼎 发表于 3 天前





#ifndef __STC15_H__
#define __STC15_H__

/////////////////////////////////////////////////

//包含本头文件后,不用另外再包含"REG51.H"

#include "stdio.h"
#include "intrins.h"

/////////////////////////////////////////////////

sfr         P0          =         0x80;
    sbit    P00         =         P0^0;
    sbit    P01         =         P0^1;
    sbit    P02         =         P0^2;
    sbit    P03         =         P0^3;
    sbit    P04         =         P0^4;
    sbit    P05         =         P0^5;
    sbit    P06         =         P0^6;
    sbit    P07         =         P0^7;

sfr         SP          =         0x81;
sfr         DPL         =         0x82;
sfr         DPH         =         0x83;
sfr         S4CON       =         0x84;
sfr         S4BUF       =         0x85;
sfr         PCON      =         0x87;

sfr         TCON      =         0x88;
    sbit    TF1         =         TCON^7;
    sbit    TR1         =         TCON^6;
    sbit    TF0         =         TCON^5;
    sbit    TR0         =         TCON^4;
    sbit    IE1         =         TCON^3;
    sbit    IT1         =         TCON^2;
    sbit    IE0         =         TCON^1;
    sbit    IT0         =         TCON^0;

sfr         TMOD      =         0x89;
sfr         TL0         =         0x8A;
sfr         TL1         =         0x8B;
sfr         TH0         =         0x8C;
sfr         TH1         =         0x8D;
sfr         AUXR      =         0x8E;
sfr         INT_CLKO    =         0x8F;

sfr         P1          =         0x90;
    sbit    P10         =         P1^0;
    sbit    P11         =         P1^1;
    sbit    P12         =         P1^2;
    sbit    P13         =         P1^3;
    sbit    P14         =         P1^4;
    sbit    P15         =         P1^5;
    sbit    P16         =         P1^6;
    sbit    P17         =         P1^7;

sfr         P1M1      =         0x91;
sfr         P1M0      =         0x92;
sfr         P0M1      =         0x93;
sfr         P0M0      =         0x94;
sfr         P2M1      =         0x95;
sfr         P2M0      =         0x96;
sfr         CLK_DIV   =         0x97;

sfr         SCON      =         0x98;
    sbit    SM0         =         SCON^7;
    sbit    SM1         =         SCON^6;
    sbit    SM2         =         SCON^5;
    sbit    REN         =         SCON^4;
    sbit    TB8         =         SCON^3;
    sbit    RB8         =         SCON^2;
    sbit    TI          =         SCON^1;
    sbit    RI          =         SCON^0;

sfr         SBUF      =         0x99;
sfr         S2CON       =         0x9A;
sfr         S2BUF       =         0x9B;
sfr         P1ASF       =         0x9D;

sfr         P2          =         0xA0;
    sbit    P20         =         P2^0;
    sbit    P21         =         P2^1;
    sbit    P22         =         P2^2;
    sbit    P23         =         P2^3;
    sbit    P24         =         P2^4;
    sbit    P25         =         P2^5;
    sbit    P26         =         P2^6;
    sbit    P27         =         P2^7;

sfr         BUS_SPEED   =         0xA1;
sfr         AUXR1       =         0xA2;
sfr         P_SW1       =         0xA2;

sfr         IE          =         0xA8;
    sbit    EA          =         IE^7;
    sbit    ELVD      =         IE^6;
    sbit    EADC      =         IE^5;
    sbit    ES          =         IE^4;
    sbit    ET1         =         IE^3;
    sbit    EX1         =         IE^2;
    sbit    ET0         =         IE^1;
    sbit    EX0         =         IE^0;

sfr         SADDR       =         0xA9;
sfr         WKTCL       =         0xAA;
sfr         WKTCH       =         0xAB;
sfr         S3CON       =         0xAC;
sfr         S3BUF       =         0xAD;
sfr         IE2         =         0xAF;

sfr         P3          =         0xB0;
    sbit    P30         =         P3^0;
    sbit    P31         =         P3^1;
    sbit    P32         =         P3^2;
    sbit    P33         =         P3^3;
    sbit    P34         =         P3^4;
    sbit    P35         =         P3^5;
    sbit    P36         =         P3^6;
    sbit    P37         =         P3^7;

    sbit    RD          =         P3^7;
    sbit    WR          =         P3^6;
    sbit    T1          =         P3^5;
    sbit    T0          =         P3^4;
    sbit    INT1      =         P3^3;
    sbit    INT0      =         P3^2;
    sbit    TXD         =         P3^1;
    sbit    RXD         =         P3^0;

sfr         P3M1      =         0xB1;
sfr         P3M0      =         0xB2;
sfr         P4M1      =         0xB3;
sfr         P4M0      =         0xB4;
sfr         IP2         =         0xB5;

sfr         IP          =         0xB8;
    sbit    PPCA      =         IP^7;
    sbit    PLVD      =         IP^6;
    sbit    PADC      =         IP^5;
    sbit    PS          =         IP^4;
    sbit    PT1         =         IP^3;
    sbit    PX1         =         IP^2;
    sbit    PT0         =         IP^1;
    sbit    PX0         =         IP^0;

sfr         SADEN       =         0xB9;
sfr         P_SW2       =         0xBA;
sfr         ADC_CONTR   =         0xBC;
sfr         ADC_RES   =         0xBD;
sfr         ADC_RESL    =         0xBE;

sfr         P4          =         0xC0;
    sbit    P40         =         P4^0;
    sbit    P41         =         P4^1;
    sbit    P42         =         P4^2;
    sbit    P43         =         P4^3;
    sbit    P44         =         P4^4;
    sbit    P45         =         P4^5;
    sbit    P46         =         P4^6;
    sbit    P47         =         P4^7;

sfr         WDT_CONTR   =         0xC1;
sfr         IAP_DATA    =         0xC2;
sfr         IAP_ADDRH   =         0xC3;
sfr         IAP_ADDRL   =         0xC4;
sfr         IAP_CMD   =         0xC5;
sfr         IAP_TRIG    =         0xC6;
sfr         IAP_CONTR   =         0xC7;

sfr         P5          =         0xC8;
    sbit    P50         =         P5^0;
    sbit    P51         =         P5^1;
    sbit    P52         =         P5^2;
    sbit    P53         =         P5^3;
    sbit    P54         =         P5^4;
    sbit    P55         =         P5^5;
    sbit    P56         =         P5^6;
    sbit    P57         =         P5^7;

sfr         P5M1      =         0xC9;
sfr         P5M0      =         0xCA;
sfr         P6M1      =         0xCB;
sfr         P6M0      =         0xCC;
sfr         SPSTAT      =         0xCD;
sfr         SPCTL       =         0xCE;
sfr         SPDAT       =         0xCF;

sfr         PSW         =         0xD0;
    sbit    CY          =         PSW^7;
    sbit    AC          =         PSW^6;
    sbit    F0          =         PSW^5;
    sbit    RS1         =         PSW^4;
    sbit    RS0         =         PSW^3;
    sbit    OV          =         PSW^2;
    sbit    F1          =         PSW^1;
    sbit    P         =         PSW^0;

sfr         T4T3M       =         0xD1;
sfr         T4H         =         0xD2;
sfr         T4L         =         0xD3;
sfr         T3H         =         0xD4;
sfr         T3L         =         0xD5;
sfr         T2H         =         0xD6;
sfr         T2L         =         0xD7;

sfr         T3T4M       =         0xD1;
sfr         TH4         =         0xD2;
sfr         TL4         =         0xD3;
sfr         TH3         =         0xD4;
sfr         TL3         =         0xD5;
sfr         TH2         =         0xD6;
sfr         TL2         =         0xD7;

sfr         CCON      =         0xD8;
    sbit    CF          =         CCON^7;
    sbit    CR          =         CCON^6;
    sbit    CCF2      =         CCON^2;
    sbit    CCF1      =         CCON^1;
    sbit    CCF0      =         CCON^0;

sfr         CMOD      =         0xD9;
sfr         CCAPM0      =         0xDA;
sfr         CCAPM1      =         0xDB;
sfr         CCAPM2      =         0xDC;

sfr         ACC         =         0xE0;
    sbit    ACC0      =         ACC^0;
    sbit    ACC1      =         ACC^1;
    sbit    ACC2      =         ACC^2;
    sbit    ACC3      =         ACC^3;
    sbit    ACC4      =         ACC^4;
    sbit    ACC5      =         ACC^5;
    sbit    ACC6      =         ACC^6;
    sbit    ACC7      =         ACC^7;

sfr         P7M1      =         0xE1;
sfr         P7M0      =         0xE2;
sfr         CMPCR1      =         0xE6;
sfr         CMPCR2      =         0xE7;

sfr         P6          =         0xE8;
    sbit    P60         =         P6^0;
    sbit    P61         =         P6^1;
    sbit    P62         =         P6^2;
    sbit    P63         =         P6^3;
    sbit    P64         =         P6^4;
    sbit    P65         =         P6^5;
    sbit    P66         =         P6^6;
    sbit    P67         =         P6^7;

sfr         CL          =         0xE9;
sfr         CCAP0L      =         0xEA;
sfr         CCAP1L      =         0xEB;
sfr         CCAP2L      =         0xEC;

sfr         B         =         0xF0;
    sbit    B0          =         B^0;
    sbit    B1          =         B^1;
    sbit    B2          =         B^2;
    sbit    B3          =         B^3;
    sbit    B4          =         B^4;
    sbit    B5          =         B^5;
    sbit    B6          =         B^6;
    sbit    B7          =         B^7;

sfr         PWMCFG      =         0xF1;
sfr         PCA_PWM0    =         0xF2;
sfr         PCA_PWM1    =         0xF3;
sfr         PCA_PWM2    =         0xF4;
sfr         PWMCR       =         0xF5;
sfr         PWMIF       =         0xF6;
sfr         PWMFDCR   =         0xF7;

sfr         P7          =         0xF8;
    sbit    P70         =         P7^0;
    sbit    P71         =         P7^1;
    sbit    P72         =         P7^2;
    sbit    P73         =         P7^3;
    sbit    P74         =         P7^4;
    sbit    P75         =         P7^5;
    sbit    P76         =         P7^6;
    sbit    P77         =         P7^7;

sfr         CH          =         0xF9;
sfr         CCAP0H      =         0xFA;
sfr         CCAP1H      =         0xFB;
sfr         CCAP2H      =         0xFC;

//如下特殊功能寄存器位于扩展RAM区域
//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写

#define   PWMC                (*(unsigned intvolatile xdata *)0xfff0)
#define   PWMCH               (*(unsigned char volatile xdata *)0xfff0)
#define   PWMCL               (*(unsigned char volatile xdata *)0xfff1)
#define   PWMCKS            (*(unsigned char volatile xdata *)0xfff2)
#define   PWM2T1            (*(unsigned intvolatile xdata *)0xff00)
#define   PWM2T1H             (*(unsigned char volatile xdata *)0xff00)
#define   PWM2T1L             (*(unsigned char volatile xdata *)0xff01)
#define   PWM2T2            (*(unsigned intvolatile xdata *)0xff02)
#define   PWM2T2H             (*(unsigned char volatile xdata *)0xff02)
#define   PWM2T2L             (*(unsigned char volatile xdata *)0xff03)
#define   PWM2CR            (*(unsigned char volatile xdata *)0xff04)
#define   PWM3T1            (*(unsigned intvolatile xdata *)0xff10)
#define   PWM3T1H             (*(unsigned char volatile xdata *)0xff10)
#define   PWM3T1L             (*(unsigned char volatile xdata *)0xff11)
#define   PWM3T2            (*(unsigned intvolatile xdata *)0xff12)
#define   PWM3T2H             (*(unsigned char volatile xdata *)0xff12)
#define   PWM3T2L             (*(unsigned char volatile xdata *)0xff13)
#define   PWM3CR            (*(unsigned char volatile xdata *)0xff14)
#define   PWM4T1            (*(unsigned intvolatile xdata *)0xff20)
#define   PWM4T1H             (*(unsigned char volatile xdata *)0xff20)
#define   PWM4T1L             (*(unsigned char volatile xdata *)0xff21)
#define   PWM4T2            (*(unsigned intvolatile xdata *)0xff22)
#define   PWM4T2H             (*(unsigned char volatile xdata *)0xff22)
#define   PWM4T2L             (*(unsigned char volatile xdata *)0xff23)
#define   PWM4CR            (*(unsigned char volatile xdata *)0xff24)
#define   PWM5T1            (*(unsigned intvolatile xdata *)0xff30)
#define   PWM5T1H             (*(unsigned char volatile xdata *)0xff30)
#define   PWM5T1L             (*(unsigned char volatile xdata *)0xff31)
#define   PWM5T2            (*(unsigned intvolatile xdata *)0xff32)
#define   PWM5T2H             (*(unsigned char volatile xdata *)0xff32)
#define   PWM5T2L             (*(unsigned char volatile xdata *)0xff33)
#define   PWM5CR            (*(unsigned char volatile xdata *)0xff34)
#define   PWM6T1            (*(unsigned intvolatile xdata *)0xff40)
#define   PWM6T1H             (*(unsigned char volatile xdata *)0xff40)
#define   PWM6T1L             (*(unsigned char volatile xdata *)0xff41)
#define   PWM6T2            (*(unsigned intvolatile xdata *)0xff42)
#define   PWM6T2H             (*(unsigned char volatile xdata *)0xff42)
#define   PWM6T2L             (*(unsigned char volatile xdata *)0xff43)
#define   PWM6CR            (*(unsigned char volatile xdata *)0xff44)
#define   PWM7T1            (*(unsigned intvolatile xdata *)0xff50)
#define   PWM7T1H             (*(unsigned char volatile xdata *)0xff50)
#define   PWM7T1L             (*(unsigned char volatile xdata *)0xff51)
#define   PWM7T2            (*(unsigned intvolatile xdata *)0xff52)
#define   PWM7T2H             (*(unsigned char volatile xdata *)0xff52)
#define   PWM7T2L             (*(unsigned char volatile xdata *)0xff53)
#define   PWM7CR            (*(unsigned char volatile xdata *)0xff54)

/////////////////////////////////////////////////

#endif


xiaobendan 发表于 前天 08:12

神农鼎 发表于 2025-6-14 19:24
#ifndef __STC15_H__
#define __STC15_H__



我 头文件也是这么来的,感谢

xiaobendan 发表于 前天 08:13

问题解决了,是弄错了内存模式,吧XDATA改成DATA模式,就OK了,
好像是15W408S没有XDATA

xiaobendan 发表于 前天 09:01

但是,刚看了资料,RAM有512,应该是有256字节的XDATA的吧。
编译结果是有超过128的,仔细看了代码,有用IDATA的标记。
不懂了,用XDATA模式,因为有IDATA标记,XDATA也没有用多少,几十个字节。
怎么会不好用呢
页: [1]
查看完整版本: 一个几年前的项目,重新编译,找不到15W408S.H了 | 解决了