找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1382|回復: 2
打印 上一主題 下一主題
收起左側(cè)

求大神幫我看下這段程序的含義(大概一個流程就好謝謝)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:308857 發(fā)表于 2018-5-22 12:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void produce()/*掃頻產(chǎn)生程序*/
{
                n3=sett1*100000+sett2*10000+sett3*1000+sett4*100+sett5*10+sett6;
                        if(flag1==1&flag2==1)/*使用定時器0*/
                        {                                                                                               
                                a1=0;b1=0;c1=0;
                                n2=low;
                                while(n2<high)
                                {
                                        n1=50000/n2;
                                        c=n1;
                                        chuzhi();
                                        COM0=h;
                                        COM0=e;
                                        ET0=1;
                                        TR0=1;
                                        display1(n2);
                                        while(n<50)
                                        {
                                                keyscan();
                                        }
                                        n=0;
                                        ET0=0;
                                        TR0=0;
                                        n2=n2+n3;
                                        if(star==0)
                                        break;
                                }
                                                       
                                n2=high;
                                while(n2>low)
                                {
                                        n1=50000/n2;       
                                        c=n1;
                                        chuzhi();
                                        COM0=h;
                                        COM0=e;
                                        ET0=1;
                                        TR0=1;
                                        display1(n2);
                                        while(n<50)
                                        {
                                                keyscan();
                                        }
                                        n=0;
                                        ET0=0;
                                        TR0=0;
                                        n2=n2-n3;
                                        if(star==0)
                                        break;
                                }
                               
                       
                        }

                  
                        if(flag1==2&flag2==2)/*使用定時器1*/
                        {                                                                                               
                                a1=1;b1=0;c1=0;
                                n2=low;                                                                                  
                                while(n2<high)
                                {
                                        n1=1000000/n2;
                                        c=n1;
                                        chuzhi();
                                        COM1=h;
                                        COM1=e;
                                        ET0=1;
                                        TR0=1;
                                        display1(n2);
                                        while(n<50)
                                        {
                                                keyscan();
                                        }
                                        n=0;
                                        ET0=0;
                                        TR0=0;
                                        n2=n2+n3;
                                        if(star==0)
                                        break;
                                }
               
                               
                                n2=high;
                                while(n2>low)
                                {
                                        n1=1000000/n2;
                                        c=n1;
                                        chuzhi();
                                        COM1=h;
                                        COM1=e;
                                        ET0=1;
                                        TR0=1;
                                        display1(n2);
                                        while(n<50)
                                        {
                                                keyscan();
                                        }
                                        n=0;
                                        ET0=0;
                                        TR0=0;
                                        n2=n2-n3;
                                        if(star==0)
                                        break;
                                }
                                               
                        }
                       
       
                                if(flag1==1&flag2==2)/*先使用定時器0,再使用定時器1*/
                                {                                                                                               
                                        a1=0;b1=0;c1=0;
                                        n2=low;                                                                                  
                                        while(n2<5000)
                                        {
                                                n1=50000/n2;
                                                c=n1;
                                                chuzhi();
                                                COM0=h;
                                                COM0=e;
                                                ET0=1;
                                                TR0=1;
                                                display1(n2);
                                                while(n<50)
                                                {
                                                        keyscan();
                                                }
                                                n=0;
                                                ET0=0;
                                                TR0=0;
                                                n2=n2+n3;       
                                                if(star==0)
                                                break;
                                        }
                                                       
                                                       
                                        a1=1;b1=0;c1=0;
                                        while(n2<high)
                                        {
                                                n1=1000000/n2;
                                                c=n1;
                                                chuzhi();
                                                COM1=h;
                                                COM1=e;
                                                ET0=1;
                                                TR0=1;
                                                display1(n2);
                                                while(n<50)
                                                {
                                                        keyscan();
                                                }
                                                n=0;
                                                ET0=0;
                                                TR0=0;
                                                n2=n2+n3;
                                                if(star==0)
                                                break;
                                        }                       
                       
                       
                                        n2=high;
                                        while(n2>low)
                                        {
                                                n1=1000000/n2;
                                                c=n1;
                                                chuzhi();
                                                COM1=h;
                                                COM1=e;
                                                ET0=1;
                                                TR0=1;
                                                display1(n2);
                                                while(n<50)
                                                {keyscan();}
                                                n=0;
                                                ET0=0;
                                                TR0=0;
                                                n2=n2-n3;
                                                if(star==0)
                                                break;
                                        }
                                                       
                                        a1=0;b1=0;c1=0;
                                        while(n2>low)
                                        {
                                                n1=50000/n2;
                                                c=n1;
                                                chuzhi();
                                                COM0=h;
                                                COM0=e;
                                                ET0=1;
                                                TR0=1;
                                                display1(n2);
                                                while(n<50)
                                                {keyscan();}
                               
                                                n=0;
                                                ET0=0;
                                                TR0=0;
                                                n2=n2-n3;
                                                if(star==0)
                                                break;
                                        }
                                }               
}

void main()
{

        COM8253=0x36;/*8253初始化,選擇定時器0,工作方式3,二進制*/
        COM8253=0x76;/*選擇定時器1,工作方式3,二進制*/
        init();/*1602初始化*/
        display();/*頻率顯示界面*/
        TMOD=0x01;/*定時器0工作方式1*/
        TH0=(65536-50000)/256;/*定時器0初值裝入*/
        TL0=(65536-50000)%256;
        EA=1;/*開總中斷*/
        ET0=0;/*允許定時器0中斷*/
        TR0=0;/*允許定時器計數(shù)*/

        a1=0;b1=0;c1=0;
        while(1)
        {
                keyscan();
                setlow(set1,set2,set3,set4,set5,set6,set11,set22,set33,set44,set55,set66);
                if(star==1)
                {       
                produce();
                   }
        }
}


void T0_time() interrupt 1/*使定時器中斷0*/
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        n++;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:335709 發(fā)表于 2018-5-22 15:14 | 只看該作者
程序分3段。
第2段 main(),是上電執(zhí)行的內(nèi)容:先初始化MCU和外設(shè)的工作狀態(tài),然后進入主循環(huán)。
第1段,被主循環(huán)調(diào)用,產(chǎn)生掃頻信號。
第3段,定時器中斷處理,重裝以保證定時器,計數(shù)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:341687 發(fā)表于 2018-5-30 20:15 | 只看該作者
這一段程序分為三部分
首先:先初始化MCU和外設(shè)的工作狀態(tài),然后進入主循環(huán)。
接下來:被主循環(huán)調(diào)用,產(chǎn)生掃頻信號。
最后:定時器中斷處理,重裝以保證定時器,計數(shù)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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