找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2449|回復: 4
打印 上一主題 下一主題
收起左側

為什么主函數(shù)里的循環(huán)是空的

[復制鏈接]
跳轉到指定樓層
樓主
ID:213280 發(fā)表于 2018-10-19 21:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在網(wǎng)上看到的一個PWM控制雙舵機的程序,為什么主函數(shù)里的循環(huán)是空的?程序是對的嗎?求解
sbit SEV_PWM = P0^0;  //上下舵機信號位
sbit SEH_PWM = P0^1;  //左右舵機信號位
unsigned char count = 0;
unsigned char SEV_count = 15;
unsigned char SEH_count = 15;
/* 串口初始化、定時器T0T1初始化 */
void Com_Init()
{
    IP = 0x08;
    PCON &= 0x7F;
    TMOD &= 0x00;
    TMOD |= 0x21; //定時器0設置為16為定時器方式1,定時器1配置波特率為自動重載方式2
    SCON= 0x50;   //串口工作在方式1,8位異步通信
    TH1 = 0xfd;   //定時器1設置為在11.0592下波特率為9600
    TL1 = 0xfd;
    ES = 1;       //打開串口中斷
    ET1 = 0;      //關閉定時器1中斷
    TR1 = 1;      //打開定時器1
TH0 = 0xff;   //配置定時器0初值,溢出時間為0.1ms
    TL0 = 0xa4;
    ET0 = 1;      //打開定時器0中斷
    TR0 = 1;      //開啟定時器0
}
/* 定時器0中斷服務程序 */
void Time0_Int() interrupt 1
{
    TR0 = 0;      //關閉定時器0
    TH0 = 0xff;   //重裝初值0.1ms
    TL0 = 0xa4;
    //舵機1
    if(count <= SEH_count) //控制占空比左右
    {
        //如果count的計數(shù)小于(5-25)也就是0.5ms-2.5ms則這段小t周期持續(xù)高電平。產(chǎn)生方波
        SEH_PWM = 1;
    }
    else
    {
        SEH_PWM = 0;
    }
//舵機2
    if(count <= SEV_count) //控制占空比上下
    {
        SEV_PWM = 1;
    }
    else
    {
        SEV_PWM = 0;
    }
    count++;
    if (count >= 200) //T = 20ms則定時器計數(shù)變量清0
    {
        count = 0;
    }
    TR0 = 1; //開啟定時器0
}
void main()
{
    Com_Init();
    while(1)
    {
        ;
    }
}
/* 串口中斷函數(shù) */
void uart_ser() interrupt 4
{
    if (RI == 0)
    {
        return;
    }
    ES = 0;
    RI = 0;
    command = SBUF; //將接收到的數(shù)據(jù)傳給command
    switchcommand
    {
         case 'f': //舵機向上轉
        {
            SEV_count++;
            if(SEV_count >= 25)
            {
SEV_count = 25;
            }
            count = 0; //占空比參數(shù)t改變,讓定時器重新計數(shù)
            break;
        }   
        case 'g':
        {
            SEV_count--;
            if(SEV_count <= 5)
            {
                SEV_count = 5;
            }
            count = 0;
            break;
        }   
        case 'h':
        {
            SEH_count++;
            if(SEH_count >= 25)
            {
                SEH_count = 25; //保持角度180度。
            }
            count = 0;
            break;
        }   
case 'i':
        {
            SEH_count--;
            if(SEH_count <= 5) //保持角度0
            {
                SEH_count = 5;
            }
            count = 0;
            break;
        }
        case 'k':  //舵機復位
        {
            SEH_count = 15;
            SEV_count = 15;
            count = 0;
            break;
        }
        default
        {
            break;
        }
    }
    ES = 1; //打開串口
}

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

使用道具 舉報

沙發(fā)
ID:387733 發(fā)表于 2018-10-20 08:56 | 只看該作者
因為主函數(shù)只有一個任務就是初始化定時器,完成初始化以后,就把所有的任務派發(fā)給定時器中斷了,只需悠閑的打空轉消磨時間,而定時器中斷則會忠誠地按時完成各自的任務。
回復

使用道具 舉報

板凳
ID:413154 發(fā)表于 2018-10-21 16:50 | 只看該作者
他是起一個控制作用的
回復

使用道具 舉報

地板
ID:213280 發(fā)表于 2018-10-23 10:51 | 只看該作者
sxhwdz 發(fā)表于 2018-10-20 08:56
因為主函數(shù)只有一個任務就是初始化定時器,完成初始化以后,就把所有的任務派發(fā)給定時器中斷了,只需悠閑的 ...

了解,謝謝了
回復

使用道具 舉報

5#
ID:328668 發(fā)表于 2018-10-24 13:17 | 只看該作者
初始化
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表