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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機C語言背景搶答器,程序如下,運行不報錯,但是在板子上什么都顯示不出來...

[復制鏈接]
跳轉到指定樓層
樓主
ID:949744 發表于 2021-7-6 10:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define unit unsigned int

uchar num;
uchar num1;
uchar flag1,flag2;
uchar flag3,flag4=0;
uchar code table[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};

sbit dula=P1^6;
sbit wela=P1^7;
sbit sp=P3^0;
sbit clear=P1^0;
sbit start=P1^1;
sbit key1=P1^2;
sbit key2=P1^3;
sbit key3=P1^4;
sbit key4=P1^5;

void delay(int z)
{
     int i,j;
         for(i=z;i>0;i++)
             for(j=110;j>0;j--);
}

void beep()
{
     sp=0;
         delay(500);
         sp=1;
}

void display(int a)
{
          wela=1;
          P2=0xFF;
          wela=0;
          dula=1;
          P2=table[a];
          dula=0;
          P2=0xFF;
          wela=1;
          P2=0xFD;
          wela=0;
          delay(5);
}

void clr()
{
     dula=1;
         P2=table[0];
         dula=0;
         P2=0xFF;
         wela=1;
         P2=0xFC;
         wela=0;
         delay(5);
}

void dis30s()
{
     uchar shi,ge;
         shi=num1/30;
         ge=num1%30;
         wela=1;
         P2=0xFF;
         wela=0;
         dula=1;
         P2=table[shi];
         dula=0;
         P2=0xFF;
         wela=1;
         P2=0xFE;
         wela=0;
         delay(5);

         wela=1;
         P2=0xFF;
         wela=0;
         dula=1;
         P2=table[ge];
         dula=0;
         P2=0xFF;
         wela=1;
         P2=0xFD;
         wela=0;
         delay(5);
}

void player()
{
         if(key1==0&&flag4==0)
         {
                   delay(10);
                  if(key1==0&&flag4==0)
                  {
                            display(1);
                          TR0=0;
                          flag1=flag2=0;
                          flag4=1;
                          beep();
                          while(!key1);
                  }
         }
           if(key2==0&&flag4==0)
         {
                   delay(10);
                  if(key2==0&&flag4==0)
                  {
                              display(2);
                       TR0=0;
                       flag1=flag2=0;
                       flag4=1;
                       beep();
                       while(!key2);
                  }
         }
         if(key3==0&&flag4==0)
         {
                   delay(10);
                  if(key3==0&&flag4==0)
                  {
                              display(3);
                       TR0=0;
                       flag1=flag2=0;
                       flag4=1;
                       beep();
                       while(!key3);
                  }
         }
         if(key4==0&&flag4==0)
         {
                   delay(10);
                  if(key4==0&&flag4==0)
                  {
                              display(4);
                       TR0=0;
                       flag1=flag2=0;
                       flag4=1;
                       beep();
                       while(!key4);
                  }
         }
}

void keyscan()
{
         if(clear==0&&flag2!=1)
         {
                  delay(10);
                 if(clear==0&&flag2!=1)
                 {
                           while(!clear);
                          flag1=0;
                          flag2=0;
                          flag3=0;
                          flag4=0;
                          num=0;
                          num1=10;
                          clr();
                          flag1=1;
                 }
         }
         if(flag1==1)
         {
                   if(start==0&&flag3==0)
                  {
                      delay(10);
                      if(start==0&&flag3==0)
                      {
                               flag2=1;
                               flag3=1;
                                   while(!start);
                          }
              }
     }
         if(flag2==1)
         {
                 TR0=1;
                 dis30s();
                 player();               
         }
}

void main()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        while(1)
        {
            keyscan();
        }
}

void T0_ser() interrupt 1
{
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         num++;
         if(num==20)
         {
                  num=0;
                 num1--;
         }
         if(num1==0)
         {
                  TR0=0;
                 flag1=0;
                 flag2=0;
                 num=0;
                 num1=30;
                 clr();
                 beep();
         }
}


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

使用道具 舉報

沙發
ID:161164 發表于 2021-7-6 16:57 | 只看該作者
代碼沒有注釋,變數名又沒有意義,看得很頭疼
dula是什么意思?
wela是什么意思?
flag1 到 flag4各自代表的含義是什么?
shi是十位?為甚么要除30?正常不是除10的嗎?
ge是個位?為甚么要模30?正常不是模10的嗎?
如果num1 = 29, ge就等于29,table[ge]不就爆炸了嗎?
回復

使用道具 舉報

板凳
ID:887202 發表于 2021-7-6 17:10 | 只看該作者
確實看的頭疼,是不是看的郭天祥老師的,貌似只有他的書會寫shi,ge這個變量名,多看看書,找找異同,建議先無腦抄一份代碼,運行成功之后一點點去改里面的東西,這樣子你就知道整個程序是怎么運行起來的,每一個函數,每一條語句是什么作用
回復

使用道具 舉報

地板
ID:584814 發表于 2021-7-8 08:31 | 只看該作者
沒有硬件圖,沒有軟件注釋,呵呵
回復

使用道具 舉報

5#
ID:539024 發表于 2021-7-8 12:19 | 只看該作者
用的是開發板嗎,看看數碼管共陰、共陽的,先把數碼管調通了,再接著干
回復

使用道具 舉報

6#
ID:798631 發表于 2021-7-8 15:58 | 只看該作者
先把硬件原理圖搞明白了   再分析程序吧   
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久人 | 亚洲国产精品99久久久久久久久 | 欧美性一区二区三区 | 日韩亚洲一区二区 | a在线视频观看 | 国产一区二区三区四区在线观看 | 免费成人在线网 | 精品1区2区 | 日韩精品极品视频在线观看免费 | 一区二区成人在线 | 99精品久久久国产一区二区三 | 欧美亚洲激情 | 亚洲精视频 | 老外黄色一级片 | 中文字幕一级毛片视频 | 亚洲精品自在在线观看 | 亚洲国产精品一区二区三区 | 黄色操视频 | 成人在线中文字幕 | www.嫩草| 免费在线观看一区二区 | 999国产精品视频免费 | 日韩亚洲视频 | 999精品视频| 一区二区三区成人 | 黑色丝袜三级在线播放 | 精国产品一区二区三区 | 91网站在线观看视频 | 成人福利 | 久久久久免费观看 | 国产在线小视频 | 国产精品日韩欧美一区二区三区 | 视频一区二区中文字幕 | 日本a在线| 在线观看成人免费视频 | 欧美精品久久久久久久久久 | 人人鲁人人莫人人爱精品 | 在线播放亚洲 | 亚洲国产精品99久久久久久久久 | 久久99精品久久久久久秒播九色 | 日本黄色大片免费 |