久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3414|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)怎么把兩個(gè)C程序整合到一起運(yùn)行?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:957836 發(fā)表于 2021-10-24 18:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序一
//功能 :七彩呼吸

#include <STC8G.h>  
//端口定義
sbit GREEN    =    P3^1;//紅光控制端,0點(diǎn)亮
sbit RED  =    P3^2;//綠光控制端,0點(diǎn)亮
sbit BLUE   =    P3^3;//藍(lán)光控制端,0點(diǎn)亮

void port_mode()
{
        P3M1=0X00;P3M0=0X00;P5M1=0X00;P5M0=0X00;
}

void Delay(unsigned int t);  
void RGB(unsigned char R ,unsigned char G ,unsigned char B);

void main (void)
{   
    RED = 0 ; GREEN = 0 ; BLUE = 0 ;

                        port_mode();
                        P3=0X01;
    while (1)      
    {
        RGB(1,0,0);
        RGB(0,1,0);
        RGB(0,0,1);
        RGB(0,1,1);
        RGB(1,1,0);
        RGB(1,0,1);
        RGB(1,1,1);
                          RGB(0,0,0);
    }
}

void Delay(unsigned int t)
{
while(--t);
}
//7色光依次逐漸變亮
void RGB(unsigned char R ,unsigned char G ,unsigned char B)
{
    unsigned int pwm , set = 2000 ;        
    for(pwm=1;pwm<set;pwm++)//漸亮
    {
             RED    = 0;        //熄滅LED
             GREEN  = 0;
             BLUE   = 0;
             Delay(set-pwm);//延時(shí)長
             RED    = R;        
             GREEN  = G;
             BLUE   = B;        
             Delay(pwm);//延時(shí)長
    }
                for(pwm=set-1;pwm>0;pwm--)//漸暗
    {
             RED    = 0;        //熄滅LED
             GREEN  = 0;
             BLUE   = 0;
             Delay(set-pwm);//延時(shí)長
             RED    = R;        
             GREEN  = G;
             BLUE   = B;        
             Delay(pwm);//延時(shí)長
    }
}

======================================================================
程序二
//功能:七彩單色顯示
#include <stc8.h>
sbit      K=P5^5;         


void  delay (unsigned int i)
        {
                 unsigned int k,m;
                        for(m=0;m<1000;m++);
                                for(k=0;k<i;k++);
        }     


void port_mode()
        {
                P3M1=0X00;P3M0=0X00;P5M1=0X00;P5M0=0X00;
        }
        
void main()
        {   
                unsigned char i=0;        
                                       
                                        port_mode();
                                        P5=0XE0;
                                        P3=0X00;
                                        while(1)
                 {
                                        if(K==0)   
                                        {
                                                                delay(1200);     
                                                                if(K==0)         
                                                                {   
                                                                 if(++i==9)i=1;                                                                                          
                                                                }  
                                        }
                                         switch(i)            
                                        {
                                                         case  1:P3=0x02;break;
                                                         case  2:P3=0x04;break;
                                                         case  3:P3=0x08;break;
                                                         case  4:P3=0x06;break;
                                                         case  5:P3=0x0a;break;
                                                         case  6:P3=0x0c;break;
                                                         case  7:P3=0x0e;break;
                                                        default:P3=0X00;break;
                                        }
                                                        while(!K);  
                                                        delay(1200);
                        }   
        }

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

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2021-10-24 19:00 | 只看該作者
把main 的內(nèi)容 合并到一起,確保只有一個(gè) main, 注意main里面 while(1) 也是只有一個(gè),所以while(1) 里面貼一起,外面的貼一起,   其他的子函數(shù)隨便貼在一個(gè)文件里,就可以了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:957836 發(fā)表于 2021-10-24 20:44 | 只看該作者
感謝您的回復(fù),合并后當(dāng)按鍵按第二次后就一直執(zhí)行case 2: y=8; break;再按下按鍵卻不能執(zhí)行后面的程序了,能否幫忙檢查一下錯(cuò)誤呢?

#include <stc8.h>

sbit      K=P5^5;
sbit GREEN    =    P3^1;//紅光控制端,0點(diǎn)亮
sbit RED  =    P3^2;//綠光控制端,0點(diǎn)亮
sbit BLUE   =    P3^3;//藍(lán)光控制端,0點(diǎn)亮
unsigned char y=0;

//void Delays(unsigned int t);  
void RGB(unsigned char R ,unsigned char G ,unsigned char B);


void  delay (unsigned int i)
        {
                 unsigned int k,m;
                        for(m=0;m<9000;m++);
                                for(k=0;k<i;k++);
        }     

void fuxi()
{
                if(y==0)
                {
                        P3=0x00;
                }
                if(y==1)
                {
                        P3=0x02;
                }
                if(y==2)
                {
                        P3=0x04;
                }
                if(y==3)
                {
                        P3=0x08;
                }
                if(y==4)
                {
                        P3=0x06;
                }
                if(y==5)
                {
                        P3=0x0a;
                }
                if(y==6)
                {
                        P3=0x0c;
                }
                if(y==7)
                {
                        P3=0x0e;
                }
                if(y==8)
       
                {
                          
                        RGB(1,0,0);
                        RGB(0,1,0);
                        RGB(0,0,1);
                        RGB(0,1,1);
                        RGB(1,1,0);
                        RGB(1,0,1);
                        RGB(1,1,1);
                        RGB(0,0,0);
          }
               
}
       
