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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4203|回復: 10
打印 上一主題 下一主題
收起左側

下面是單片機的六路搶答器,求高手幫忙注釋一下,很多地方不懂啊!

[復制鏈接]
跳轉到指定樓層
樓主
ID:51006 發(fā)表于 2013-6-17 12:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    #include <reg52.h>       
        #define uint unsigned int
        #define uchar unsigned char
        unsigned char code table[]={0xc0,0xf9,0xa4,
    0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};
        sbit start=P3^6;
        sbit reset=P3^7;
        sbit key1=P1^0;
        sbit key2=P1^1;               
        sbit key3=P1^2;
        sbit key4=P1^3;
        sbit key5=P1^4;
        sbit key6=P1^5;
        sbit key7=P1^6;
        sbit key8=P1^7;
        sbit jia=P3^4;
        sbit jian=P3^5;
        bit action = 0;
        uchar second=10,a[7]={0};
        uchar timer0_count = 0;
        uchar number=0;
        uchar number_display = 0;
        uchar k;
        void delay(uint z)
        {
                uint x,y;
                for(x=z;x>0;x--)
                        for(y=120;y>0;y--);
        }
        void display(uchar number,uchar second)
        {                       
                P2 = 0x01;
                P0 = table[second];       
                delay(1);
                P2 = 0x02;
                P0 = table[number];
                delay(1);
                P2 = 0x04;
                P0 = table[a[0]];
                delay(1);
                P2 = 0x08;
                P0 = table[a[1]];
                delay(1);
                P2 = 0x10;
            P0 = table[a[2]];
                delay(1);
                P2 = 0x20;
                P0 = table[a[3]];
                delay(1);
                P2 = 0x40;
                P0 = table[a[4]];
                delay(1);
                P2 = 0x80;
                P0 = table[a[5]];
                delay(1);       
        }
        void start_keyscan()
        {
            void fengling();
                while(start == 0)
                {
                    key7=0;
                        display(number_display,second);
                        if(start == 1)
                        {
                            key7=1;
                                action  = 1;
                                TR0 = 1;               
                        }
                }       
        }
       
        uchar key_scan8()
        {
                if(key1 == 0)
                {
                        delay(8);
                        if(key1 == 0)
                        {
                                number  = 1;
                                number_display = number;
                        }
                }
                                if(key2 == 0)
                {
                        delay(8);
                        if(key2 == 0)
                        {
                                number  = 2;
                                number_display = number;
                        }
                }
                if(key3 == 0)
                {
                        delay(8);
                        if(key3 == 0)
                        {
                                number  = 3;
                                number_display = number;
                        }
                }
                if(key4 == 0)
                {
                        delay(8);
                        if(key4 == 0)
                        {
                                number  = 4;
                                number_display = number;
                        }
                }
                if(key5 == 0)
                {
                        delay(8);
                        if(key5 == 0)
                        {
                                number  = 5;
                                number_display = number;
                        }
                }
                if(key6 == 0)
                {
                        delay(8);
                        if(key6 == 0)
                        {
                                number  = 6;
                                number_display = number;
                        }
                }                                                       
                if(number_display != 0)       
                {
                        return number_display;
                }
                else
                {
                        return 0;
                }               
        }
        void reset_keyscan()
        {
                if(reset == 0)
                {
                        delay(8);
                        if(reset == 0)
                        {
                                number_display = 0;                       
                               second=10;
                }
                }       
        }
        void main()
        {
                TMOD=0x01;
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                EA=1;
                ET0=1;
                TR0=0;
                P2=0x00;                               
                while(1)
                {
                    reset_keyscan();
                        start_keyscan();                   
                         if(jia==0&&a[number-1]<9)
              {  
                 delay(10);
                 while(jia==0)
                     display(number_display,second);
                     a[number-1]=a[number-1]+1;          
              }
            if(jian==0&&a[number-1]>0)
              {
                 delay(10);
                     while (jian==0)
                     display(number_display,second);
                     a[number-1]=a[number-1]-1;
              }
                        while(action)
                        {
                         while(!key_scan8())              
                        {       
                                display(number_display,second);
                                if(second == 0)
                                {
                                        second = 10;
                                        break;
                                }
                        }
                                        TR0 = 0;
                                        key7=0;
                                        delay(80);
                                   display(number_display,second);                                               
                 key7=1;
                                        action = 0;
                                        break;
                        }
                        display(number_display,second);       
                }
        }
        void timer0() interrupt 1
        {
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                timer0_count ++;
                if(timer0_count == 20)
                {       
                        second --;
                        timer0_count = 0;
          if(second==0)
                        {
                           key7=0;
                           delay(60);
                           key7=1;
                     }
                 }                               
         }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2013-6-17 15:25 | 只看該作者
是一個八路搶答器的單片機程序
回復

使用道具 舉報

板凳
ID:76287 發(fā)表于 2015-4-7 19:03 | 只看該作者
不懂,但是還是要頂,安撫樓主受傷心靈,每一個新手都是痛苦的開始,快樂的結局
回復

使用道具 舉報

地板
ID:439073 發(fā)表于 2019-4-18 14:53 | 只看該作者
道到我的單片機里沒用呀
回復

使用道具 舉報

5#
ID:370231 發(fā)表于 2019-4-18 15:20 | 只看該作者
在學習技術的時候,一定要多動腦筋,遇到問題后,三思而后問。
回復

使用道具 舉報

6#
ID:515274 發(fā)表于 2019-4-18 16:08 | 只看該作者
key_scan8這個函數檢測8個按鍵是否有按下的,檢測到按鍵后返回number_display。
回復

使用道具 舉報

7#
ID:1105312 發(fā)表于 2023-12-20 14:51 | 只看該作者
六路搶答器怎么做,在線求
回復

使用道具 舉報

8#
ID:1105312 發(fā)表于 2023-12-20 14:52 | 只看該作者
下載進我的單片機了沒用呀
回復

使用道具 舉報

9#
ID:1062320 發(fā)表于 2023-12-22 09:23 | 只看該作者
這段代碼看起來是為了一個帶有按鈕的七段數碼管計數器,可以用來遞增和遞減數字。它還包括一個倒計時器,從10倒數到0,下載進單片機沒用有可能是你的引腳不對 比如原來是P1.0-7引腳,但是你單片機可能不是這個接口
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文日韩在线 | 成人妇女免费播放久久久 | 日本一区二区视频 | 亚洲日本一区二区三区四区 | 久久精品中文字幕 | 日本在线一区二区三区 | 91视频在线网站 | 免费在线观看一区二区 | 中文字幕成人免费视频 | 欧美在线小视频 | 人人九九精| 日韩成人国产 | 国产精品美女久久久久aⅴ国产馆 | 免费a在线 | 久久精品91久久久久久再现 | 久久精品亚洲精品国产欧美kt∨ | 91免费看片| 国产又色又爽又黄又免费 | 亚洲成人一区二区三区 | av天天爽| 黄色在线免费观看 | 一区二区不卡视频 | 狠狠色综合久久丁香婷婷 | 成人av播放 | 久久国产精品无码网站 | 亚洲成在线观看 | 国产精品一区二区av | 男女免费网站 | 99热精品在线观看 | 99精品视频免费观看 | 三级黄色片在线 | 一区二区国产精品 | 久久国 | 亚洲有码转帖 | 国产欧美一区二区三区免费 | 欧美成人一区二区 | 成人国产精品免费观看 | 老司机精品福利视频 | 午夜看片 | 亚洲一区中文字幕在线观看 | 国产精品久久久久久久久久久久久久 |