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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

小白求助制作秒表,單片機代碼問題

[復制鏈接]
跳轉到指定樓層
樓主
以上是代碼,功能是實現秒表計時,60清零,精確到后兩位,我覺得代碼沒問題啊

以下是仿真
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  4. int number=0;
  5. char score[]={0,0,0,0};
  6. void timer0(void) interrupt 1
  7. {
  8.     number++;
  9.         score[1]=number/1000;
  10.         score[2]=(number-score[1]*1000)/100;
  11.         score[3]=(number-score[1]*1000-score[2]*100)/10;
  12.         score[4]=number-score[1]*1000-score[2]*100-score[3]*10;
  13.         if (number>6000){number=0;}
  14.         TL0=0Xf0;
  15.         TH0=0Xd8;
  16. }
  17. main(){
  18.         int k=0;
  19.         int wei=0x01;
  20.         TMOD=0X01;
  21.         TH0=0Xd8;
  22.         TL0=0Xf0;//10ms
  23.         TR0=1;
  24.         ET0=1;
  25.         EA=1;
  26.         while(1){
  27.         for(k=1;k<5;k++)
  28.         {        P2=led[score[k]];
  29.                 wei=_crol_(wei,2);
  30.                 P3=wei;
  31.                         }
  32.                 }
  33.         }
復制代碼







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

使用道具 舉報

沙發
ID:245521 發表于 2017-11-2 23:00 | 只看該作者
有人嗎
回復

使用道具 舉報

板凳
ID:123289 發表于 2017-11-3 10:10 | 只看該作者
不知道你要表達的意思是什么!
回復

使用道具 舉報

地板
ID:84652 發表于 2017-11-3 12:58 | 只看該作者
數組尋址是從0開始吧?score[0]開始。還有取余數用%就行了,不用那么麻煩。
回復

使用道具 舉報

5#
ID:245680 發表于 2017-11-3 14:16 | 只看該作者
聲明處:05.char score[]={0,0,0,0};初始為4個元素,編譯器分配4個存儲空間,數組長度為4,最大有效下標3:有效下標score[0]---score[3];“ for(k=1;k<5;k++)”中k=1~5,一是錯位,二是最后一個數據超出地址空間了。
回復

使用道具 舉報

6#
ID:245521 發表于 2017-11-3 17:02 | 只看該作者
yzwzfyz 發表于 2017-11-3 10:10
不知道你要表達的意思是什么!

秒表計時呢
回復

使用道具 舉報

7#
ID:245521 發表于 2017-11-3 17:04 | 只看該作者
spark399 發表于 2017-11-3 14:16
聲明處:05.char score[]={0,0,0,0};初始為4個元素,編譯器分配4個存儲空間,數組長度為4,最大有效下標3: ...

我改成了for(k=0;k<4;k++),為什么還是不能正常顯示呢
回復

使用道具 舉報

8#
ID:245521 發表于 2017-11-3 17:05 | 只看該作者
改動了以下:
#include<reg51.h>
#include<intrins.h>
char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int number=0;
char score[]={0,0,0,0};
void timer0(void) interrupt 1
{
    number++;
        score[0]=number/1000;
        score[1]=(number-score[1]*1000)/100;
        score[2]=(number-score[1]*1000-score[2]*100)/10;
        score[3]=(number-score[1]*1000-score[2]*100)%10;
        if (number>6000){number=0;}
        TL0=0Xf0;
        TH0=0Xd8;
}
main(){
        int k=0;
        int wei=0x01;
        TMOD=0X01;
        TH0=0Xd8;
        TL0=0Xf0;//10ms
        TR0=1;
        ET0=1;
        EA=1;
        while(1){
        for(k=0;k<4;k++)
        {        P2=led[score[k]];
                wei=_crol_(wei,2);
                P3=wei;
                        }
                }
        }               
回復

使用道具 舉報

9#
ID:245521 發表于 2017-11-3 17:11 | 只看該作者
spark399 發表于 2017-11-3 14:16
聲明處:05.char score[]={0,0,0,0};初始為4個元素,編譯器分配4個存儲空間,數組長度為4,最大有效下標3: ...

是1-4呢,5不滿足條件
回復

使用道具 舉報

10#
ID:111634 發表于 2017-11-3 21:08 | 只看該作者
本帖最后由 zl2168 于 2017-11-3 21:10 編輯

實例93  99.9秒秒表
Proteus仿真一下,確認有效。
實例95 99.9秒秒表.rar (38.86 KB, 下載次數: 4)

