久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2355|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

編譯一個(gè)STC官方例程,弄了一大堆錯(cuò)誤,從沒遇到過

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140644 發(fā)表于 2023-12-28 16:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//========================================================================
// 函數(shù): void timer0_ISR (void) interrupt TIMER0_VECTOR
// 描述:  timer0中斷函數(shù).
// 參數(shù): none.
// 返回: none.
// 版本: V1.0, 2016-5-12
//========================================================================
void timer0_ISR (void)interrupt TIMER0_VECTOR
{
    if(RX1_TimeOut != 0)
    {
        if(--RX1_TimeOut==0)    //超時(shí)
        {
            if(RX1_cnt != 0)    //接收有數(shù)據(jù)
            {
                B_RX1_OK = 1;    //標(biāo)志已收到數(shù)據(jù)塊
            }
        }
    }
}

compiling MODBUS.c...
MODBUS.C(304): error C141: syntax error near 'TIMER0_VECTOR', expected 'const'
MODBUS.C(305): error C132: 'TIMER0_VECTOR': not in formal parameter list
MODBUS.C(305): error C141: syntax error near '{'
MODBUS.C(308): error C132: 'RX1_TimeOut': not in formal parameter list
MODBUS.C(312): error C244: 'B_RX1_OK': can't initialize, bad type or class
MODBUS.C(312): error C132: 'B_RX1_OK': not in formal parameter list
MODBUS.C(313): error C141: syntax error near '}'
MODBUS.c - 7 Error(s), 0 Warning(s).



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:731755 發(fā)表于 2023-12-28 16:58 來自手機(jī) | 只看該作者
STC官方的庫(kù)函數(shù),不太成熟,我搞了個(gè)定時(shí)中斷閃動(dòng)燈,就是不閃,
回復(fù)

使用道具 舉報(bào)

板凳
ID:404160 發(fā)表于 2023-12-28 17:05 | 只看該作者
MODBUS.C(304): error C141: syntax error near 'TIMER0_VECTOR', expected 'const'。304行的 'TIMER0_VECTOR'沒有定義,也就是你沒有包含51.h的包含文件。
回復(fù)

使用道具 舉報(bào)

地板
ID:1096929 發(fā)表于 2023-12-28 17:08 | 只看該作者
這是一個(gè)中斷函數(shù)啊,還有其他程序呢
回復(fù)

使用道具 舉報(bào)

5#
ID:140644 發(fā)表于 2023-12-28 17:48 | 只看該作者
飛云居士 發(fā)表于 2023-12-28 17:05
MODBUS.C(304): error C141: syntax error near 'TIMER0_VECTOR', expected 'const'。304行的 'TIMER0_VECT ...

STC8G.H
沒有找到定義
回復(fù)

使用道具 舉報(bào)

6#
ID:140644 發(fā)表于 2023-12-28 18:03 | 只看該作者
/*********************************************************/
#include <STC8G.H>
#define MAIN_Fosc        11059200L    //定義主時(shí)鐘

/*************    功能說明    **************
請(qǐng)先別修改程序, 直接下載"08-串口1中斷收發(fā)-C語言-MODBUS協(xié)議"里的"UART1.hex"測(cè)試, 主頻選擇11.0592MHZ. 測(cè)試正常后再修改移植.
串口1按MODBUS-RTU協(xié)議通信. 本例為從機(jī)程序, 主機(jī)一般是電腦端.
本例程只支持多寄存器讀和多寄存器寫, 寄存器長(zhǎng)度為64個(gè), 別的命令用戶可以根據(jù)需要按MODBUS-RTU協(xié)議自行添加.
本例子數(shù)據(jù)使用大端模式(與C51一致), CRC16使用小端模式(與PC一致).
默認(rèn)參數(shù):
串口1設(shè)置均為 1位起始位, 8位數(shù)據(jù)位, 1位停止位, 無校驗(yàn).
串口1(P3.0 P3.1): 9600bps.

定時(shí)器0用于超時(shí)計(jì)時(shí). 串口每收到一個(gè)字節(jié)都會(huì)重置超時(shí)計(jì)數(shù), 當(dāng)串口空閑超過35bit時(shí)間時(shí)(9600bps對(duì)應(yīng)3.6ms)則接收完成.
用戶修改波特率時(shí)注意要修改這個(gè)超時(shí)時(shí)間.

本例程只是一個(gè)應(yīng)用例子, 科普MODBUS-RTU協(xié)議并不在本例子職責(zé)范圍, 用戶可以上網(wǎng)搜索相關(guān)協(xié)議文本參考.
本例定義了64個(gè)寄存器, 訪問地址為0x1000~0x103f.
命令例子:
寫入4個(gè)寄存器(8個(gè)字節(jié)):
10 10 1000 0004 08 1234 5678 90AB CDEF 4930
返回:
10 10 10 00 00 04 4B C6
讀出4個(gè)寄存器:
10 03 1000 0004 4388
返回:
10 03 08 12 34 56 78 90 AB CD EF 3D D5

命令錯(cuò)誤返回信息(自定義):
0x90: 功能碼錯(cuò)誤. 收到了不支持的功能碼.
0x91: 命令長(zhǎng)度錯(cuò)誤.
0x92: 寫入或讀出寄存器個(gè)數(shù)或字節(jié)數(shù)錯(cuò)誤.
0x93: 寄存器地址錯(cuò)誤.

注意: 收到廣播地址0x00時(shí)要處理信息, 但不返回應(yīng)答.

******************************************/

/*************    本地常量聲明    **************/
#define    RX1_Length    128        /* 接收緩沖長(zhǎng)度 */
#define    TX1_Length    128        /* 發(fā)送緩沖長(zhǎng)度 */
typedef         unsigned char        u8;
typedef         unsigned int        u16;
typedef         unsigned long        u32;


/*************    本地變量聲明    **************/
u8    xdata    RX1_Buffer[RX1_Length];    //接收緩沖
u8    xdata    TX1_Buffer[TX1_Length];    //發(fā)送緩沖

u8    RX1_cnt;        //接收字節(jié)計(jì)數(shù).
u8    TX1_cnt;        //發(fā)送字節(jié)計(jì)數(shù)
u8    TX1_number;        //要發(fā)送的字節(jié)數(shù)
u8    RX1_TimeOut;    //接收超時(shí)計(jì)時(shí)器

bit    B_RX1_OK;        // 接收數(shù)據(jù)標(biāo)志
bit    B_TX1_Busy;        // 發(fā)送忙標(biāo)志


/*************    本地函數(shù)聲明    **************/
void    UART1_config(u32 brt, u8 timer, u8 io);    // brt: 通信波特率,  timer=2: 波特率使用定時(shí)器2, 其它值: 使用Timer1做波特率. io=0: 串口1切換到P3.0 P3.1,  =1: 切換到P3.6 P3.7, =2: 切換到P1.6 P1.7,  =3: 切換到P4.3 P4.4.
u8        Timer0_Config(u8 t, u32 reload);    //t=0: reload值是主時(shí)鐘周期數(shù),  t=1: reload值是時(shí)間(單位us), 返回0正確, 返回1裝載值過大錯(cuò)誤.
u16        MODBUS_CRC16(u8 *p, u8 n);
u8        MODBUS_RTU(void);



#define    SL_ADDR        0x10    /* 本從機(jī)站號(hào)地址 */
#define    REG_ADDRESS    0x1000    /* 寄存器首地址   */
#define    REG_LENGTH    64        /* 寄存器長(zhǎng)度     */
u16        xdata modbus_reg[REG_LENGTH];    /* 寄存器地址 */

//========================================================================
// 函數(shù): void main(void)
// 描述: 主函數(shù)
// 參數(shù): none.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-2
// 備注:
//========================================================================
void main(void)
{
    u8    i;
    u16    crc;
   
    Timer0_Config(0, MAIN_Fosc / 10000);    //t=0: reload值是主時(shí)鐘周期數(shù),  (中斷頻率, 20000次/秒)
    UART1_config(9600UL, 1, 0);    // brt: 通信波特率,  timer=2: 波特率使用定時(shí)器2, 其它值: 使用Timer1做波特率. io=0: 串口1切換到P3.0 P3.1,  =1: 切換到P3.6 P3.7, =2: 切換到P1.6 P1.7,  =3: 切換到P4.3 P4.4.

    EA = 1;

    while (1)
    {
        if(B_RX1_OK && !B_TX1_Busy)    //收到數(shù)據(jù), 進(jìn)行MODBUS-RTU協(xié)議解析
        {
            if(MODBUS_CRC16(RX1_Buffer, RX1_cnt) == 0)    //首先判斷CRC16是否正確, 不正確則忽略, 不處理也不返回信息
            {
                if((RX1_Buffer[0] == 0x00) || (RX1_Buffer[0] == SL_ADDR))    //然后判斷站號(hào)地址是否正確, 或者是否廣播地址(不返回信息)
                {
                    if(RX1_cnt > 2) RX1_cnt -= 2;    //去掉CRC16校驗(yàn)字節(jié)
                    i = MODBUS_RTU();    //MODBUS-RTU協(xié)議解析
                    if(i != 0)    //錯(cuò)誤處理
                    {
                        TX1_Buffer[0] = SL_ADDR;    //站號(hào)地址
                        TX1_Buffer[1] = i;            //錯(cuò)誤代碼
                        crc = MODBUS_CRC16(TX1_Buffer, 2);
                        TX1_Buffer[2] = (u8)(crc>>8);    //CRC是小端模式
                        TX1_Buffer[3] = (u8)crc;
                        B_TX1_Busy = 1;        //標(biāo)志發(fā)送忙
                        TX1_cnt    = 0;        //發(fā)送字節(jié)計(jì)數(shù)
                        TX1_number = 4;        //要發(fā)送的字節(jié)數(shù)
                        TI = 1;                //啟動(dòng)發(fā)送
                    }
                }
            }
            RX1_cnt = 0;
            B_RX1_OK = 0;
        }
    }
}


