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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2913|回復: 8
收起左側

求高手能在不影響程序使用的前期下把兩個程序合成一個程序

[復制鏈接]
ID:271839 發表于 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)

回復

使用道具 舉報

ID:271839 發表于 2018-1-9 22:54 | 顯示全部樓層
求各位大佬幫助 拜謝
回復

使用道具 舉報

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

使用道具 舉報

ID:231046 發表于 2018-1-10 08:55 | 顯示全部樓層
對的,程序就是按要求實現特定的功能 ,要怎么實現完全看寫程序人的思想,如去北京可以坐火車,也可以坐飛機,也可以走路,,一樣的道理
回復

使用道具 舉報

ID:271839 發表于 2018-1-10 10:40 | 顯示全部樓層
yzwzfyz 發表于 2018-1-10 00:42
不要說是兩個,十個八也不在話下。關鍵是你如何構思!
你不會構思,就先學畫流程框圖,一步步來,流程走通 ...

能不能先幫我合一下 暫時有點急
回復

使用道具 舉報

ID:258566 發表于 2018-1-10 10:53 | 顯示全部樓層
樓主,首先程序要正確,才能合并。變量t沒有定義,定時器1沒有啟動。tr1
回復

使用道具 舉報

ID:258566 發表于 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)



回復

使用道具 舉報

ID:271839 發表于 2018-1-10 11:26 | 顯示全部樓層
yzwzfyz 發表于 2018-1-10 00:42
不要說是兩個,十個八也不在話下。關鍵是你如何構思!
你不會構思,就先學畫流程框圖,一步步來,流程走通 ...

能不能幫我操作一下 我現在急著用
回復

使用道具 舉報

9#
無效樓層,該帖已經被刪除
ID:271839 發表于 2018-1-10 11:52 | 顯示全部樓層
cccc888 發表于 2018-1-10 10:53
樓主,首先程序要正確,才能合并。變量t沒有定義,定時器1沒有啟動。tr1

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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