欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 我的這個單片機程序 同時啟用定時器0和1 怎么不能實現呢個,單個使用正常 [打印本頁]

作者: jinni_wu    時間: 2021-1-29 17:46
標題: 我的這個單片機程序 同時啟用定時器0和1 怎么不能實現呢個,單個使用正常
同時啟用定時器0和1 定時1用于串口中斷 ,定時0用于定時1MS中斷 求助前輩們指導指導一下 是怎么回事呢?把我給搞蒙了

單片機源程序如下:


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;                //定時器1為1T模式
    AUXR &= 0xFE;   
    TMOD &= 0x80;                //定時器1為模式0(16位自動重載)
    TL1 = (65536 - (FOSC/4/BAUD));   //設置波特率重裝值
    TH1 = (65536 - (FOSC/4/BAUD))>>8;
    TR1 = 1;                    //定時器1開始啟動
    ET1=1;
    TI = 1;   //在串口使用printf的時候,需要將T1=1;
    ES = 1;                     //使能串口中斷
    printf("\n 串口初始化\n");   
}

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

    ET0 = 1;        //使能T0中斷
    TR0 = 1;        //啟動T0
}


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

  ConfigSUART(115200);

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

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

    }
}





作者: wulin    時間: 2021-1-30 08:11
1275109681 發表于 2021-1-29 22:53
頂一下

    AUXR   TMOD  重復配置不當。
作者: 人人學會單片機    時間: 2021-1-30 09:45
AUXR   TMOD 要按位與和按位或  不能賦值

作者: munuc_w    時間: 2021-1-30 10:15
T1用作波特率不能開中斷吧。
作者: sync763    時間: 2021-1-30 12:55
AUXR &= 0xFE;                   //定時器0為12T模式
TMOD &= 0xF8;                    //設置定時器為模式0(16位自動重裝載)
這種寫法會影響其它位的值。
作者: jinni_wu    時間: 2021-1-30 15:26
已解決,謝謝各位大神的指導!




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1