/****************************** MODBUS_CRC (shift) *************** past test 06-11-27 *********
    計(jì)算CRC,調(diào)用方式    MODBUS_CRC16(&CRC,8);    &CRC為首地址,8為字節(jié)數(shù)
    CRC-16 for MODBUS
    CRC16=X16+X15+X2+1
    TEST: ---> ABCDEFGHIJ    CRC16=0x0BEE    1627T
*/
//========================================================================
// 函數(shù): u16    MODBUS_CRC16(u8 *p, u8 n)
// 描述: 計(jì)算CRC16函數(shù).
// 參數(shù): *p: 要計(jì)算的數(shù)據(jù)指針.
//        n: 要計(jì)算的字節(jié)數(shù).
// 返回: CRC16值.
// 版本: V1.0, 2022-3-18 梁工
//========================================================================
u16    MODBUS_CRC16(u8 *p, u8 n)
{
    u8    i;
    u16    crc16;
   
    crc16 = 0xffff;    //預(yù)置16位CRC寄存器為0xffff(即全為1)
    do
    {
        crc16 ^= (u16)*p;        //把8位數(shù)據(jù)與16位CRC寄存器的低位相異或,把結(jié)果放于CRC寄存器
        for(i=0; i<8; i++)        //8位數(shù)據(jù)
        {
            if(crc16 & 1)    crc16 = (crc16 >> 1) ^ 0xA001;    //如果最低位為0,把CRC寄存器的內(nèi)容右移一位(朝低位),用0填補(bǔ)最高位,
                                                            //再異或多項(xiàng)式0xA001
            else    crc16 >>= 1;                            //如果最低位為0,把CRC寄存器的內(nèi)容右移一位(朝低位),用0填補(bǔ)最高位
        }
        p++;
    }while(--n != 0);
    return    (crc16);
}   

/********************* modbus協(xié)議 *************************/
/***************************************************************************
寫多寄存器
數(shù)據(jù):      地址    功能碼   寄存地址 寄存器個(gè)數(shù)  寫入字節(jié)數(shù)   寫入數(shù)據(jù)   CRC16
偏移:     0        1        2 3      4 5          6          7~        最后2字節(jié)
字節(jié):   1 byte   1 byte    2 byte   2 byte      1byte       2*n byte   2 byte
         addr     0x10      xxxx     xxxx        xx         xx....xx    xxxx      

  返回
數(shù)據(jù):      地址    功能碼   寄存地址 寄存器個(gè)數(shù)   CRC16
偏移:     0        1        2 3      4 5         6 7
字節(jié):   1 byte   1 byte    2 byte   2 byte      2 byte
         addr     0x10      xxxx     xxxx        xxxx      


讀多寄存器
數(shù)據(jù):站號(hào)(地址)  功能碼   寄存地址 寄存器個(gè)數(shù)  CRC16
偏移:      0       1        2 3      4 5         6 7
字節(jié):    1 byte  1 byte    2 byte   2 byte     2 byte
          addr    0x03      xxxx     xxxx       xxxx      

  返回
數(shù)據(jù):站號(hào)(地址)  功能碼   讀出字節(jié)數(shù)  讀出數(shù)據(jù)  CRC16
偏移:      0       1        2           3~      最后2字節(jié)
字節(jié):   1 byte   1 byte    1byte      2*n byte  2 byte
         addr     0x03       xx       xx....xx   xxxx      

  返回錯(cuò)誤代碼
數(shù)據(jù):站號(hào)(地址)  錯(cuò)誤碼   CRC16
偏移:      0       1      最后2字節(jié)
字節(jié):   1 byte   1 byte   2 byte
         addr     0x03     xxxx      
***************************************************************************/
u8    MODBUS_RTU(void)
{
    u8    i,j,k;
    u16    reg_addr;    //寄存器地址
    u8    reg_len;    //寫入寄存器個(gè)數(shù)
    u16    crc;

    if(RX1_Buffer[1] == 0x10)    //寫多寄存器
    {
        if(RX1_cnt < 9)        return 0x91;        //命令長(zhǎng)度錯(cuò)誤
        if((RX1_Buffer[4] != 0) || ((RX1_Buffer[5] *2) != RX1_Buffer[6]))    return 0x92;    //寫入寄存器個(gè)數(shù)與字節(jié)數(shù)錯(cuò)誤
        if((RX1_Buffer[5]==0) || (RX1_Buffer[5] > REG_LENGTH))    return 0x92;    //寫入寄存器個(gè)數(shù)錯(cuò)誤

        reg_addr = ((u16)RX1_Buffer[2] << 8) + RX1_Buffer[3];    //寄存器地址
        reg_len = RX1_Buffer[5];    //寫入寄存器個(gè)數(shù)
        if((reg_addr+(u16)RX1_Buffer[5]) > (REG_ADDRESS+REG_LENGTH))    return 0x93;    //寄存器地址錯(cuò)誤
        if(reg_addr < REG_ADDRESS)        return 0x93;    //寄存器地址錯(cuò)誤
        if((reg_len*2+7) != RX1_cnt)    return 0x91;    //命令長(zhǎng)度錯(cuò)誤

        j = reg_addr - REG_ADDRESS;    //寄存器數(shù)據(jù)下標(biāo)
        for(k=7, i=0; i<reg_len; i++,j++)
        {
            modbus_reg[j] = ((u16)RX1_Buffer[k] << 8) + RX1_Buffer[k+1];    //寫入數(shù)據(jù), 大端模式
            k += 2;
        }
      
        if(RX1_Buffer[0] != 0)    //非廣播地址則應(yīng)答
        {
            for(i=0; i<6; i++)    TX1_Buffer[i] = RX1_Buffer[i];    //要返回的應(yīng)答
            crc = MODBUS_CRC16(TX1_Buffer, 6);
            TX1_Buffer[6] = (u8)(crc>>8);    //CRC是小端模式
            TX1_Buffer[7] = (u8)crc;
            B_TX1_Busy = 1;        //標(biāo)志發(fā)送忙
            TX1_cnt    = 0;        //發(fā)送字節(jié)計(jì)數(shù)
            TX1_number = 8;        //要發(fā)送的字節(jié)數(shù)
            TI = 1;                //啟動(dòng)發(fā)送
        }
    }
    else if(RX1_Buffer[1] == 0x03)    //讀多寄存器
    {
        if(RX1_Buffer[0] != 0)    //非廣播地址則應(yīng)答
        {
            if(RX1_cnt != 6)        return 0x91;        //命令長(zhǎng)度錯(cuò)誤
            if(RX1_Buffer[4] != 0)    return 0x92;    //讀出寄存器個(gè)數(shù)錯(cuò)誤
            if((RX1_Buffer[5]==0) || (RX1_Buffer[5] > REG_LENGTH))    return 0x92;    //讀出寄存器個(gè)數(shù)錯(cuò)誤

            reg_addr = ((u16)RX1_Buffer[2] << 8) + RX1_Buffer[3];    //寄存器地址
            reg_len = RX1_Buffer[5];    //讀出寄存器個(gè)數(shù)
            if((reg_addr+(u16)RX1_Buffer[5]) > (REG_ADDRESS+REG_LENGTH))    return 0x93;    //寄存器地址錯(cuò)誤
            if(reg_addr < REG_ADDRESS)        return 0x93;    //寄存器地址錯(cuò)誤

            j = reg_addr - REG_ADDRESS;    //寄存器數(shù)據(jù)下標(biāo)
            TX1_Buffer[0] = SL_ADDR;    //站號(hào)地址
            TX1_Buffer[1] = 0x03;        //讀功能碼
            TX1_Buffer[2] = reg_len*2;    //返回字節(jié)數(shù)

            for(k=3, i=0; i<reg_len; i++,j++)
            {
                TX1_Buffer[k++] = (u8)(modbus_reg[j] >> 8);    //數(shù)據(jù)為大端模式
                TX1_Buffer[k++] = (u8)modbus_reg[j];
            }
            crc = MODBUS_CRC16(TX1_Buffer, k);
            TX1_Buffer[k++] = (u8)(crc>>8);    //CRC是小端模式
            TX1_Buffer[k++] = (u8)crc;
            B_TX1_Busy = 1;        //標(biāo)志發(fā)送忙
            TX1_cnt    = 0;        //發(fā)送字節(jié)計(jì)數(shù)
            TX1_number = k;        //要發(fā)送的字節(jié)數(shù)
            TI = 1;                //啟動(dòng)發(fā)送
        }
    }
    else    return 0x90;    //功能碼錯(cuò)誤
   
    return 0;    //解析正確
}


//========================================================================
// 函數(shù):u8    Timer0_Config(u8 t, u32 reload)
// 描述: timer0初始化函數(shù).
// 參數(shù):      t: 重裝值類型, 0表示重裝的是系統(tǒng)時(shí)鐘數(shù), 其余值表示重裝的是時(shí)間(us).
//       reload: 重裝值.
// 返回: 0: 初始化正確, 1: 重裝值過大, 初始化錯(cuò)誤.
// 版本: V1.0, 2018-3-5
//========================================================================
u8    Timer0_Config(u8 t, u32 reload)    //t=0: reload值是主時(shí)鐘周期數(shù),  t=1: reload值是時(shí)間(單位us)
{
    TR0 = 0;    //停止計(jì)數(shù)

    if(t != 0)    reload = (u32)(((float)MAIN_Fosc * (float)reload)/1000000UL);    //重裝的是時(shí)間(us), 計(jì)算所需要的系統(tǒng)時(shí)鐘數(shù).
    if(reload >= (65536UL * 12))    return 1;    //值過大, 返回錯(cuò)誤
    if(reload < 65536UL)    AUXR |= 0x80;        //1T mode
    else
    {
        AUXR &= ~0x80;    //12T mode
        reload = reload / 12;
    }
    reload = 65536UL - reload;
    TH0 = (u8)(reload >> 8);
    TL0 = (u8)(reload);

    ET0 = 1;    //允許中斷
    TMOD &= 0xf0;
    TMOD |= 0;    //工作模式, 0: 16位自動(dòng)重裝, 1: 16位定時(shí)/計(jì)數(shù), 2: 8位自動(dòng)重裝, 3: 16位自動(dòng)重裝, 不可屏蔽中斷
    TR0 = 1;            //開始運(yùn)行
    return 0;
}

