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

標題: 求高手能在不影響程序使用的前期下把兩個程序合成一個程序 [打印本頁]

作者: 6946WOCAO    時間: 2018-1-9 22:53
標題: 求高手能在不影響程序使用的前期下把兩個程序合成一個程序
程序一:數碼管動態顯示
#include <reg52.h>

/*
*                數碼管動態顯示學號
*                          朱建康
*/
sbit led1 = P3^7;
sbit led2 = P3^6;
sbit led3 = P3^5;
sbit led4 = P3^4;

//數碼管0~9緩存
unsigned char code LedChar[]={
        0x82, 0xE7, 0x2A, 0x26, 0x47, 0x16, 0x12, 0xA7,
        0x02, 0x06};
//學號:150401114
unsigned char IDBuff[] = {
        0xFF, 0x7F, 0x7F, 0x7F, 0x43, 0x1a, 0xda, 0xda,
        0x82, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF,
        0xFF};
unsigned char LedBuff[9];
unsigned char flag_200ms = 0;
/*
*  主函數
*/
void main(void)
{
        unsigned char t = 0;
        TMOD = 0X01;
        TH0 = 0XFC;
        TL0 = 0X67;
        TR0 = 1;
        EA = 1;
        ET0 = 1;

        while(1)
        {
                if(flag_200ms == 1)
                {
                        flag_200ms = 0;
                        LedBuff[0] = IDBuff[t];
                        LedBuff[1] = IDBuff[t+1];
                        LedBuff[2] = IDBuff[t+2];
                        LedBuff[3] = IDBuff[t+3];

                        t++;
                        if(t>=18) t = 0;
                }
        }

}

void InterruptTime0() interrupt 1
{
        static unsigned char i = 0;
        static unsigned char cnt = 0;
        TH0 = 0xFC;
        TL0 = 0X67;       

        cnt++;

        if(cnt>200)
        {
                cnt = 0;
                   flag_200ms = 1;
        }

        P2 = 0xFF;        //消隱
        switch(i)
        {
                case 0: led1=0; led2=1; led3=1; led4=1; i++; P2=LedBuff[0]; break;
                case 1: led1=1; led2=0; led3=1; led4=1; i++; P2=LedBuff[1]; break;
                case 2: led1=1; led2=1; led3=0; led4=1; i++; P2=LedBuff[2]; break;
                case 3: led1=1; led2=1; led3=1; led4=0; i=0; P2=LedBuff[3]; break;
                default: break;
        }
}


程序二:蜂鳴器放歌
#include <STC15F2K60S2.h>

unsigned char Count;
sbit _Speak =P5^4;
unsigned char code SONG[] ={      //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00
};

void Time1_Init()
{
TMOD = 0x10;
IE   = 0x82;
TH1  = 0xD8;
TL1  = 0xEF;  //12MZ晶振,10ms
}

void Time0_Int() interrupt 3
{
TH1 = 0xD8;
TL1 = 0xEF;
Count++;   //長度加1
}

/*-------------------------------------------------
功能:1MS延時子程序
-------------------------------------------------*/
void Delay_xMs(unsigned int x)
{
    unsigned int i,j;
    for( i =0;i < x;i++ )
    {
        for( j =0;j<3;j++ );
    }
}

void Play_Song(unsigned char i)
{
unsigned char Temp1,Temp2;
unsigned int Addr;
Count = 0;      //中斷計數器清0
Addr = i * 217;
while(1)
{
  Temp1 = SONG[Addr++];
     if ( Temp1 == 0xFF )          //休止符
     {
      TR1 = 0;
      Delay_xMs(100);
     }
     else if ( Temp1 == 0x00 )   //歌曲結束符
     {
      return;
     }
     else
     {
      Temp2 = SONG[Addr++];
      TR1 = 1;
     while(1)
     {
       _Speak = ~_Speak;
       Delay_xMs(Temp1);
       if ( Temp2 == Count )
       {
        Count = 0;
        break;
       }
      }
     }
}
}
/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
Time1_Init();   //定時器0中斷初始化
while(1)
{
  Play_Song(0);  //播放
}
}


PS:我使用的是IAPF2K60S2(stc15F2K60S2)


作者: 6946WOCAO    時間: 2018-1-9 22:54
求各位大佬幫助 拜謝

作者: yzwzfyz    時間: 2018-1-10 00:42
不要說是兩個,十個八也不在話下。關鍵是你如何構思!
你不會構思,就先學畫流程框圖,一步步來,流程走通了,再依流程寫程序。
記住寫程序的關鍵不在寫語句上,而是在構思流程上。試作畫出框圖吧。
看別人的案例,重點是看通他人的流程圖,之后對照流程圖看程序,這樣才能理解,才能學到東西。

