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

標(biāo)題: 有人能幫我把這個(gè)單片機(jī)程序整合成只有1個(gè)頭文件的程序嗎? [打印本頁]

作者: 空大丿魔王    時(shí)間: 2018-12-22 15:43
標(biāo)題: 有人能幫我把這個(gè)單片機(jī)程序整合成只有1個(gè)頭文件的程序嗎?
網(wǎng)上尋找的程序由于是多個(gè),h文件,嘗試多次整合失敗,希望有大神幫忙整合一下。萬分感謝

Keil4C語言實(shí)物程序.zip

51.84 KB, 下載次數(shù): 13


作者: 空大丿魔王    時(shí)間: 2018-12-22 15:49
有人嗎?
作者: cjm82    時(shí)間: 2018-12-23 09:44
一個(gè)程序分開多個(gè).C .H是個(gè)好習(xí)慣,這樣各個(gè)功能塊之間條理更為清晰,需要改動(dòng)的時(shí)候也更容易,為什么要全丟在一個(gè)文件里呢?
作者: wulin    時(shí)間: 2018-12-23 10:56
#include <reg52.h>
#define uint8 unsigned char
#define unused8 0xFF
#define ON       0
#define OFF      1
#define EWTime_Count  30  //東西紅燈60s
#define NSTime_Count  60  //南北紅燈57s
#define YELTime_Count 5   //黃燈 5s
/*---------------------------------IO對應(yīng)關(guān)系定義---------------------*/
#define EW_RED_ON()   do { EW_RED=ON;EW_GRE=OFF;EW_YEL=OFF; } while (0)
#define EW_YEL_ON()   do { EW_RED=OFF;EW_GRE=OFF;EW_YEL=ON; } while (0)
#define EW_GRE_ON()   do { EW_RED=OFF;EW_GRE=ON;EW_YEL=OFF; } while (0)

#define NS_RED_ON()   do { NS_RED=ON;NS_GRE=OFF;NS_YEL=OFF; } while (0)
#define NS_YEL_ON()   do { NS_RED=OFF;NS_GRE=OFF;NS_YEL=ON; } while (0)
#define NS_GRE_ON()   do { NS_RED=OFF;NS_GRE=ON;NS_YEL=OFF; } while (0)

sbit LED_D1 = P3^1;
sbit LED_C1 = P3^0;  
sbit LED_B1 = P3^1;  
sbit LED_A1 = P3^0;
sbit Key = P3^2;
sbit NS_GRE = P2^5;      
sbit NS_YEL = P2^4;
sbit NS_RED = P2^3;   
sbit EW_GRE = P2^2;  
sbit EW_YEL = P2^1;  
sbit EW_RED = P2^0;   
//uint8 table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//                  bc   abged abcdg bcfg afgcd acdefg
uint8 table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint8  EW_Timer = unused8;  //東西方向紅燈定時(shí)器
uint8  NS_Timer = unused8;  //南北方向紅燈定時(shí)器
uint8  YEL_Timer = unused8; //黃燈 5s定時(shí)器
uint8  Flag_Key = 0; //按鍵是否按下標(biāo)識(shí)
uint8  EW_Timer;  //東西方向紅燈定時(shí)器
uint8  NS_Timer;  //南北方向紅燈定時(shí)器
uint8  YEL_Timer; //黃燈 5s定時(shí)器
uint8  Timer = 20;  //定時(shí)器  1s
void Delay10uS(uint8 z);
void display1(uint8 num1,uint8 num2);   
void display2(uint8 num3,uint8 num4);
void INT0_Init(void);
void Timer_Init(void);
uint8  Flag_Key; //按鍵是否按下標(biāo)識(shí)

