找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1293|回复: 2
收起左侧

51单片机计数 发送程序

[复制链接]
ID:301352 发表于 2018-5-8 14:02 | 显示全部楼层 |阅读模式
#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++);
} //以上延时函数
///////以下功能:串口初始化,波特率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; //把数据发送出去
                   SBUF = (Count%10/10)+0x30; //把数据发送出去
                         delay_ms(8);
                   //SBUF = (Count/100)+0x30; //把数据发送出去
                      SBUF = (Count%10)+0x30;
                //delay_ms(1);
                                         
                     }
                                                                                       
                    else if(Count>=10)
                        {
                                  //delay_ms(10);
                         // SBUF = dat[(Count/10)+0x30];
                           SBUF = (Count/10)+0x30; //把数据发送出去
                                  delay_ms(8);
                           SBUF = (Count%10)+0x30;
                                   //delay_ms(1);
                                  
                             }
                     else
                     {
                       //delay_ms(1);
                           SBUF = Count+0x30; //把数据发送出去
                          
                     }

                                 Count=0;
                                          
            }      


     }

}
void into() interrupt 0  //外部中断0函数,
{
             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;
}

回复

使用道具 举报

ID:301352 发表于 2018-5-8 14:03 | 显示全部楼层
这个是我写的一个51 单片机计数 程序 ,现在测试下来 计数不准确 ,请各位大神 看看问题出在那里,谢谢啦
回复

使用道具 举报

ID:301352 发表于 2018-5-8 14:09 | 显示全部楼层
51单片机计数发送程序 ,现在计数不准确 ,麻烦帮我看看你问题出在那里?谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表