找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)計(jì)數(shù) 發(fā)送程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:301352 發(fā)表于 2018-5-8 14:02 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#define INT8U unsigned char       
#define INT16U unsigned int
/
INT16U Count;

int js=0;
sbit Clear_Key=P3^2;
sbit p1=P2^0;
sbit p2=P2^1;
sbit p3=P2^2;
sbit p4=P2^3;
sbit p5=P2^4;
//sbit Clear_Key=P3^6;                   修改以前的程序
void delay_ms(INT16U x)
{
  INT8U t;
  while(x--) for(t=0;t<120;t++);
} //以上延時(shí)函數(shù)
///////以下功能:串口初始化,波特率9600,方式1/////////
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}

#define DELAY_SEND                     (unsigned long)60000  //10秒   10*60*1000ms          定義        delay_send 為10秒
//#define DELAY_SEND                     (unsigned long)600000  //10分鐘 10*60*1000ms
#define DELAY_SEND1                     (unsigned long)10000  //10分鐘 10*60*1000ms
unsigned long delay_send=0;

char keyscan()
{

  if(Clear_Key==0)
        {
   while(Clear_Key==0);//等待按鍵彈起
    delay_send = 0;
    return 1;
  }
        else
        {
    return 0;
  }

}


void main()
{
     EA=1;
         EX0=1;
         IT0=1;
   Init_Com();//串口初始化
            
  while(1)
  {          
               delay_ms(5);
               delay_send++;

                                          
        if((delay_send > DELAY_SEND)&&(Count > 0))

      {
              //delay_ms(5);
               if(Count >= 100)
                 {
                       SBUF = (Count/100)+0x30; //求百位
                            delay_ms(8);
                    //SBUF = (Count%10)+0x30; //把數(shù)據(jù)發(fā)送出去
                   SBUF = (Count%10/10)+0x30; //把數(shù)據(jù)發(fā)送出去
                         delay_ms(8);
                   //SBUF = (Count/100)+0x30; //把數(shù)據(jù)發(fā)送出去
                      SBUF = (Count%10)+0x30;
                //delay_ms(1);
                                         
                     }
                                                                                       
                    else if(Count>=10)
                        {
                                  //delay_ms(10);
                         // SBUF = dat[(Count/10)+0x30];
                           SBUF = (Count/10)+0x30; //把數(shù)據(jù)發(fā)送出去
                                  delay_ms(8);
                           SBUF = (Count%10)+0x30;
                                   //delay_ms(1);
                                  
                             }
                     else
                     {
                       //delay_ms(1);
                           SBUF = Count+0x30; //把數(shù)據(jù)發(fā)送出去
                          
                     }

                                 Count=0;
                                          
            }      


     }

}
void into() interrupt 0  //外部中斷0函數(shù),
{
             EA=0;


          
      Count++;
           delay_ms(50);
           if(Count>100)
                                {
                                      p1=0;
                                      p2=0;
                                          p3=0;
                                          p4=0;
                                          p5=0;
                                }
                                  if(Count>80)
                                   {
                                      p1=0;
                                      p2=0;
                                          p3=0;
                                          p4=0;
                                          p5=0;
                                 
                                   }
                                                   else if(60<Count<80)
                                        {
                                          p1=0;
                                      p2=0;
                                          p3=0;
                                          p4=0;
                                        }
                                                else if(40<Count<60)
                                        {
                                          p1=0;
                                      p2=0;
                                          p3=0;
                                        }
                                          else if(20<Count<40)
                                   {  p1=0;
                                      p2=0;
                                    }
                               
                             if(Count<20)
                                     {
                                          p1=0;
                                         }
                                 
                               

                                 
                                  

         EA=1;
}

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

使用道具 舉報(bào)

沙發(fā)
ID:301352 發(fā)表于 2018-5-8 14:03 | 只看該作者
這個(gè)是我寫的一個(gè)51 單片機(jī)計(jì)數(shù) 程序 ,現(xiàn)在測試下來 計(jì)數(shù)不準(zhǔn)確 ,請各位大神 看看問題出在那里,謝謝啦
回復(fù)

使用道具 舉報(bào)

板凳
ID:301352 發(fā)表于 2018-5-8 14:09 | 只看該作者
51單片機(jī)計(jì)數(shù)發(fā)送程序 ,現(xiàn)在計(jì)數(shù)不準(zhǔn)確 ,麻煩幫我看看你問題出在那里?謝謝
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表