//========================================================================
// 函數(shù): void timer0_ISR (void) interrupt TIMER0_VECTOR
// 描述:  timer0中斷函數(shù).
// 參數(shù): none.
// 返回: none.
// 版本: V1.0, 2016-5-12
//========================================================================
void timer0_ISR (void)interrupt TIMER0_VECTOR
{
    if(RX1_TimeOut != 0)
    {
        if(--RX1_TimeOut==0)    //超時(shí)
        {
            if(RX1_cnt != 0)    //接收有數(shù)據(jù)
            {
                B_RX1_OK = 1;    //標(biāo)志已收到數(shù)據(jù)塊
            }
        }
    }
}


//========================================================================
// 函數(shù): SetTimer2Baudraye(u16 dat)
// 描述: 設(shè)置Timer2做波特率發(fā)生器。
// 參數(shù): dat: Timer2的重裝值.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-2
// 備注:
//========================================================================
void    SetTimer2Baudraye(u16 dat)    // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
{
    AUXR &= ~(1<<4);    //Timer stop
    AUXR &= ~(1<<3);    //Timer2 set As Timer
    AUXR |=  (1<<2);    //Timer2 set as 1T mode
    T2H = (u8)(dat >> 8);
    T2L = (u8)dat;
    IE2  &= ~(1<<2);    //禁止中斷
    AUXR |=  (1<<4);    //Timer run enable
}


//========================================================================
// 函數(shù): void    UART1_config(u32 brt, u8 timer, u8 io)
// 描述: UART1初始化函數(shù)。
// 參數(shù):   brt: 通信波特率.
//       timer: 波特率使用的定時(shí)器, timer=2: 波特率使用定時(shí)器2, 其它值: 使用Timer1做波特率.
//          io: 串口1切換到的IO,  io=0: 串口1切換到P3.0 P3.1,  =1: 切換到P3.6 P3.7, =2: 切換到P1.6 P1.7,  =3: 切換到P4.3 P4.4.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-2
// 備注:
//========================================================================
void    UART1_config(u32 brt, u8 timer, u8 io)    // brt: 通信波特率,  timer=2: 波特率使用定時(shí)器2, 其它值: 使用Timer1做波特率. io=0: 串口1切換到P3.0 P3.1,  =1: 切換到P3.6 P3.7, =2: 切換到P1.6 P1.7,  =3: 切換到P4.3 P4.4.
{
    brt = 65536UL - (MAIN_Fosc / 4) / brt;
    if(timer == 2)    //波特率使用定時(shí)器2
    {
        AUXR |= 0x01;        //S1 BRT Use Timer2;
        SetTimer2Baudraye((u16)brt);
    }

    else        //波特率使用定時(shí)器1
    {
        TR1 = 0;
        AUXR &= ~0x01;        //S1 BRT Use Timer1;
        AUXR |=  (1<<6);    //Timer1 set as 1T mode
        TMOD &= ~(1<<6);    //Timer1 set As Timer
        TMOD &= ~0x30;        //Timer1_16bitAutoReload;
        TH1 = (u8)(brt >> 8);
        TL1 = (u8)brt;
        ET1 = 0;            // 禁止Timer1中斷
        INTCLKO&= ~0x02;    // Timer1不輸出高速時(shí)鐘
        TR1  = 1;            // 運(yùn)行Timer1
    }

         if(io == 1)    {S1_USE_P36P37();    P3n_standard(0xc0);}    //切換到 P3.6 P3.7
    else if(io == 2)    {S1_USE_P16P17();    P1n_standard(0xc0);}    //切換到 P1.6 P1.7
    else if(io == 3)    {S1_USE_P43P44();    P4n_standard(0x18);}    //切換到 P4.3 P4.4
    else                {S1_USE_P30P31();    P3n_standard(0x03);}    //切換到 P3.0 P3.1

    SCON = (SCON & 0x3f) | (1<<6);    // 8位數(shù)據(jù), 1位起始位, 1位停止位, 無校驗(yàn)
//    PS  = 1;    //高優(yōu)先級(jí)中斷
    ES  = 1;    //允許中斷
    REN = 1;    //允許接收
}


//========================================================================
// 函數(shù): void UART1_ISR (void) interrupt UART1_VECTOR
// 描述: 串口1中斷函數(shù)
// 參數(shù): none.
// 返回: none.
// 版本: VER1.0
// 日期: 2018-4-2
// 備注:
//========================================================================
void UART1_ISR (void) interrupt UART1_VECTOR
{
    if(RI)
    {
        RI = 0;
        if(!B_RX1_OK)    //接收緩沖空閑
        {
            if(RX1_cnt >= RX1_Length)    RX1_cnt = 0;
            RX1_Buffer[RX1_cnt++] = SBUF;
            RX1_TimeOut = 36;    //接收超時(shí)計(jì)時(shí)器, 35個(gè)位時(shí)間
        }
    }

    if(TI)
    {
        TI = 0;
        if(TX1_number != 0)    //有數(shù)據(jù)要發(fā)
        {
            SBUF = TX1_Buffer[TX1_cnt++];
            TX1_number--;
        }
        else    B_TX1_Busy = 0;
    }
}


回復(fù)

使用道具 舉報(bào)

7#
ID:140644 發(fā)表于 2023-12-28 19:18 | 只看該作者

STC8G 和STC8H定義不一樣
定時(shí)器0中斷號(hào)1起的別名修改為1就行了

現(xiàn)在又出現(xiàn)新的錯(cuò)誤

//========================================================================
void    UART1_config(u32 brt, u8 timer, u8 io)    // brt: 通信波特率,  timer=2: 波特率使用定時(shí)器2, 其它值: 使用Timer1做波特率. io=0: 串口1切換到P3.0 P3.1,  =1: 切換到P3.6 P3.7, =2: 切換到P1.6 P1.7,  =3: 切換到P4.3 P4.4.
{
    brt = 65536UL - (MAIN_Fosc / 4) / brt;
    if(timer == 2)    //波特率使用定時(shí)器2
    {
        AUXR |= 0x01;        //S1 BRT Use Timer2;
        SetTimer2Baudraye((u16)brt);
    }

    else        //波特率使用定時(shí)器1
    {
        TR1 = 0;
        AUXR &= ~0x01;        //S1 BRT Use Timer1;
        AUXR |=  (1<<6);    //Timer1 set as 1T mode
        TMOD &= ~(1<<6);    //Timer1 set As Timer
        TMOD &= ~0x30;        //Timer1_16bitAutoReload;
        TH1 = (u8)(brt >> 8);
        TL1 = (u8)brt;
        ET1 = 0;            // 禁止Timer1中斷
        INTCLKO&= ~0x02;    // Timer1不輸出高速時(shí)鐘
        TR1  = 1;            // 運(yùn)行Timer1
    }

         if(io == 1)    {S1_USE_P36P37();    P3n_standard(0xc0);}    //切換到 P3.6 P3.7
    else if(io == 2)    {S1_USE_P16P17();    P1n_standard(0xc0);}    //切換到 P1.6 P1.7
    else if(io == 3)    {S1_USE_P43P44();    P4n_standard(0x18);}    //切換到 P4.3 P4.4
    else                {S1_USE_P30P31();    P3n_standard(0x03);}    //切換到 P3.0 P3.1

    SCON = (SCON & 0x3f) | (1<<6);    // 8位數(shù)據(jù), 1位起始位, 1位停止位, 無校驗(yàn)
//    PS  = 1;    //高優(yōu)先級(jí)中斷
    ES  = 1;    //允許中斷
    REN = 1;    //允許接收
}


現(xiàn)在出現(xiàn)這些錯(cuò)誤了
MODBUS.C(374): warning C206: 'S1_USE_P36P37': missing function-prototype
MODBUS.C(374): warning C206: 'P3n_standard': missing function-prototype
MODBUS.C(374): error C267: 'P3n_standard': requires ANSI-style prototype
回復(fù)

使用道具 舉報(bào)

8#
ID:69038 發(fā)表于 2023-12-28 22:22 | 只看該作者
void timer0_ISR (void)interrupt TIMER0_VECTOR

改成void timer0() interrupt 1
試試。
回復(fù)

使用道具 舉報(bào)

