1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: 我做了一個(gè)項(xiàng)目需要用到上位機(jī)控制下位機(jī),同時(shí)還需要另外一個(gè)中斷,請問程序怎么.... [打印本頁]

作者: hl5105363    時(shí)間: 2018-7-20 12:04
標(biāo)題: 我做了一個(gè)項(xiàng)目需要用到上位機(jī)控制下位機(jī),同時(shí)還需要另外一個(gè)中斷,請問程序怎么....
void init()  //初始化函數(shù)
{
     TMOD=0X01;                                 //初始化定時(shí)器
         TH0=(65536-10)/256;         //初值配置
         TL0=(65536-10)%256;
         EA=1;                                         //開總中斷
         ET0=1;                                         //定時(shí)/計(jì)數(shù)器T0中斷允許
         TR0=1;                                         
}
void time0(void) interrupt 1         //定時(shí)器中斷函數(shù)
  {

    TH0=(65536-10)/256;
        TL0=(65536-10)%256;
        ++i;
        if(i>10)
          {
          i=0;
          };

        if(i<=zkb)
        {
        OE=0;
        }
        else OE=1;


  }

這個(gè)是我要用到的定時(shí)器中斷

void UsartConfiguration()
{
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;                                        //打開計(jì)數(shù)器
}
void Usart() interrupt 4
{
       

    if (RI)  //接收到字節(jié)
    {                                                                                                                                                   
                cmdIndex = SBUF;
                RI = 0;  //清零接收中斷標(biāo)志位
                SBUF = cmdIndex;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
                cmdArrived = 1;  
    }
    if (TI)      //字節(jié)發(fā)送完
    {                                                                                                         
        TI = 0;  //清零發(fā)送中斷標(biāo)志位
    }
                                         //清除發(fā)送完成標(biāo)志位
}
這個(gè)是我用到的通訊中斷

單獨(dú)可以運(yùn)行,為什么放在一個(gè)程序就不行了呢????求大神指點(diǎn)迷津



作者: 小貓貓愛吃魚    時(shí)間: 2018-7-20 18:28
你好!把具體功能要求說一下吧
作者: HC6800-ES-V2.0    時(shí)間: 2018-7-21 09:23
你的程序單獨(dú)能執(zhí)行,放一起就不能執(zhí)行,很正常!!!!!
因?yàn)椋耗闶莾蓚(gè)程序的復(fù)制粘貼,不是程序邏輯的組合。
你的程序中,第一次初始化定時(shí)器,TMOD=0x01,第二次又重新設(shè)置為TMOD=0x20,不論兩個(gè)初始化函數(shù)誰行誰后,反正只有后一次設(shè)置的那個(gè)定時(shí)器是可用的。
所以,應(yīng)該兩個(gè)定時(shí)器一次性設(shè)置完,這就是程序的邏輯組合了。
當(dāng)然,如果你不參加考試,可以用STC-ISP程序中的定時(shí)器設(shè)置功能做函數(shù),那么,得到的兩個(gè)函數(shù)是可以獨(dú)立運(yùn)行的,你也可以從它給出的程序中學(xué)到如何在第二次設(shè)置時(shí),不改變第一次設(shè)置——很高級的知識(shí)哦。
作者: wulin    時(shí)間: 2018-7-21 16:55
要同時(shí)設(shè)置TMOD
void Timer_Init()                  //初始化定時(shí)器
{
        TMOD=0X21;           //定時(shí)器0方式1,定時(shí)器1方式2
        SCON=0X50;           //設(shè)置串口控制寄存器
        PCON=0X80;           //波特率加倍
        TH0=(65536-10)/256;  //定時(shí)器0初始值
        TL0=(65536-10)%256; //定時(shí)器0初始值
        TH1=0XF3;            //定時(shí)器1重載值,注意波特率是4800的設(shè)置定時(shí)重載值
        TL1=0XF3;            //定時(shí)器1初始值
        TR0=1;              //開定時(shí)器0
        TR1=1;              //開定時(shí)器1
        EA=1;               //開總中斷
        ET0=1;              //定時(shí)/計(jì)數(shù)器T0中斷允許
        ES=1;               //打開接收中斷
}




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