void key()
{
  unsigned char x;
  if(K==0)
  {
    delay(50);
    if(K==0)
    {
      while(!K);
      x++;
      if(x==9)
      x=1;
      if(y==9)
      x=1;
      switch(x)
      {
        case 1: y=1; break;
        case 2: y=8; break;
        case 3: y=3; break;
                                case 4: y=4; break;
        case 5: y=5; break;
        case 6: y=6; break;
                                case 7: y=7; break;
        case 8: y=2; break;
        
        default: break;  
      }
    }
  }
}
       
       
void port_mode()
        {
                P3M1=0X00;P3M0=0X00;P5M1=0X00;P5M0=0X00;
        }
       
void main()
        {   
                unsigned char i=0;
                RED = 0 ; GREEN = 0 ; BLUE = 0 ;               
                                       
                                        port_mode();
                                        P5=0XE0;
                                        P3=0X00;
                     
                                        while(1)
                 {
                          key();
                          fuxi();

                                                 
                        }   
        }
       
        void Delays(unsigned int t)
{
while(--t);
}

void RGB(unsigned char R ,unsigned char G ,unsigned char B)
{
    unsigned int pwm , set = 2000 ;        
    for(pwm=1;pwm<set;pwm++)//漸亮
    {
             RED    = 0;        //熄滅LED
             GREEN  = 0;
             BLUE   = 0;
             Delays(set-pwm);//延時(shí)長度
             RED    = R;        
             GREEN  = G;
             BLUE   = B;        
             Delays(pwm);//延時(shí)長度
    }
                for(pwm=set-1;pwm>0;pwm--)//漸暗
    {
             RED    = 0;        //熄滅LED
             GREEN  = 0;
             BLUE   = 0;
             Delays(set-pwm);//延時(shí)長度
             RED    = R;        
             GREEN  = G;
             BLUE   = B;        
             Delays(pwm);//延時(shí)長度
    }
}
回復(fù)

使用道具 舉報(bào)

地板
ID:624769 發(fā)表于 2021-10-24 21:00 | 只看該作者
unsigned char x;  放到全局變量
回復(fù)

使用道具 舉報(bào)

5#
ID:957836 發(fā)表于 2021-10-24 21:06 | 只看該作者
188610329 發(fā)表于 2021-10-24 21:00
unsigned char x;  放到全局變量

放到全局變量后還是和原來一樣。
回復(fù)

使用道具 舉報(bào)

6#
ID:973695 發(fā)表于 2021-10-24 22:45 | 只看該作者
執(zhí)行case 2: y=8; break;再按下按鍵卻不能執(zhí)行后面的程序了

是因?yàn)?void RGB() 函數(shù)里頭用了大量的 delay()空操作。單片機(jī)接收不了 按鍵操作。

解決的辦法可以用外部中斷來接收按鍵操作。

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

7#
ID:57657 發(fā)表于 2021-10-24 23:37 | 只看該作者
看了下你的程序太亂,需要重寫一份,其余全部用定時(shí)器中斷實(shí)現(xiàn),軟件延時(shí)盡量不要用。
回復(fù)

使用道具 舉報(bào)

8#
ID:957836 發(fā)表于 2021-10-25 07:31 來自手機(jī) | 只看該作者
stycx 發(fā)表于 2021-10-24 22:45
執(zhí)行case 2: y=8; break;再按下按鍵卻不能執(zhí)行后面的程序了

是因?yàn)?void RGB() 函數(shù)里頭用了大量的 de ...

感謝您的寶貴建議。
回復(fù)

使用道具 舉報(bào)

9#
ID:957836 發(fā)表于 2021-10-25 07:32 來自手機(jī) | 只看該作者
npn 發(fā)表于 2021-10-24 23:37
看了下你的程序太亂,需要重寫一份,其余全部用定時(shí)器中斷實(shí)現(xiàn),軟件延時(shí)盡量不要用。

好的,您的建議非常好。
回復(fù)

使用道具 舉報(bào)

10#
ID:420836 發(fā)表于 2021-10-25 07:56 | 只看該作者
確保新程序只有一個(gè) main 函數(shù),并且定義了所有其他函數(shù)和變量。
回復(fù)

使用道具 舉報(bào)

11#
ID:517951 發(fā)表于 2021-10-25 20:15 | 只看該作者
把第二個(gè)文件的功能函數(shù)復(fù)制到第一個(gè)文件中去,然后main主函數(shù)在自己想要執(zhí)行的地方調(diào)用新加進(jìn)來的函數(shù)。
回復(fù)

使用道具 舉報(bào)

12#
ID:339654 發(fā)表于 2021-10-26 22:45 | 只看該作者
使用時(shí)間片的方式運(yùn)行代碼,可以執(zhí)行多個(gè)任務(wù)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99爱在线视频 | 一区二区三区免费 | 懂色tv| 精品久久久久一区二区国产 | 天天干天天色 | 国产高清精品一区二区三区 | 国产真实乱全部视频 | 亚洲一一在线 | 日日射影院 | 国产永久免费 | 黄色大片在线 | 精品美女视频在线观看免费软件 | 国精日本亚洲欧州国产中文久久 | 色综合久久88色综合天天 | 精品国产区 | 九九热视频这里只有精品 | 日日噜噜噜夜夜爽爽狠狠视频, | 日韩在线 | 色毛片| 91久久精品国产 | 中日韩欧美一级片 | 亚洲成色777777在线观看影院 | 欧美日韩看片 | 亚洲一区二区三区在线视频 | 久久精品视频播放 | 天堂免费 | 婷婷激情在线 | 亚洲综合色网站 | 欧美中文字幕在线 | 91在线看视频 | 欧美在线视频一区二区 | 波多野吉衣久久 | 日日干干夜夜 | 成人黄色av网站 | 国产一区成人 | 欧美日本一区 | 999热在线视频 | 国产一区久久 | 成人免费观看视频 | 国产在线精品一区 | 亚洲国产成人精品久久久国产成人一区 |