9#
ID:155507 發(fā)表于 2023-12-28 22:24 | 只看該作者
這個(gè)有定義。


  1. #ifndef __STC8A8K64D4_H__
  2. #define __STC8A8K64D4_H__

  3. /////////////////////////////////////////////////

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

  5. sfr         P0          =           0x80;
  6.     sbit    P00         =           P0^0;
  7.     sbit    P01         =           P0^1;
  8.     sbit    P02         =           P0^2;
  9.     sbit    P03         =           P0^3;
  10.     sbit    P04         =           P0^4;
  11.     sbit    P05         =           P0^5;
  12.     sbit    P06         =           P0^6;
  13.     sbit    P07         =           P0^7;

  14. sfr         SP          =           0x81;
  15. sfr         DPL         =           0x82;
  16. sfr         DPH         =           0x83;
  17. sfr         S4CON       =           0x84;
  18. sfr         S4BUF       =           0x85;
  19. sfr         PCON        =           0x87;

  20. sfr         TCON        =           0x88;
  21.     sbit    TF1         =           TCON^7;
  22.     sbit    TR1         =           TCON^6;
  23.     sbit    TF0         =           TCON^5;
  24.     sbit    TR0         =           TCON^4;
  25.     sbit    IE1         =           TCON^3;
  26.     sbit    IT1         =           TCON^2;
  27.     sbit    IE0         =           TCON^1;
  28.     sbit    IT0         =           TCON^0;

  29. sfr         TMOD        =           0x89;
  30. sfr         TL0         =           0x8a;
  31. sfr         TL1         =           0x8b;
  32. sfr         TH0         =           0x8c;
  33. sfr         TH1         =           0x8d;
  34. sfr         AUXR        =           0x8e;
  35. sfr         INTCLKO     =           0x8f;

  36. sfr         P1          =           0x90;
  37.     sbit    P10         =           P1^0;
  38.     sbit    P11         =           P1^1;
  39.     sbit    P12         =           P1^2;
  40.     sbit    P13         =           P1^3;
  41.     sbit    P14         =           P1^4;
  42.     sbit    P15         =           P1^5;
  43.     sbit    P16         =           P1^6;
  44.     sbit    P17         =           P1^7;

  45. sfr         P1M1        =           0x91;
  46. sfr         P1M0        =           0x92;
  47. sfr         P0M1        =           0x93;
  48. sfr         P0M0        =           0x94;
  49. sfr         P2M1        =           0x95;
  50. sfr         P2M0        =           0x96;

  51. sfr         SCON        =           0x98;
  52.     sbit    SM0         =           SCON^7;
  53.     sbit    SM1         =           SCON^6;
  54.     sbit    SM2         =           SCON^5;
  55.     sbit    REN         =           SCON^4;
  56.     sbit    TB8         =           SCON^3;
  57.     sbit    RB8         =           SCON^2;
  58.     sbit    TI          =           SCON^1;
  59.     sbit    RI          =           SCON^0;

  60. sfr         SBUF        =           0x99;
  61. sfr         S2CON       =           0x9a;
  62. sfr         S2BUF       =           0x9b;
  63. sfr         IRCBAND     =           0x9d;
  64. sfr         LIRTRIM     =           0x9e;
  65. sfr         IRTRIM      =           0x9f;

  66. sfr         P2          =           0xa0;
  67.     sbit    P20         =           P2^0;
  68.     sbit    P21         =           P2^1;
  69.     sbit    P22         =           P2^2;
  70.     sbit    P23         =           P2^3;
  71.     sbit    P24         =           P2^4;
  72.     sbit    P25         =           P2^5;
  73.     sbit    P26         =           P2^6;
  74.     sbit    P27         =           P2^7;

  75. sfr         BUS_SPEED   =           0xa1;
  76. sfr         P_SW1       =           0xa2;

  77. sfr         IE          =           0xa8;
  78.     sbit    EA          =           IE^7;
  79.     sbit    ELVD        =           IE^6;
  80.     sbit    EADC        =           IE^5;
  81.     sbit    ES          =           IE^4;
  82.     sbit    ET1         =           IE^3;
  83.     sbit    EX1         =           IE^2;
  84.     sbit    ET0         =           IE^1;
  85.     sbit    EX0         =           IE^0;

  86. sfr         SADDR       =           0xa9;
  87. sfr         WKTCL       =           0xaa;
  88. sfr         WKTCH       =           0xab;
  89. sfr         S3CON       =           0xac;
  90. sfr         S3BUF       =           0xad;
  91. sfr         TA          =           0xae;
  92. sfr         IE2         =           0xaf;

  93. sfr         P3          =           0xb0;
  94.     sbit    P30         =           P3^0;
  95.     sbit    P31         =           P3^1;
  96.     sbit    P32         =           P3^2;
  97.     sbit    P33         =           P3^3;
  98.     sbit    P34         =           P3^4;
  99.     sbit    P35         =           P3^5;
  100.     sbit    P36         =           P3^6;
  101.     sbit    P37         =           P3^7;

  102.     sbit    RD          =           P3^7;
  103.     sbit    WR          =           P3^6;
  104.     sbit    T1          =           P3^5;
  105.     sbit    T0          =           P3^4;
  106.     sbit    INT1        =           P3^3;
  107.     sbit    INT0        =           P3^2;
  108.     sbit    TXD         =           P3^1;
  109.     sbit    RXD         =           P3^0;

  110. sfr         P3M1        =           0xb1;
  111. sfr         P3M0        =           0xb2;
  112. sfr         P4M1        =           0xb3;
  113. sfr         P4M0        =           0xb4;
  114. sfr         IP2         =           0xb5;
  115. sfr         IP2H        =           0xb6;
  116. sfr         IPH         =           0xb7;

  117. sfr         IP          =           0xb8;
  118.     sbit    PPCA        =           IP^7;
  119.     sbit    PLVD        =           IP^6;
  120.     sbit    PADC        =           IP^5;
  121.     sbit    PS          =           IP^4;
  122.     sbit    PT1         =           IP^3;
  123.     sbit    PX1         =           IP^2;
  124.     sbit    PT0         =           IP^1;
  125.     sbit    PX0         =           IP^0;

  126. sfr         SADEN       =           0xb9;
  127. sfr         P_SW2       =           0xba;
  128. sfr         ADC_CONTR   =           0xbc;
  129. sfr         ADC_RES     =           0xbd;
  130. sfr         ADC_RESL    =           0xbe;

  131. sfr         P4          =           0xc0;
  132.     sbit    P40         =           P4^0;
  133.     sbit    P41         =           P4^1;
  134.     sbit    P42         =           P4^2;
  135.     sbit    P43         =           P4^3;
  136.     sbit    P44         =           P4^4;
  137.     sbit    P45         =           P4^5;
  138.     sbit    P46         =           P4^6;
  139.     sbit    P47         =           P4^7;

  140. sfr         WDT_CONTR   =           0xc1;
  141. sfr         IAP_DATA    =           0xc2;
  142. sfr         IAP_ADDRH   =           0xc3;
  143. sfr         IAP_ADDRL   =           0xc4;
  144. sfr         IAP_CMD     =           0xc5;
  145. sfr         IAP_TRIG    =           0xc6;
  146. sfr         IAP_CONTR   =           0xc7;

  147. sfr         P5          =           0xc8;
  148.     sbit    P50         =           P5^0;
  149.     sbit    P51         =           P5^1;
  150.     sbit    P52         =           P5^2;
  151.     sbit    P53         =           P5^3;
  152.     sbit    P54         =           P5^4;
  153.     sbit    P55         =           P5^5;
  154.     sbit    P56         =           P5^6;
  155.     sbit    P57         =           P5^7;

  156. sfr         P5M1        =           0xc9;
  157. sfr         P5M0        =           0xca;
  158. sfr         P6M1        =           0xcb;
  159. sfr         P6M0        =           0xcc;
  160. sfr         SPSTAT      =           0xcd;
  161. sfr         SPCTL       =           0xce;
  162. sfr         SPDAT       =           0xcf;

  163. sfr         PSW         =           0xd0;
  164.     sbit    CY          =           PSW^7;
  165.     sbit    AC          =           PSW^6;
  166.     sbit    F0          =           PSW^5;
  167.     sbit    RS1         =           PSW^4;
  168.     sbit    RS0         =           PSW^3;
  169.     sbit    OV          =           PSW^2;
  170.     sbit    P           =           PSW^0;

  171. sfr         T4T3M       =           0xd1;
  172. sfr         T4H         =           0xd2;
  173. sfr         T4L         =           0xd3;
  174. sfr         T3H         =           0xd4;
  175. sfr         T3L         =           0xd5;
  176. sfr         T2H         =           0xd6;
  177. sfr         T2L         =           0xd7;

  178. sfr         T3T4M       =           0xd1;
  179. sfr         TH4         =           0xd2;
  180. sfr         TL4         =           0xd3;
  181. sfr         TH3         =           0xd4;
  182. sfr         TL3         =           0xd5;
  183. sfr         TH2         =           0xd6;
  184. sfr         TL2         =           0xd7;

  185. sfr         CCON        =           0xd8;
  186.     sbit    CF          =           CCON^7;
  187.     sbit    CR          =           CCON^6;
  188.     sbit    CCF3        =           CCON^3;
  189.     sbit    CCF2        =           CCON^2;
  190.     sbit    CCF1        =           CCON^1;
  191.     sbit    CCF0        =           CCON^0;

  192. sfr         CMOD        =           0xd9;
  193. sfr         CCAPM0      =           0xda;
  194. sfr         CCAPM1      =           0xdb;
  195. sfr         CCAPM2      =           0xdc;
  196. sfr         ADCCFG      =           0xde;
  197. sfr         IP3         =           0xdf;
  198. sfr         ACC         =           0xe0;
  199. sfr         P7M1        =           0xe1;
  200. sfr         P7M0        =           0xe2;
  201. sfr         DPS         =           0xe3;
  202. sfr         DPL1        =           0xe4;
  203. sfr         DPH1        =           0xe5;
  204. sfr         CMPCR1      =           0xe6;
  205. sfr         CMPCR2      =           0xe7;

  206. sfr         P6          =           0xe8;
  207.     sbit    P60         =           P6^0;
  208.     sbit    P61         =           P6^1;
  209.     sbit    P62         =           P6^2;
  210.     sbit    P63         =           P6^3;
  211.     sbit    P64         =           P6^4;
  212.     sbit    P65         =           P6^5;
  213.     sbit    P66         =           P6^6;
  214.     sbit    P67         =           P6^7;

  215. sfr         CL          =           0xe9;
  216. sfr         CCAP0L      =           0xea;
  217. sfr         CCAP1L      =           0xeb;
  218. sfr         CCAP2L      =           0xec;
  219. sfr         IP3H        =           0xee;
  220. sfr         AUXINTIF    =           0xef;
  221. sfr         B           =           0xf0;
  222. sfr         PWMSET      =           0xf1;
  223. sfr         PCA_PWM0    =           0xf2;
  224. sfr         PCA_PWM1    =           0xf3;
  225. sfr         PCA_PWM2    =           0xf4;
  226. sfr         IAP_TPS     =           0xf5;
  227. sfr         PWMCFG      =           0xf6;

  228. sfr         P7          =           0xf8;
  229.     sbit    P70         =           P7^0;
  230.     sbit    P71         =           P7^1;
  231.     sbit    P72         =           P7^2;
  232.     sbit    P73         =           P7^3;
  233.     sbit    P74         =           P7^4;
  234.     sbit    P75         =           P7^5;
  235.     sbit    P76         =           P7^6;
  236.     sbit    P77         =           P7^7;

  237. sfr         CH          =           0xf9;
  238. sfr         CCAP0H      =           0xfa;
  239. sfr         CCAP1H      =           0xfb;
  240. sfr         CCAP2H      =           0xfc;
  241. sfr         RSTCFG      =           0xff;

  242. //如下特殊功能寄存器位于擴(kuò)展RAM區(qū)域
  243. //訪問這些寄存器,需先將P_SW2的BIT7設(shè)置為1,才可正常讀寫

  244. /////////////////////////////////////////////////
  245. //FF00H-FFFFH
  246. /////////////////////////////////////////////////


  247. #define     PWMC                    (*(unsigned int  volatile xdata *)0xff00)
  248. #define     PWMCH                   (*(unsigned char volatile xdata *)0xff00)
  249. #define     PWMCL                   (*(unsigned char volatile xdata *)0xff01)
  250. #define     PWMCKS                  (*(unsigned char volatile xdata *)0xff02)
  251. #define     PWMTADC                 (*(unsigned int  volatile xdata *)0xff03)
  252. #define     PWMTADCH                (*(unsigned char volatile xdata *)0xff03)
  253. #define     PWMTADCL                (*(unsigned char volatile xdata *)0xff04)
  254. #define     PWMIF                   (*(unsigned char volatile xdata *)0xff05)
  255. #define     PWMFDCR                 (*(unsigned char volatile xdata *)0xff06)
  256. #define     PWMDELSEL               (*(unsigned char volatile xdata *)0xff07)
  257. #define     PWM0T1                  (*(unsigned int  volatile xdata *)0xff10)
  258. #define     PWM0T1H                 (*(unsigned char volatile xdata *)0xff10)
  259. #define     PWM0T1L                 (*(unsigned char volatile xdata *)0xff11)
  260. #define     PWM0T2                  (*(unsigned int  volatile xdata *)0xff12)
  261. #define     PWM0T2H                 (*(unsigned char volatile xdata *)0xff12)
  262. #define     PWM0T2L                 (*(unsigned char volatile xdata *)0xff13)
  263. #define     PWM0CR                  (*(unsigned char volatile xdata *)0xff14)
  264. #define     PWM0HLD                 (*(unsigned char volatile xdata *)0xff15)
  265. #define     PWM1T1                  (*(unsigned int  volatile xdata *)0xff18)
  266. #define     PWM1T1H                 (*(unsigned char volatile xdata *)0xff18)
  267. #define     PWM1T1L                 (*(unsigned char volatile xdata *)0xff19)
  268. #define     PWM1T2                  (*(unsigned int  volatile xdata *)0xff1a)
  269. #define     PWM1T2H                 (*(unsigned char volatile xdata *)0xff1a)
  270. #define     PWM1T2L                 (*(unsigned char volatile xdata *)0xff1b)
  271. #define     PWM1CR                  (*(unsigned char volatile xdata *)0xff1c)
  272. #define     PWM1HLD                 (*(unsigned char volatile xdata *)0xff1d)
  273. #define     PWM2T1                  (*(unsigned int  volatile xdata *)0xff20)
  274. #define     PWM2T1H                 (*(unsigned char volatile xdata *)0xff20)
  275. #define     PWM2T1L                 (*(unsigned char volatile xdata *)0xff21)
  276. #define     PWM2T2                  (*(unsigned int  volatile xdata *)0xff22)
  277. #define     PWM2T2H                 (*(unsigned char volatile xdata *)0xff22)
  278. #define     PWM2T2L                 (*(unsigned char volatile xdata *)0xff23)
  279. #define     PWM2CR                  (*(unsigned char volatile xdata *)0xff24)
  280. #define     PWM2HLD                 (*(unsigned char volatile xdata *)0xff25)
  281. #define     PWM3T1                  (*(unsigned int  volatile xdata *)0xff28)
  282. #define     PWM3T1H                 (*(unsigned char volatile xdata *)0xff28)
  283. #define     PWM3T1L                 (*(unsigned char volatile xdata *)0xff29)
  284. #define     PWM3T2                  (*(unsigned int  volatile xdata *)0xff2a)
  285. #define     PWM3T2H                 (*(unsigned char volatile xdata *)0xff2a)
  286. #define     PWM3T2L                 (*(unsigned char volatile xdata *)0xff2b)
  287. #define     PWM3CR                  (*(unsigned char volatile xdata *)0xff2c)
  288. #define     PWM3HLD                 (*(unsigned char volatile xdata *)0xff2d)
  289. #define     PWM4T1                  (*(unsigned int  volatile xdata *)0xff30)
  290. #define     PWM4T1H                 (*(unsigned char volatile xdata *)0xff30)
  291. #define     PWM4T1L                 (*(unsigned char volatile xdata *)0xff31)
  292. #define     PWM4T2                  (*(unsigned int  volatile xdata *)0xff32)
  293. #define     PWM4T2H                 (*(unsigned char volatile xdata *)0xff32)
  294. #define     PWM4T2L                 (*(unsigned char volatile xdata *)0xff33)
  295. #define     PWM4CR                  (*(unsigned char volatile xdata *)0xff34)
  296. #define     PWM4HLD                 (*(unsigned char volatile xdata *)0xff35)
  297. #define     PWM5T1                  (*(unsigned int  volatile xdata *)0xff38)
  298. #define     PWM5T1H                 (*(unsigned char volatile xdata *)0xff38)
  299. #define     PWM5T1L                 (*(unsigned char volatile xdata *)0xff39)
  300. #define     PWM5T2                  (*(unsigned int  volatile xdata *)0xff3a)
  301. #define     PWM5T2H                 (*(unsigned char volatile xdata *)0xff3a)
  302. #define     PWM5T2L                 (*(unsigned char volatile xdata *)0xff3b)
  303. #define     PWM5CR                  (*(unsigned char volatile xdata *)0xff3c)
  304. #define     PWM5HLD                 (*(unsigned char volatile xdata *)0xff3d)
  305. #define     PWM6T1                  (*(unsigned int  volatile xdata *)0xff40)
  306. #define     PWM6T1H                 (*(unsigned char volatile xdata *)0xff40)
  307. #define     PWM6T1L                 (*(unsigned char volatile xdata *)0xff41)
  308. #define     PWM6T2                  (*(unsigned int  volatile xdata *)0xff42)
  309. #define     PWM6T2H                 (*(unsigned char volatile xdata *)0xff42)
  310. #define     PWM6T2L                 (*(unsigned char volatile xdata *)0xff43)
  311. #define     PWM6CR                  (*(unsigned char volatile xdata *)0xff44)
  312. #define     PWM6HLD                 (*(unsigned char volatile xdata *)0xff45)
  313. #define     PWM7T1                  (*(unsigned int  volatile xdata *)0xff48)
  314. #define     PWM7T1H                 (*(unsigned char volatile xdata *)0xff48)
  315. #define     PWM7T1L                 (*(unsigned char volatile xdata *)0xff49)
  316. #define     PWM7T2                  (*(unsigned int  volatile xdata *)0xff4a)
  317. #define     PWM7T2H                 (*(unsigned char volatile xdata *)0xff4a)
  318. #define     PWM7T2L                 (*(unsigned char volatile xdata *)0xff4b)
  319. #define     PWM7CR                  (*(unsigned char volatile xdata *)0xff4c)
  320. #define     PWM7HLD                 (*(unsigned char volatile xdata *)0xff4d)

  321. /////////////////////////////////////////////////
  322. //FE00H-FEFFH
  323. /////////////////////////////////////////////////

  324. #define     CLKSEL                  (*(unsigned char volatile xdata *)0xfe00)
  325. #define     CLKDIV                  (*(unsigned char volatile xdata *)0xfe01)
  326. #define     HIRCCR                  (*(unsigned char volatile xdata *)0xfe02)
  327. #define     XOSCCR                  (*(unsigned char volatile xdata *)0xfe03)
  328. #define     IRC32KCR                (*(unsigned char volatile xdata *)0xfe04)
  329. #define     MCLKOCR                 (*(unsigned char volatile xdata *)0xfe05)
  330. #define     IRCDB                   (*(unsigned char volatile xdata *)0xfe06)

  331. #define     P0PU                    (*(unsigned char volatile xdata *)0xfe10)
  332. #define     P1PU                    (*(unsigned char volatile xdata *)0xfe11)
  333. #define     P2PU                    (*(unsigned char volatile xdata *)0xfe12)
  334. #define     P3PU                    (*(unsigned char volatile xdata *)0xfe13)
  335. #define     P4PU                    (*(unsigned char volatile xdata *)0xfe14)
  336. #define     P5PU                    (*(unsigned char volatile xdata *)0xfe15)
  337. #define     P6PU                    (*(unsigned char volatile xdata *)0xfe16)
  338. #define     P7PU                    (*(unsigned char volatile xdata *)0xfe17)
  339. #define     P0NCS                   (*(unsigned char volatile xdata *)0xfe18)
  340. #define     P1NCS                   (*(unsigned char volatile xdata *)0xfe19)
  341. #define     P2NCS                   (*(unsigned char volatile xdata *)0xfe1a)
  342. #define     P3NCS                   (*(unsigned char volatile xdata *)0xfe1b)
  343. #define     P4NCS                   (*(unsigned char volatile xdata *)0xfe1c)
  344. #define     P5NCS                   (*(unsigned char volatile xdata *)0xfe1d)
  345. #define     P6NCS                   (*(unsigned char volatile xdata *)0xfe1e)
  346. #define     P7NCS                   (*(unsigned char volatile xdata *)0xfe1f)
  347. #define     P0SR                    (*(unsigned char volatile xdata *)0xfe20)
  348. #define     P1SR                    (*(unsigned char volatile xdata *)0xfe21)
  349. #define     P2SR                    (*(unsigned char volatile xdata *)0xfe22)
  350. #define     P3SR                    (*(unsigned char volatile xdata *)0xfe23)
  351. #define     P4SR                    (*(unsigned char volatile xdata *)0xfe24)
  352. #define     P5SR                    (*(unsigned char volatile xdata *)0xfe25)
  353. #define     P6SR                    (*(unsigned char volatile xdata *)0xfe26)
  354. #define     P7SR                    (*(unsigned char volatile xdata *)0xfe27)
  355. #define     P0DR                    (*(unsigned char volatile xdata *)0xfe28)
  356. #define     P1DR                    (*(unsigned char volatile xdata *)0xfe29)
  357. #define     P2DR                    (*(unsigned char volatile xdata *)0xfe2a)
  358. #define     P3DR                    (*(unsigned char volatile xdata *)0xfe2b)
  359. #define     P4DR                    (*(unsigned char volatile xdata *)0xfe2c)
  360. #define     P5DR                    (*(unsigned char volatile xdata *)0xfe2d)
  361. #define     P6DR                    (*(unsigned char volatile xdata *)0xfe2e)
  362. #define     P7DR                    (*(unsigned char volatile xdata *)0xfe2f)
  363. #define     P0IE                    (*(unsigned char volatile xdata *)0xfe30)
  364. #define     P1IE                    (*(unsigned char volatile xdata *)0xfe31)
  365. #define     P2IE                    (*(unsigned char volatile xdata *)0xfe32)
  366. #define     P3IE                    (*(unsigned char volatile xdata *)0xfe33)
  367. #define     P4IE                    (*(unsigned char volatile xdata *)0xfe34)
  368. #define     P5IE                    (*(unsigned char volatile xdata *)0xfe35)
  369. #define     P6IE                    (*(unsigned char volatile xdata *)0xfe36)
  370. #define     P7IE                    (*(unsigned char volatile xdata *)0xfe37)

  371. #define     LCMIFCFG                (*(unsigned char volatile xdata *)0xfe50)
  372. #define     LCMIFCFG2               (*(unsigned char volatile xdata *)0xfe51)
  373. #define     LCMIFCR                 (*(unsigned char volatile xdata *)0xfe52)
  374. #define     LCMIFSTA                (*(unsigned char volatile xdata *)0xfe53)
  375. #define     LCMIFDATL               (*(unsigned char volatile xdata *)0xfe54)
  376. #define     LCMIFDATH               (*(unsigned char volatile xdata *)0xfe55)

  377. #define     I2CCFG                  (*(unsigned char volatile xdata *)0xfe80)
  378. #define     I2CMSCR                 (*(unsigned char volatile xdata *)0xfe81)
  379. #define     I2CMSST                 (*(unsigned char volatile xdata *)0xfe82)
  380. #define     I2CSLCR                 (*(unsigned char volatile xdata *)0xfe83)
  381. #define     I2CSLST                 (*(unsigned char volatile xdata *)0xfe84)
  382. #define     I2CSLADR                (*(unsigned char volatile xdata *)0xfe85)
  383. #define     I2CTXD                  (*(unsigned char volatile xdata *)0xfe86)
  384. #define     I2CRXD                  (*(unsigned char volatile xdata *)0xfe87)
  385. #define     I2CMSAUX                (*(unsigned char volatile xdata *)0xfe88)

  386. #define     TM2PS                   (*(unsigned char volatile xdata *)0xfea2)
  387. #define     TM3PS                   (*(unsigned char volatile xdata *)0xfea3)
  388. #define     TM4PS                   (*(unsigned char volatile xdata *)0xfea4)
  389. #define     ADCTIM                  (*(unsigned char volatile xdata *)0xfea8)
  390. #define     ADCEXCFG                (*(unsigned char volatile xdata *)0xfead)
  391. #define     CMPEXCFG                (*(unsigned char volatile xdata *)0xfeae)

  392. /////////////////////////////////////////////////
  393. //FD00H-FDFFH
  394. /////////////////////////////////////////////////

  395. #define     P0INTE                  (*(unsigned char volatile xdata *)0xfd00)
  396. #define     P1INTE                  (*(unsigned char volatile xdata *)0xfd01)
  397. #define     P2INTE                  (*(unsigned char volatile xdata *)0xfd02)
  398. #define     P3INTE                  (*(unsigned char volatile xdata *)0xfd03)
  399. #define     P4INTE                  (*(unsigned char volatile xdata *)0xfd04)
  400. #define     P5INTE                  (*(unsigned char volatile xdata *)0xfd05)
  401. #define     P6INTE                  (*(unsigned char volatile xdata *)0xfd06)
  402. #define     P7INTE                  (*(unsigned char volatile xdata *)0xfd07)
  403. #define     P0INTF                  (*(unsigned char volatile xdata *)0xfd10)
  404. #define     P1INTF                  (*(unsigned char volatile xdata *)0xfd11)
  405. #define     P2INTF                  (*(unsigned char volatile xdata *)0xfd12)
  406. #define     P3INTF                  (*(unsigned char volatile xdata *)0xfd13)
  407. #define     P4INTF                  (*(unsigned char volatile xdata *)0xfd14)
  408. #define     P5INTF                  (*(unsigned char volatile xdata *)0xfd15)
  409. #define     P6INTF                  (*(unsigned char volatile xdata *)0xfd16)
  410. #define     P7INTF                  (*(unsigned char volatile xdata *)0xfd17)
  411. #define     P0IM0                   (*(unsigned char volatile xdata *)0xfd20)
  412. #define     P1IM0                   (*(unsigned char volatile xdata *)0xfd21)
  413. #define     P2IM0                   (*(unsigned char volatile xdata *)0xfd22)
  414. #define     P3IM0                   (*(unsigned char volatile xdata *)0xfd23)
  415. #define     P4IM0                   (*(unsigned char volatile xdata *)0xfd24)
  416. #define     P5IM0                   (*(unsigned char volatile xdata *)0xfd25)
  417. #define     P6IM0                   (*(unsigned char volatile xdata *)0xfd26)
  418. #define     P7IM0                   (*(unsigned char volatile xdata *)0xfd27)
  419. #define     P0IM1                   (*(unsigned char volatile xdata *)0xfd30)
  420. #define     P1IM1                   (*(unsigned char volatile xdata *)0xfd31)
  421. #define     P2IM1                   (*(unsigned char volatile xdata *)0xfd32)
  422. #define     P3IM1                   (*(unsigned char volatile xdata *)0xfd33)
  423. #define     P4IM1                   (*(unsigned char volatile xdata *)0xfd34)
  424. #define     P5IM1                   (*(unsigned char volatile xdata *)0xfd35)
  425. #define     P6IM1                   (*(unsigned char volatile xdata *)0xfd36)
  426. #define     P7IM1                   (*(unsigned char volatile xdata *)0xfd37)
  427. #define     P0WKUE                  (*(unsigned char volatile xdata *)0xfd40)
  428. #define     P1WKUE                  (*(unsigned char volatile xdata *)0xfd41)
  429. #define     P2WKUE                  (*(unsigned char volatile xdata *)0xfd42)
  430. #define     P3WKUE                  (*(unsigned char volatile xdata *)0xfd43)
  431. #define     P4WKUE                  (*(unsigned char volatile xdata *)0xfd44)
  432. #define     P5WKUE                  (*(unsigned char volatile xdata *)0xfd45)
  433. #define     P6WKUE                  (*(unsigned char volatile xdata *)0xfd46)
  434. #define     P7WKUE                  (*(unsigned char volatile xdata *)0xfd47)

  435. #define     CCAPM3                  (*(unsigned char volatile xdata *)0xfd54)
  436. #define     CCAP3L                  (*(unsigned char volatile xdata *)0xfd55)
  437. #define     CCAP3H                  (*(unsigned char volatile xdata *)0xfd56)
  438. #define     PCA_PWM3                (*(unsigned char volatile xdata *)0xfd57)

  439. #define     PINIPL                  (*(unsigned char volatile xdata *)0xfd60)
  440. #define     PINIPH                  (*(unsigned char volatile xdata *)0xfd61)

  441. #define     CHIPID0                 (*(unsigned char volatile xdata *)0xfde0)
  442. #define     CHIPID1                 (*(unsigned char volatile xdata *)0xfde1)
  443. #define     CHIPID2                 (*(unsigned char volatile xdata *)0xfde2)
  444. #define     CHIPID3                 (*(unsigned char volatile xdata *)0xfde3)
  445. #define     CHIPID4                 (*(unsigned char volatile xdata *)0xfde4)
  446. #define     CHIPID5                 (*(unsigned char volatile xdata *)0xfde5)
  447. #define     CHIPID6                 (*(unsigned char volatile xdata *)0xfde6)
  448. #define     CHIPID7                 (*(unsigned char volatile xdata *)0xfde7)
  449. #define     CHIPID8                 (*(unsigned char volatile xdata *)0xfde8)
  450. #define     CHIPID9                 (*(unsigned char volatile xdata *)0xfde9)
  451. #define     CHIPID10                (*(unsigned char volatile xdata *)0xfdea)
  452. #define     CHIPID11                (*(unsigned char volatile xdata *)0xfdeb)
  453. #define     CHIPID12                (*(unsigned char volatile xdata *)0xfdec)
  454. #define     CHIPID13                (*(unsigned char volatile xdata *)0xfded)
  455. #define     CHIPID14                (*(unsigned char volatile xdata *)0xfdee)
  456. #define     CHIPID15                (*(unsigned char volatile xdata *)0xfdef)
  457. #define     CHIPID16                (*(unsigned char volatile xdata *)0xfdf0)
  458. #define     CHIPID17                (*(unsigned char volatile xdata *)0xfdf1)
  459. #define     CHIPID18                (*(unsigned char volatile xdata *)0xfdf2)
  460. #define     CHIPID19                (*(unsigned char volatile xdata *)0xfdf3)
  461. #define     CHIPID20                (*(unsigned char volatile xdata *)0xfdf4)
  462. #define     CHIPID21                (*(unsigned char volatile xdata *)0xfdf5)
  463. #define     CHIPID22                (*(unsigned char volatile xdata *)0xfdf6)
  464. #define     CHIPID23                (*(unsigned char volatile xdata *)0xfdf7)
  465. #define     CHIPID24                (*(unsigned char volatile xdata *)0xfdf8)
  466. #define     CHIPID25                (*(unsigned char volatile xdata *)0xfdf9)
  467. #define     CHIPID26                (*(unsigned char volatile xdata *)0xfdfa)
  468. #define     CHIPID27                (*(unsigned char volatile xdata *)0xfdfb)
  469. #define     CHIPID28                (*(unsigned char volatile xdata *)0xfdfc)
  470. #define     CHIPID29                (*(unsigned char volatile xdata *)0xfdfd)
  471. #define     CHIPID30                (*(unsigned char volatile xdata *)0xfdfe)
  472. #define     CHIPID31                (*(unsigned char volatile xdata *)0xfdff)

  473. /////////////////////////////////////////////////
  474. //FC00H-FCFFH
  475. /////////////////////////////////////////////////

  476. #define     MD3                     (*(unsigned char volatile xdata *)0xfcf0)
  477. #define     MD2                     (*(unsigned char volatile xdata *)0xfcf1)
  478. #define     MD1                     (*(unsigned char volatile xdata *)0xfcf2)
  479. #define     MD0                     (*(unsigned char volatile xdata *)0xfcf3)
  480. #define     MD5                     (*(unsigned char volatile xdata *)0xfcf4)
  481. #define     MD4                     (*(unsigned char volatile xdata *)0xfcf5)
  482. #define     ARCON                   (*(unsigned char volatile xdata *)0xfcf6)
  483. #define     OPCON                   (*(unsigned char volatile xdata *)0xfcf7)

  484. /////////////////////////////////////////////////
  485. //FB00H-FBFFH
  486. /////////////////////////////////////////////////


  487. /////////////////////////////////////////////////
  488. //FA00H-FAFFH
  489. /////////////////////////////////////////////////

  490. #define     DMA_ADC_CFG             (*(unsigned char volatile xdata *)0xfa10)
  491. #define     DMA_ADC_CR              (*(unsigned char volatile xdata *)0xfa11)
  492. #define     DMA_ADC_STA             (*(unsigned char volatile xdata *)0xfa12)
  493. #define     DMA_ADC_RXA             (*(unsigned  int volatile xdata *)0xfa17)
  494. #define     DMA_ADC_RXAH            (*(unsigned char volatile xdata *)0xfa17)
  495. #define     DMA_ADC_RXAL            (*(unsigned char volatile xdata *)0xfa18)
  496. #define     DMA_ADC_CFG2            (*(unsigned char volatile xdata *)0xfa19)
  497. #define     DMA_ADC_CHSW0           (*(unsigned char volatile xdata *)0xfa1a)
  498. #define     DMA_ADC_CHSW1           (*(unsigned char volatile xdata *)0xfa1b)

  499. #define     DMA_SPI_CFG             (*(unsigned char volatile xdata *)0xfa20)
  500. #define     DMA_SPI_CR              (*(unsigned char volatile xdata *)0xfa21)
  501. #define     DMA_SPI_STA             (*(unsigned char volatile xdata *)0xfa22)
  502. #define     DMA_SPI_AMT             (*(unsigned char volatile xdata *)0xfa23)
  503. #define     DMA_SPI_DONE            (*(unsigned char volatile xdata *)0xfa24)
  504. #define     DMA_SPI_TXA             (*(unsigned  int volatile xdata *)0xfa25)
  505. #define     DMA_SPI_TXAH            (*(unsigned char volatile xdata *)0xfa25)
  506. #define     DMA_SPI_TXAL            (*(unsigned char volatile xdata *)0xfa26)
  507. #define     DMA_SPI_RXA             (*(unsigned  int volatile xdata *)0xfa27)
  508. #define     DMA_SPI_RXAH            (*(unsigned char volatile xdata *)0xfa27)
  509. #define     DMA_SPI_RXAL            (*(unsigned char volatile xdata *)0xfa28)
  510. #define     DMA_SPI_CFG2            (*(unsigned char volatile xdata *)0xfa29)

  511. #define     DMA_UR1T_CFG            (*(unsigned char volatile xdata *)0xfa30)
  512. #define     DMA_UR1T_CR             (*(unsigned char volatile xdata *)0xfa31)
  513. #define     DMA_UR1T_STA            (*(unsigned char volatile xdata *)0xfa32)
  514. #define     DMA_UR1T_AMT            (*(unsigned char volatile xdata *)0xfa33)
  515. #define     DMA_UR1T_DONE           (*(unsigned char volatile xdata *)0xfa34)
  516. #define     DMA_UR1T_TXA            (*(unsigned  int volatile xdata *)0xfa35)
  517. #define     DMA_UR1T_TXAH           (*(unsigned char volatile xdata *)0xfa35)
  518. #define     DMA_UR1T_TXAL           (*(unsigned char volatile xdata *)0xfa36)
  519. #define     DMA_UR1R_CFG            (*(unsigned char volatile xdata *)0xfa38)
  520. #define     DMA_UR1R_CR             (*(unsigned char volatile xdata *)0xfa39)
  521. #define     DMA_UR1R_STA            (*(unsigned char volatile xdata *)0xfa3a)
  522. #define     DMA_UR1R_AMT            (*(unsigned char volatile xdata *)0xfa3b)
  523. #define     DMA_UR1R_DONE           (*(unsigned char volatile xdata *)0xfa3c)
  524. #define     DMA_UR1R_RXA            (*(unsigned  int volatile xdata *)0xfa3d)
  525. #define     DMA_UR1R_RXAH           (*(unsigned char volatile xdata *)0xfa3d)
  526. #define     DMA_UR1R_RXAL           (*(unsigned char volatile xdata *)0xfa3e)

  527. #define     DMA_UR2T_CFG            (*(unsigned char volatile xdata *)0xfa40)
  528. #define     DMA_UR2T_CR             (*(unsigned char volatile xdata *)0xfa41)
  529. #define     DMA_UR2T_STA            (*(unsigned char volatile xdata *)0xfa42)
  530. #define     DMA_UR2T_AMT            (*(unsigned char volatile xdata *)0xfa43)
  531. #define     DMA_UR2T_DONE           (*(unsigned char volatile xdata *)0xfa44)
  532. #define     DMA_UR2T_TXA            (*(unsigned  int volatile xdata *)0xfa45)
  533. #define     DMA_UR2T_TXAH           (*(unsigned char volatile xdata *)0xfa45)
  534. #define     DMA_UR2T_TXAL           (*(unsigned char volatile xdata *)0xfa46)
  535. #define     DMA_UR2R_CFG            (*(unsigned char volatile xdata *)0xfa48)
  536. #define     DMA_UR2R_CR             (*(unsigned char volatile xdata *)0xfa49)
  537. #define     DMA_UR2R_STA            (*(unsigned char volatile xdata *)0xfa4a)
  538. #define     DMA_UR2R_AMT            (*(unsigned char volatile xdata *)0xfa4b)
  539. #define     DMA_UR2R_DONE           (*(unsigned char volatile xdata *)0xfa4c)
  540. #define     DMA_UR2R_RXA            (*(unsigned  int volatile xdata *)0xfa4d)
  541. #define     DMA_UR2R_RXAH           (*(unsigned char volatile xdata *)0xfa4d)
  542. #define     DMA_UR2R_RXAL           (*(unsigned char volatile xdata *)0xfa4e)

  543. #define     DMA_UR3T_CFG            (*(unsigned char volatile xdata *)0xfa50)
  544. #define     DMA_UR3T_CR             (*(unsigned char volatile xdata *)0xfa51)
  545. #define     DMA_UR3T_STA            (*(unsigned char volatile xdata *)0xfa52)
  546. #define     DMA_UR3T_AMT            (*(unsigned char volatile xdata *)0xfa53)
  547. #define     DMA_UR3T_DONE           (*(unsigned char volatile xdata *)0xfa54)
  548. #define     DMA_UR3T_TXA            (*(unsigned  int volatile xdata *)0xfa55)
  549. #define     DMA_UR3T_TXAH           (*(unsigned char volatile xdata *)0xfa55)
  550. #define     DMA_UR3T_TXAL           (*(unsigned char volatile xdata *)0xfa56)
  551. #define     DMA_UR3R_CFG            (*(unsigned char volatile xdata *)0xfa58)
  552. #define     DMA_UR3R_CR             (*(unsigned char volatile xdata *)0xfa59)
  553. #define     DMA_UR3R_STA            (*(unsigned char volatile xdata *)0xfa5a)
  554. #define     DMA_UR3R_AMT            (*(unsigned char volatile xdata *)0xfa5b)
  555. #define     DMA_UR3R_DONE           (*(unsigned char volatile xdata *)0xfa5c)
  556. #define     DMA_UR3R_RXA            (*(unsigned  int volatile xdata *)0xfa5d)
  557. #define     DMA_UR3R_RXAH           (*(unsigned char volatile xdata *)0xfa5d)
  558. #define     DMA_UR3R_RXAL           (*(unsigned char volatile xdata *)0xfa5e)

  559. #define     DMA_UR4T_CFG            (*(unsigned char volatile xdata *)0xfa60)
  560. #define     DMA_UR4T_CR             (*(unsigned char volatile xdata *)0xfa61)
  561. #define     DMA_UR4T_STA            (*(unsigned char volatile xdata *)0xfa62)
  562. #define     DMA_UR4T_AMT            (*(unsigned char volatile xdata *)0xfa63)
  563. #define     DMA_UR4T_DONE           (*(unsigned char volatile xdata *)0xfa64)
  564. #define     DMA_UR4T_TXA            (*(unsigned  int volatile xdata *)0xfa65)
  565. #define     DMA_UR4T_TXAH           (*(unsigned char volatile xdata *)0xfa65)
  566. #define     DMA_UR4T_TXAL           (*(unsigned char volatile xdata *)0xfa66)
  567. #define     DMA_UR4R_CFG            (*(unsigned char volatile xdata *)0xfa68)
  568. #define     DMA_UR4R_CR             (*(unsigned char volatile xdata *)0xfa69)
  569. #define     DMA_UR4R_STA            (*(unsigned char volatile xdata *)0xfa6a)
  570. #define     DMA_UR4R_AMT            (*(unsigned char volatile xdata *)0xfa6b)
  571. #define     DMA_UR4R_DONE           (*(unsigned char volatile xdata *)0xfa6c)
  572. #define     DMA_UR4R_RXA            (*(unsigned  int volatile xdata *)0xfa6d)
  573. #define     DMA_UR4R_RXAH           (*(unsigned char volatile xdata *)0xfa6d)
  574. #define     DMA_UR4R_RXAL           (*(unsigned char volatile xdata *)0xfa6e)

  575. #define     DMA_LCM_CFG             (*(unsigned char volatile xdata *)0xfa70)
  576. #define     DMA_LCM_CR              (*(unsigned char volatile xdata *)0xfa71)
  577. #define     DMA_LCM_STA             (*(unsigned char volatile xdata *)0xfa72)
  578. #define     DMA_LCM_AMT             (*(unsigned char volatile xdata *)0xfa73)
  579. #define     DMA_LCM_DONE            (*(unsigned char volatile xdata *)0xfa74)
  580. #define     DMA_LCM_TXA             (*(unsigned  int volatile xdata *)0xfa75)
  581. #define     DMA_LCM_TXAH            (*(unsigned char volatile xdata *)0xfa75)
  582. #define     DMA_LCM_TXAL            (*(unsigned char volatile xdata *)0xfa76)
  583. #define     DMA_LCM_RXA             (*(unsigned  int volatile xdata *)0xfa77)
  584. #define     DMA_LCM_RXAH            (*(unsigned char volatile xdata *)0xfa77)
  585. #define     DMA_LCM_RXAL            (*(unsigned char volatile xdata *)0xfa78)


  586. /////////////////////////////////////////////////

  587. #define     INT0_VECTOR             0       //0003H
  588. #define     TMR0_VECTOR             1       //000BH
  589. #define     INT1_VECTOR             2       //0013H
  590. #define     TMR1_VECTOR             3       //001BH
  591. #define     UART1_VECTOR            4       //0023H
  592. #define     ADC_VECTOR              5       //002BH
  593. #define     LVD_VECTOR              6       //0033H
  594. #define     PCA_VECTOR              7       //003BH
  595. #define     UART2_VECTOR            8       //0043H
  596. #define     SPI_VECTOR              9       //004BH
  597. #define     INT2_VECTOR             10      //0053H
  598. #define     INT3_VECTOR             11      //005BH
  599. #define     TMR2_VECTOR             12      //0063H
  600. #define     USER_VECTOR             13      //006BH
  601. #define     INT4_VECTOR             16      //0083H
  602. #define     UART3_VECTOR            17      //008BH
  603. #define     UART4_VECTOR            18      //0093H
  604. #define     TMR3_VECTOR             19      //009BH
  605. #define     TMR4_VECTOR             20      //00A3H
  606. #define     CMP_VECTOR              21      //00ABH
  607. #define     PWM_VECTOR              22      //00B3H
  608. #define     PWMFD_VECTOR            23      //00BBH
  609. #define     I2C_VECTOR              24      //00C3H
  610. #define     P0INT_VECTOR            37      //012BH
  611. #define     P1INT_VECTOR            38      //0133H
  612. #define     P2INT_VECTOR            39      //013BH
  613. #define     P3INT_VECTOR            40      //0143H
  614. #define     P4INT_VECTOR            41      //014BH
  615. #define     P5INT_VECTOR            42      //0153H
  616. #define     P6INT_VECTOR            43      //015BH
  617. #define     P7INT_VECTOR            44      //0163H
  618. #define     M2MDMA_VECTOR           47      //017BH
  619. #define     ADCDMA_VECTOR           48      //0183H
  620. #define     SPIDMA_VECTOR           49      //018BH
  621. #define     U1TXDMA_VECTOR          50      //0193H
  622. #define     U1RXDMA_VECTOR          51      //019BH
  623. #define     U2TXDMA_VECTOR          52      //01A3H
  624. #define     U2RXDMA_VECTOR          53      //01ABH
  625. #define     U3TXDMA_VECTOR          54      //01B3H
  626. #define     U3RXDMA_VECTOR          55      //01BBH
  627. #define     U4TXDMA_VECTOR          56      //01C3H
  628. #define     U4RXDMA_VECTOR          57      //01CBH
  629. #define     LCMDMA_VECTOR           58      //01D3H
  630. #define     LCM_VECTOR              59      //01DBH

  631. /////////////////////////////////////////////////

  632. #endif

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