作者: david888    時間: 2018-1-10 08:55
對的,程序就是按要求實現特定的功能 ,要怎么實現完全看寫程序人的思想,如去北京可以坐火車,也可以坐飛機,也可以走路,,一樣的道理
作者: 6946WOCAO    時間: 2018-1-10 10:40
yzwzfyz 發表于 2018-1-10 00:42
不要說是兩個,十個八也不在話下。關鍵是你如何構思!
你不會構思,就先學畫流程框圖,一步步來,流程走通 ...

能不能先幫我合一下 暫時有點急
作者: cccc888    時間: 2018-1-10 10:53
樓主,首先程序要正確,才能合并。變量t沒有定義,定時器1沒有啟動。tr1

作者: cccc888    時間: 2018-1-10 10:57
本帖最后由 cccc888 于 2018-1-10 11:26 編輯

//#include <reg52.h>
#include <STC15F2K60S2.h>
/*
*                數碼管動態顯示學號
*                          朱建康
*/
sbit led1 = P3^7;
sbit led2 = P3^6;
sbit led3 = P3^5;
sbit led4 = P3^4;
unsigned char t;
//數碼管0~9緩存
unsigned char code LedChar[] = {
        0x82, 0xE7, 0x2A, 0x26, 0x47, 0x16, 0x12, 0xA7,
        0x02, 0x06
};
//學號:150401114
unsigned char code IDBuff[] = {
        0xFF, 0x7F, 0x7F, 0x7F, 0x43, 0x1a, 0xda, 0xda,
        0x82, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF,
        0xFF
};
unsigned char LedBuff[9];
unsigned char flag_200ms = 0;
/*
*  主函數
*/
//void main(void)
//{
//unsigned char t = 0;
//TMOD = 0X01;
//TH0 = 0XFC;
//TL0 = 0X67;
//TR0 = 1;
//EA = 1;
//ET0 = 1;

//while(1)
//{
//if(flag_200ms == 1)
//{
//flag_200ms = 0;
//LedBuff[0] = IDBuff[t];
//LedBuff[1] = IDBuff[t+1];
//LedBuff[2] = IDBuff[t+2];
//LedBuff[3] = IDBuff[t+3];

//t++;
//if(t>=18) t = 0;
//}
//}

//}

void InterruptTime0() interrupt 1
{
        static unsigned char i = 0;
        static unsigned char cnt = 0;
        TH0 = 0xFC;
        TL0 = 0X67;

        cnt++;

        if (cnt > 200)
        {
//flag_200ms = 0;
                LedBuff[0] = IDBuff[t];
                LedBuff[1] = IDBuff[t + 1];
                LedBuff[2] = IDBuff[t + 2];
                LedBuff[3] = IDBuff[t + 3];

                t++;
                if (t >= 18)
                        t = 0;
        }

        P2 = 0xFF;        //消隱
        switch (i)
        {
                case 0:
                        led1 = 0;
                        led2 = 1;
                        led3 = 1;
                        led4 = 1;
                        i++;
                        P2 = LedBuff[0];
                        break;
                case 1:
                        led1 = 1;
                        led2 = 0;
                        led3 = 1;
                        led4 = 1;
                        i++;
                        P2 = LedBuff[1];
                        break;
                case 2:
                        led1 = 1;
                        led2 = 1;
                        led3 = 0;
                        led4 = 1;
                        i++;
                        P2 = LedBuff[2];
                        break;
                case 3:
                        led1 = 1;
                        led2 = 1;
                        led3 = 1;
                        led4 = 0;
                        i = 0;
                        P2 = LedBuff[3];
                        break;
                default:
                        break;
        }
}

//程序二:蜂鳴器放歌
//#include <STC15F2K60S2.h>