以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,書中電路和程序設計有詳細說明,電路與程序真實可靠可信可行,程序語句條條有注解。若需99.99秒,硬件電路增加一位595。軟件程序增加0.01s10ms計數器,并修改相應計數顯示程序。仿真電路和Hex文件能在清華出版社網站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網上書店打折購買。
回復

使用道具 舉報

11#
ID:245521 發表于 2017-11-3 23:14 | 只看該作者
zl2168 發表于 2017-11-3 21:08
實例93  99.9秒秒表
先Proteus仿真一下,確認有效。

額。。。感謝 但是我的哪里錯了呢
回復

使用道具 舉報

12#
ID:229799 發表于 2017-11-4 09:26 | 只看該作者
位掃描要加延時,不然看不到效果
回復

使用道具 舉報

13#
ID:229799 發表于 2017-11-4 09:28 | 只看該作者
Afan的單片機 發表于 2017-11-3 23:14
額。。。感謝 但是我的哪里錯了呢

位掃描要有延時
回復

使用道具 舉報

14#
ID:111634 發表于 2017-11-4 09:56 | 只看該作者
Afan的單片機 發表于 2017-11-3 23:14
額。。。感謝 但是我的哪里錯了呢

讀懂正確有效程序,就知道自己錯在哪兒了!
回復

使用道具 舉報

15#
ID:84652 發表于 2017-11-4 11:44 | 只看該作者
Afan的單片機 發表于 2017-11-3 17:05
改動了以下:
#include
#include

score[1]=(number-score[1]*1000)/100;后面的score[1]也得跟著改成score[0]呀。剩下那幾句也是……。
回復

使用道具 舉報

16#
ID:245521 發表于 2017-11-5 22:27 | 只看該作者
zjb2106558 發表于 2017-11-4 09:26
位掃描要加延時,不然看不到效果

是的 為什么
回復

使用道具 舉報

17#
ID:245521 發表于 2017-11-5 22:37 | 只看該作者
#include<reg51.h>
#include<intrins.h>
char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int number=0;
sbit LED = P2^7;
char score[]={0,0,0,0};
char key=0;
void delayms(unsigned int x)
{
  unsigned char t;
  while(x--)
  for (t=0;t<120;t++);
}
void timer0(void) interrupt 1
{
    number++;
        score[0]=number/1000;
        score[1]=number%1000/100;
        score[2]=number%100/10;
        score[3]=number%100%10;
        if (number>6000){number=0;}
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
}
main(){
        int k=0;
        int wei=0x01;
        TMOD=0X01;
        TH0=(65536-12000)/256;
        TL0=(65536-12000)%256;
        TR0=1;
        ET0=1;
        EA=1;
        key=0xff&P1;
        if(key=0xff)
{       
        while(1){
        for(k=0;k<4;k++)
                {        P2=led[score[k]];
                        P3=wei;
                        if (P3==0x04){LED=0;}
                        delayms(15);
                        P2=0xff;
                        wei=_crol_(wei,2);
                }
                        }
}
                        if(key!=0xff)        TR0=0;
}
       
       
        這樣怎么不能實現按鍵暫停呢啊

1.jpg (114.74 KB, 下載次數: 39)

1.jpg
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线视频 | 日本一区二区影视 | 精品啪啪 | 福利社午夜影院 | 亚洲va国产日韩欧美精品色婷婷 | 午夜影院在线视频 | 精品久久久久久久久久久 | 国外成人免费视频 | 成人在线视频网 | 91精品国产91久久久久久丝袜 | 国产欧美精品一区二区色综合 | 亚洲精品在线观看视频 | 久久久国产精品一区 | 午夜视频在线免费观看 | 精品国产一区二区三区性色av | 最近日韩中文字幕 | 日本在线视频一区二区 | 欧美中文字幕一区二区三区 | 亚洲成人一级 | 国产h视频 | 精品一区二区三区四区五区 | 久久成人一区 | 日韩高清一区二区 | 羞羞色视频 | 天天干天天操 | av在线一区二区 | 国产亚洲一区精品 | 欧洲亚洲精品久久久久 | 久久久精彩视频 | 亚洲毛片在线观看 | 一区在线视频 | 伊人网在线播放 | 久久精品国产久精国产 | 国产精品久久久久久久岛一牛影视 | 中文字幕在线免费视频 | 一区二区三区中文字幕 | 久久精品高清视频 | 婷婷开心激情综合五月天 | 免费黄色在线 | 日本三级网站在线观看 | 老外黄色一级片 |