10#
ID:157007 發(fā)表于 2023-12-28 22:30 | 只看該作者
czhaii 發(fā)表于 2023-12-28 19:18
STC8G 和STC8H定義不一樣
定時(shí)器0中斷號(hào)1起的別名修改為1就行了

if(io == 1)    {S1_USE_P36P37();    P3n_standard(0xc0);}    //切換到 P3.6 P3.7
    else if(io == 2)    {S1_USE_P16P17();    P1n_standard(0xc0);}    //切換到 P1.6 P1.7
    else if(io == 3)    {S1_USE_P43P44();    P4n_standard(0x18);}    //切換到 P4.3 P4.4
    else                {S1_USE_P30P31();    P3n_standard(0x03);}    //切換到 P3.0 P3.1

如果不需要端口切換,可以把這些先注釋掉。這些可能是在其他地方定義的函數(shù)和宏。
回復(fù)

使用道具 舉報(bào)

11#
ID:155507 發(fā)表于 2023-12-28 22:54 | 只看該作者
按提示加上這些定義后正常了,哎,頭文件不統(tǒng)一造成
#define                TIMER0_VECTOR        1
#define                S1_USE_P36P37()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0x40        //UART1 使用P3.6 P3.7口
#define                S1_USE_P16P17()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0x80        //UART1 使用P1.6 P1.7口
#define                S1_USE_P43P44()                                        P_SW1  =  (P_SW1 & ~0xc0) | 0xc0        //UART1 使用P4.3 P4.4口
#define         P1n_standard(bitn)                        P1M1 &= ~(bitn),        P1M0 &= ~(bitn)
#define   P3n_standard(bitn)                        P3M1 &= ~(bitn),        P3M0 &= ~(bitn)
#define         P4n_standard(bitn)                        P4M1 &= ~(bitn),        P4M0 &= ~(bitn)
#define                S1_USE_P30P31()                                        P_SW1 &= ~0xc0
回復(fù)

