找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)按鍵計(jì)數(shù),這種代碼該如何編譯呢?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:412348 發(fā)表于 2018-11-1 09:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
請(qǐng)問大家 就是一個(gè)按鍵控制 進(jìn)行計(jì)數(shù) 然后計(jì)算每分鐘按鍵多少次這種代碼該如何編譯呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:419116 發(fā)表于 2018-11-1 14:47 | 只看該作者
很簡(jiǎn)單啊,一個(gè)定時(shí)器定時(shí)1分鐘進(jìn)入一次中斷
一個(gè)變量,按鍵被觸發(fā)一次就+1

定時(shí)器中斷中,統(tǒng)計(jì)按鍵次數(shù)
回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2018-11-1 15:56 | 只看該作者
給個(gè)參考程序:
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>


sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;

#define  UP   20
#define  DOWN  30
#define  STOP  40

code char CharTab[128] ={0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                         0xfe,0xb0,0xed,0xf9,0xb3,0xdb,0xdf,0xf0,// 01234567
                         0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,// 89
                         0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                         0xff,0xff,0xff,0xff,0xff,0x01,0x80,0xff,//      -./
                         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,// 01234567
                         0x7f,0x6f,0x11,0x1c,0x36,0x09,0x16,0x17,// 89         =
                         0xff,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0xff,//  AbCdEFG
                         0x37,0xff,0x38,0x07,0x0e,0xff,0xff,0x7e,// HI  L NO
                         0x67,0xff,0xff,0x5b,0x46,0x3e,0xff,0xff,// P RSTU
                         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                         0xff,0x77,0x1f,0x0d,0x3d,0x6f,0x47,0x7b,//  AbcdEFg
                         0x17,0xff,0x38,0x4e,0x0e,0xff,0x15,0x1d,// hi  lmno
                         0xff,0xff,0x05,0x5b,0x0f,0x1c,0xff,0xff,//   rStu
                         0xff,0x3b,0xff,0xff,0xff,0xff,0xff,0xff};


unsigned char temp;
unsigned char COUNTER;
unsigned int key_no;//按鍵次數(shù)
unsigned int sju;//20m秒計(jì)數(shù)
                                                                                                 
idata char  DisBuf[16];

void Ext_int0_INTT() interrupt 0
{
       
        key_no++;                                //計(jì)數(shù)值加1
       
}                                                                                                 

void tm0_INTT() interrupt 1
{
       
        COUNTER++;                                //計(jì)數(shù)值加1
       
}


/********************************************************************
                              主函數(shù)
*********************************************************************/
main()
{
        //long K;
        char bb;
       
       
        temp=0;
        COUNTER=0;
        TMOD=0x02;                        //定時(shí)器0在模式1下工作
        TL0=0xbf;                        //定時(shí)器每200us產(chǎn)生一次溢出
        TH0=0xbf;                        //自動(dòng)重裝的值
       
        //顯示值
        /*K=87654321;
        for(bb=2;bb<8;){DisBuf[bb]=0x20;bb++;}//清緩存
        sprintf(DisBuf,"%lu",K);*/
       
        IT0=1;
        EX0=1;//
        ET0=1;                                //使能定時(shí)器0中斷
        EA=1;                                //使能總中斷
        TR0=1;                                //開始計(jì)時(shí)
       
        while(1)
        {

                if(COUNTER==100)//定時(shí)到 100-20ms,
                {
                  COUNTER=0;
                        sju++;if(sju>3000){EX0=0;}//sju=0;
                        if(sju==0){key_no=0;}

                        for(bb=0;bb<8;){DisBuf[bb]=0x20;bb++;}//清緩存
      sprintf(DisBuf,"%lu",(long)key_no);


      temp++;if(temp>=0x08){temp=0;}
            P0=temp;//位選
                       
                        P2=CharTab[DisBuf[temp]];//列值
                }

  }

}

回復(fù)

使用道具 舉報(bào)

地板
ID:149144 發(fā)表于 2018-11-1 16:01 | 只看該作者
就是 頻率計(jì),把 1s 改成 1min 就可以了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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