unsigned char Count;
sbit _Speak = P5 ^ 4;
unsigned char code SONG[] = {        //祝你平安
        0x26, 0x20, 0x20, 0x20, 0x20, 0x20, 0x26, 0x10, 0x20, 0x10, 0x20, 0x80, 0x26, 0x20, 0x30, 0x20,
        0x30, 0x20, 0x39, 0x10, 0x30, 0x10, 0x30, 0x80, 0x26, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x20,
        0x20, 0x80, 0x2b, 0x20, 0x26, 0x20, 0x20, 0x20, 0x2b, 0x10, 0x26, 0x10, 0x2b, 0x80, 0x26, 0x20,
        0x30, 0x20, 0x30, 0x20, 0x39, 0x10, 0x26, 0x10, 0x26, 0x60, 0x40, 0x10, 0x39, 0x10, 0x26, 0x20,
        0x30, 0x20, 0x30, 0x20, 0x39, 0x10, 0x26, 0x10, 0x26, 0x80, 0x26, 0x20, 0x2b, 0x10, 0x2b, 0x10,
        0x2b, 0x20, 0x30, 0x10, 0x39, 0x10, 0x26, 0x10, 0x2b, 0x10, 0x2b, 0x20, 0x2b, 0x40, 0x40, 0x20,
        0x20, 0x10, 0x20, 0x10, 0x2b, 0x10, 0x26, 0x30, 0x30, 0x80, 0x18, 0x20, 0x18, 0x20, 0x26, 0x20,
        0x20, 0x20, 0x20, 0x40, 0x26, 0x20, 0x2b, 0x20, 0x30, 0x20, 0x30, 0x20, 0x1c, 0x20, 0x20, 0x20,
        0x20, 0x80, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x30, 0x20, 0x30, 0x60, 0x39, 0x10, 0x30, 0x10,
        0x20, 0x20, 0x2b, 0x10, 0x26, 0x10, 0x2b, 0x10, 0x26, 0x10, 0x26, 0x10, 0x2b, 0x10, 0x2b, 0x80,
        0x18, 0x20, 0x18, 0x20, 0x26, 0x20, 0x20, 0x20, 0x20, 0x60, 0x26, 0x10, 0x2b, 0x20, 0x30, 0x20,
        0x30, 0x20, 0x1c, 0x20, 0x20, 0x20, 0x20, 0x80, 0x26, 0x20, 0x30, 0x10, 0x30, 0x10, 0x30, 0x20,
        0x39, 0x20, 0x26, 0x10, 0x2b, 0x10, 0x2b, 0x20, 0x2b, 0x40, 0x40, 0x10, 0x40, 0x10, 0x20, 0x10,
        0x20, 0x10, 0x2b, 0x10, 0x26, 0x30, 0x30, 0x80, 0x00
};

//void Time1_Init()
//{
        //TMOD = 0x10;
        //IE = 0x82;
        //TH1 = 0xD8;
        //TL1 = 0xEF;        //12MZ晶振,10ms
//}

void Time0_Int() interrupt 3
{
        TH1 = 0xD8;
        TL1 = 0xEF;
        Count++;        //長度加1
}

/*-------------------------------------------------
   功能:1MS延時子程序
   ------------------------------------------------- */
void Delay_xMs(unsigned int x)
{
        unsigned int i, j;
        for (i = 0; i < x; i++)
        {
                for (j = 0; j < 3; j++) ;
        }
}

void Play_Song(unsigned char i)
{
        unsigned char Temp1, Temp2;
        unsigned int Addr;
        Count = 0;        //中斷計數器清0
        Addr = i * 217;
        while (1)
        {
                Temp1 = SONG[Addr++];
                if (Temp1 == 0xFF)        //休止符
                {
                        TR1 = 0;
                        Delay_xMs(100);
                }
                else if (Temp1 == 0x00)        //歌曲結束符
                {
                        return;
                }
                else
                {
                        Temp2 = SONG[Addr++];
                        TR1 = 1;
                        while (1)
                        {
                                _Speak = ~_Speak;
                                Delay_xMs(Temp1);
                                if (Temp2 == Count)
                                {
                                        Count = 0;
                                        break;
                                }
                        }
                }
        }
}
/*-------------------------------------------------
   功能:主程序
   ------------------------------------------------- */
void main()
{
        //unsigned char t = 0;
        TMOD = 0X11;
        TH0 = 0XFC;
        TL0 = 0X67;
        TR0 = 1;
        EA = 1;
        ET0 = 1;        ET1 = 1;
        //IE = 0x82;//8a
        TH1 = 0xD8;
        TL1 = 0xEF;        //12MZ晶振,10ms
        TR1 = 1;
//Time1_Init();   //定時器0中斷初始化
        while (1)
        {
                Play_Song(0);        //播放
        }
}

//PS:我使用的是IAPF2K60S2(stc15F2K60S2)




作者: 6946WOCAO    時間: 2018-1-10 11:26
yzwzfyz 發表于 2018-1-10 00:42
不要說是兩個,十個八也不在話下。關鍵是你如何構思!
你不會構思,就先學畫流程框圖,一步步來,流程走通 ...

能不能幫我操作一下 我現在急著用
作者: 6946WOCAO    時間: 2018-1-10 11:52
cccc888 發表于 2018-1-10 10:53
樓主,首先程序要正確,才能合并。變量t沒有定義,定時器1沒有啟動。tr1

我剛開始學這個 是小白  能不能幫我弄一下 謝謝




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