使用道具 舉報(bào)

12#
ID:879348 發(fā)表于 2023-12-29 09:11 | 只看該作者
明顯缺少定義頭文件
回復(fù)

使用道具 舉報(bào)

13#
ID:1057978 發(fā)表于 2023-12-29 10:12 | 只看該作者
說一下那個(gè)型號(hào)的單片機(jī)的例程,來源是哪里
回復(fù)

使用道具 舉報(bào)

14#
ID:1062320 發(fā)表于 2023-12-30 17:42 | 只看該作者
看起來是缺少定義 大概是缺了頭文件
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级国产a | 男女网站免费 | 午夜免费视频 | 岛国av免费在线观看 | 国产在线精品一区二区三区 | 日本精品久久久久久久 | 欧美一区二区三区,视频 | 91最新入口 | 国产激情91久久精品导航 | 国产精品久久一区二区三区 | 中文日韩在线 | 欧美日韩精品一区二区三区四区 | 精品久久久久久久久久久久久久 | 精品国产乱码一区二区三区 | 亚洲精品视频在线观看视频 | 老司机免费视频 | 无码一区二区三区视频 | 国产视频在线观看一区二区三区 | 亚州一区二区三区 | 91av在线电影 | 色综合色综合色综合 | 国产91视频免费 | 国产乱码精品一区二区三区五月婷 | 欧美一区二区三区在线 | 欧美4p| 日韩伦理电影免费在线观看 | 久久国产精品一区二区三区 | 欧产日产国产精品视频 | 免费的av | 特级特黄特色的免费大片 | 91社区在线观看 | 国产韩国精品一区二区三区 | 精品伊人 | 亚洲bt 欧美bt 日本bt | 热久色| 欧美一区2区三区4区公司二百 | 精品中文字幕久久 | 亚洲在线视频 | 韩国精品在线 | h视频在线观看免费 | 久久久久一区 |