int main(void)
{
        Timer_Init();    //定時(shí)器初始化
        INT0_Init();     //外部中斷初始化   
        EA=1;            //打開全局中斷
       
        NS_GRE = OFF;    //所有的燈都滅   
        NS_YEL = OFF;
        NS_RED = OFF;   
        EW_GRE = OFF;  
        EW_YEL = OFF;  
        EW_RED = OFF;   
        P3 = 0xFF;      //所有顯示滅
       
        //先讓東西方向紅燈亮 南北方向通行
        EW_Timer = EWTime_Count;//東西方向開始計(jì)時(shí)
       
        while(1)
        {       
                if((EW_Timer != unused8) && (EW_Timer != 0)){ //東西方向做紅燈倒計(jì)時(shí)
                display1(EW_Timer/10, EW_Timer%10);      //東西方向顯示時(shí)間 南北方向不顯示
                EW_RED_ON();                             //東西方向保持紅燈
                NS_GRE_ON();                             //南北方向保持綠燈
                }
                else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8)){//東西方向紅燈計(jì)時(shí)到 東西方向保持紅燈 南北方向變黃燈 開始黃燈5s計(jì)時(shí)
                EW_RED_ON();                             //東西方向紅燈
                NS_YEL_ON();                             //南北方向黃燈
                YEL_Timer = YELTime_Count;               //5s計(jì)時(shí)
                }
                if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){
                display1(YEL_Timer/10, YEL_Timer%10);    //東西方向顯示時(shí)間 南北方向不顯示
                }
                if((EW_Timer != unused8) && (YEL_Timer == 0)){    //東西方向紅-南北方向黃燈5s計(jì)時(shí)到 東西紅燈定時(shí)器關(guān) 黃燈定時(shí)器關(guān) 南北紅燈 東西綠燈 南北計(jì)時(shí)器開
                EW_Timer = unused8;                      //東西紅燈定時(shí)器關(guān)
                YEL_Timer = unused8;                     //黃燈定時(shí)器關(guān)
                NS_RED_ON();                             //南北變紅燈
                EW_GRE_ON();                             //東西變綠燈
                NS_Timer = NSTime_Count;                 //南北紅燈定時(shí)器開
                }
               
               
               
                if((NS_Timer != unused8) && (NS_Timer != 0)){ //南北紅燈定時(shí)器正在計(jì)時(shí)
                display2(NS_Timer/10, NS_Timer%10);      //南北方向顯示時(shí)間 東西方向不顯示
                EW_GRE_ON();                             //東西保持綠燈
                NS_RED_ON();                             //南北保持紅燈
                }
                else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8)){ //南北方向紅燈計(jì)時(shí)到 南北方向保持紅燈 東西方向變黃燈 開始黃燈5s計(jì)時(shí)
                NS_RED_ON();                             //南北方向保持紅燈
                EW_YEL_ON();                             //東西方向變黃燈
                YEL_Timer = YELTime_Count;               //5s計(jì)時(shí)
                }
                if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){   
                display2(YEL_Timer/10, YEL_Timer%10);   //南北方向顯示時(shí)間 東西方向不顯示
                }
                if((NS_Timer != unused8) && (YEL_Timer == 0)){  //南北方向紅-東西方向黃燈5s計(jì)時(shí)到 南北方向定時(shí)器關(guān) 黃燈定時(shí)器關(guān) 東西方向變紅燈 南北方向變綠燈 東西方向紅燈計(jì)時(shí)器開始計(jì)時(shí)
                NS_Timer = unused8;
                YEL_Timer = unused8;
                EW_RED_ON();                           //東西方向變紅燈
                NS_GRE_ON();                           //南北方向變綠燈
                EW_Timer = EWTime_Count;               //東西方向開始計(jì)時(shí)
                }
               
               
                if(Flag_Key == 1){        //如果急停按鍵按下 則全紅燈 顯示滅
                P3 = 0xFF;           //所有顯示滅
                EW_RED_ON();         //東西方向紅燈
                NS_RED_ON();         //南北方向紅燈
               
                EW_Timer = unused8;  //關(guān)閉所有定時(shí)器
                NS_Timer = unused8;
                YEL_Timer = unused8;
                }
        }
}
/**********************************
                延時(shí)程序
**********************************/
void Delay10uS(uint8 z)
{
    uint8 i,a,b;
    for(i=0;i<z;i++){
    for(b=1;b>0;b--)
            for(a=2;a>0;a--);
    }
}
/***************************************************
*               定時(shí)器初始化
* 12M晶體 1us 計(jì)數(shù)一次
****************************************************/
void Timer_Init(void)
{
    TMOD=0x01;             //定時(shí)器工作方式
    TH0=(65536-50000)/256; //定時(shí)器初值     50ms中斷一次
    TL0=(65536-50000)%256;
    ET0=1;                 //使能定時(shí)器中斷
    TR0=1;                 //啟動(dòng)定時(shí)器0
}
/***************************************************
*               定時(shí)器中斷函數(shù)
*裝入初值  
*計(jì)時(shí)變量遞減
****************************************************/
void timer1(void) interrupt 1
{               
    TH0=(65536-50000)/256;  //重新裝入初值
    TL0=(65536-50000)%256;

    if(Timer > 0){
        Timer--;

        if(Timer == 0){    //1s 定時(shí)時(shí)間到
            Timer = 20;

            //添加其他定時(shí)器
            if((EW_Timer != unused8) && (EW_Timer > 0)){  //東西紅燈定時(shí)器
                EW_Timer--;
            }
            if((NS_Timer != unused8) && (NS_Timer >0)){   //南北紅燈定時(shí)器
                NS_Timer--;
            }
            if((YEL_Timer != unused8) && (YEL_Timer >0)){ //黃燈計(jì)時(shí)
                YEL_Timer--;
            }
        }
    }
}     
/***************************************************
*               EW顯示函數(shù)
*num1 要顯示數(shù)值的十位  num2 要顯示數(shù)值的各位
***************************************************/
void display1(uint8 num1,uint8 num2)
{
        P3=0XFF;       
        P0=0XFF;   
        P0=table[num1];      
        LED_A1=ON;   
        Delay10uS(5);     
        LED_A1=OFF;
        P0=0XFF;   
        P0=table[num2];   
        LED_B1=ON;   
        Delay10uS(5);   
        LED_B1=OFF;
        P0=0XFF;  
}
/***************************************************
*               NS顯示函數(shù)
*num1 要顯示數(shù)值的十位  num2 要顯示數(shù)值的各位
***************************************************/
void display2(uint8 num3,uint8 num4)
{            
        P0=0XFF;
        P3=0XFF;
        P0=table[num3];   
        LED_C1=ON;   
        Delay10uS(1);   
        LED_C1=OFF;
        P0=0XFF;     
        P0=table[num4];     
        LED_D1=ON;      
        Delay10uS(1);   
        LED_D1=OFF;
        P0=0XFF;     
}
/****************************************
*外部中斷初始化
*INT0 下降沿觸發(fā)
*****************************************/
void INT0_Init(void)
{
        EX0 = 1; //INT0 使能
        IT0 = 1; //下降沿觸發(fā)
}
void Key_Stop(void) interrupt 0
{
        Delay10uS(200);
        if(Key == 0)   //確認(rèn)按鍵按下
        {
                Flag_Key = 1;
        }
}


作者: 小貓貓愛吃魚    時(shí)間: 2018-12-23 10:56

Keil4C語言實(shí)物程序.rar (19.52 KB, 下載次數(shù): 2)





作者: yangcong1314    時(shí)間: 2018-12-23 13:01
應(yīng)該還好吧,C51一般放一個(gè)文件夾里面吧
作者: shuisheng60    時(shí)間: 2019-1-28 05:35
perfect123 發(fā)表于 2018-12-26 19:55
合并并不難,主要是要處理所有文件里頭的全局變量名稱。5樓已經(jīng)幫你搞定了,你為什么不感謝人家

是啊!樓主為什么不給人家魚吃啊?哈哈哈!
作者: 周超然    時(shí)間: 2019-1-28 11:07
項(xiàng)目都是模塊各個(gè)文件,51那個(gè)一個(gè)文件,后面代碼多了,不方便查看。




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