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

QQ登錄

只需一步,快速開始

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

我的這個(gè)單片機(jī)程序 同時(shí)啟用定時(shí)器0和1 怎么不能實(shí)現(xiàn)呢個(gè),單個(gè)使用正常

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:878906 發(fā)表于 2021-1-29 17:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
同時(shí)啟用定時(shí)器0和1 定時(shí)1用于串口中斷 ,定時(shí)0用于定時(shí)1MS中斷 求助前輩們指導(dǎo)指導(dǎo)一下 是怎么回事呢?把我給搞蒙了

單片機(jī)源程序如下:


void ConfigSUART(unsigned int baud)
{
    ACC = P_SW1;
    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
    //ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
    //ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
    P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
   
  
   SCON = 0x50;                //8位可變波特率
    AUXR |= 0x40;                //定時(shí)器1為1T模式
    AUXR &= 0xFE;   
    TMOD &= 0x80;                //定時(shí)器1為模式0(16位自動(dòng)重載)
    TL1 = (65536 - (FOSC/4/BAUD));   //設(shè)置波特率重裝值
    TH1 = (65536 - (FOSC/4/BAUD))>>8;
    TR1 = 1;                    //定時(shí)器1開始啟動(dòng)
    ET1=1;
    TI = 1;   //在串口使用printf的時(shí)候,需要將T1=1;
    ES = 1;                     //使能串口中斷
    printf("\n 串口初始化\n");   
}

/* 配置并啟動(dòng)T0,ms-T0定時(shí)時(shí)間 */
void ConfigTimer0(unsigned int ms)
{
    unsigned long tmp;  //臨時(shí)變量
   
    tmp = 11059200 / 12;      //定時(shí)器計(jì)數(shù)頻率
    tmp = (tmp * ms) / 1000;  //計(jì)算所需的計(jì)數(shù)值
    tmp = 65536 - tmp;        //計(jì)算定時(shí)器重載值
    tmp = tmp + 33;           //補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差
   
   //AUXR |= 0x80;                   //定時(shí)器0為1T模式
    AUXR &= 0xFE;                   //定時(shí)器0為12T模式
    TMOD &= 0xF8;                    //設(shè)置定時(shí)器為模式0(16位自動(dòng)重裝載)
    TH0 = (unsigned char)(tmp>>8);  //定時(shí)器重載值拆分為高低字節(jié)
    TL0 = (unsigned char)tmp;

    ET0 = 1;        //使能T0中斷
    TR0 = 1;        //啟動(dòng)T0
}


void main()
{
    P0M1 = 0;    P0M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P1M1 = 0;    P1M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P2M1 = 0;    P2M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P3M1 = 0;    P3M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P4M1 = 0;    P4M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P5M1 = 0;    P5M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P6M1 = 0;    P6M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    P7M1 = 0;    P7M0 = 0;    //設(shè)置為準(zhǔn)雙向口
    //上面這些是必要的,除非用到PWM
   
  

  ConfigSUART(115200);

    ConfigTimer0(1);   //配置T0定時(shí)1ms

     EA = 1;            //開總中斷
     
    while (1)
    {

    }
}




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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2021-1-30 08:11 | 只看該作者

    AUXR   TMOD  重復(fù)配置不當(dāng)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:390416 發(fā)表于 2021-1-30 09:45 | 只看該作者
AUXR   TMOD 要按位與和按位或  不能賦值
回復(fù)

使用道具 舉報(bào)

地板
ID:752974 發(fā)表于 2021-1-30 10:15 | 只看該作者
T1用作波特率不能開中斷吧。
回復(fù)

使用道具 舉報(bào)

5#
ID:392485 發(fā)表于 2021-1-30 12:55 | 只看該作者
AUXR &= 0xFE;                   //定時(shí)器0為12T模式
TMOD &= 0xF8;                    //設(shè)置定時(shí)器為模式0(16位自動(dòng)重裝載)
這種寫法會(huì)影響其它位的值。
回復(fù)

使用道具 舉報(bào)

6#
ID:878906 發(fā)表于 2021-1-30 15:26 | 只看該作者
已解決,謝謝各位大神的指導(dǎo)!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表