找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5192|回復: 15
打印 上一主題 下一主題
收起左側(cè)

初學者 求助 定時器中斷和流水燈的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:145415 發(fā)表于 2016-11-10 20:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>//T1的方式2,時間間隔一秒 流水燈 每次三個
  2. #define uint unsigned int
  3. sbit D0=P1^0;
  4. sbit D1=P1^1;
  5. sbit D2=P1^2;
  6. sbit D3=P1^3;
  7. sbit D4=P1^4;
  8. sbit D5=P1^5;
  9. sbit D6=P1^6;
  10. sbit D7=P1^7;
  11. void display(uint);
  12. uint num,n;
  13. void main()
  14. {
  15.         TMOD=0x20;
  16.         TH1=256-200;
  17.         TL1=256-200;
  18.         EA=1;
  19.         ET1=1;
  20.         TR1=1;
  21.         while(1)
  22. {
  23.         display(n);       
  24. }

  25. }

  26. void T0_time() interrupt 3
  27. {
  28.         num++;
  29.         if(num==5000)
  30.         {
  31.                 num=0;
  32.                 n++;
  33.                 if(n==4)
  34.                 {
  35.                         n=1;
  36.                 }
  37.         }


  38. }
  39. void display(uint n)
  40. {
  41. if(n==1)
  42.         {
  43.         D0=~D0;
  44.         D1=~D1;
  45.         D2=~D2;
  46.         }
  47.         if(n==2)
  48.         {
  49.         D3=~D3;
  50.         D4=~D4;
  51.         D5=~D5;
  52.         }
  53.         if(n==3)
  54.         {
  55.        
  56.         D6=~D6;
  57.         D7=~D7;
  58.         D0=~D0;
  59.         }

  60. }
復制代碼
這段代碼,我運行出來 第一次循環(huán)是正確的,每次三個閃爍,但是從第二次循環(huán)就開始亂閃了 每次也不是三個。。各位看看我錯在哪里啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:140371 發(fā)表于 2016-11-11 08:02 | 只看該作者
你的程式架構:有bug ....說明如下..當(n==1) 會執(zhí)行多次的  D0=~D0;D1=~D1;D2=~D2; 這些敘述
當 n== 2 , n==3 時亦同  ...
回復

使用道具 舉報

板凳
ID:145415 發(fā)表于 2016-11-11 08:15 | 只看該作者
a0931727149 發(fā)表于 2016-11-11 08:02
你的程式架構:有bug ....說明如下..當(n==1) 會執(zhí)行多次的  D0=~D0;D1=~D1;D2=~D2; 這些敘述
當 n== 2 , n ...

也就是說在n=1和 n=2之間的時候時間會有重疊是嗎?那要怎么修改呀?
回復

使用道具 舉報

地板
ID:140371 發(fā)表于 2016-11-11 08:49 | 只看該作者
  if(n==1){
        D6=0;
        D7=0;
        D0=1;
        D1=1;
        D2=1;
        }
        if(n==2)
        {
        D0=0;
        D1=0;
        D2=0;
        D3=1;
        D4=1;
        D5=1;
        }
        if(n==3)
        {
         D3=0;
        D4=0;
        D5=0;
        D6=1;
        D7=1;
       // D0=1;
        }
回復

使用道具 舉報

5#
ID:145415 發(fā)表于 2016-11-11 09:00 | 只看該作者
a0931727149 發(fā)表于 2016-11-11 08:49
if(n==1){
        D6=0;
        D7=0;

謝謝 我思考了下 也用的這種方法 結果是正確的 但是感覺蠢蠢的 哈哈哈
回復

使用道具 舉報

6#
ID:111634 發(fā)表于 2016-11-12 13:51 | 只看該作者
本帖最后由 zl2168 于 2016-11-12 15:05 編輯
小胖頭 發(fā)表于 2016-11-11 09:00
謝謝 我思考了下 也用的這種方法 結果是正確的 但是感覺蠢蠢的 哈哈哈

“感覺蠢蠢的”。
若欲D6=0; D7=0;D0=1;D1=1;D2=1;
可P1=(P1&0x3f)|0x07;//P1&0x3f,表示D6=0; D7=0,其余各位不變。再或0x07,表示D0=1;D1=1;D2=1,其余各位不變。
以此類推。建議你還要加強理論學習,否則,盲目實踐,事倍功半。介紹你2本書,
張志良編著《80C51單片機實用教程》ISBN978-7-04-044532-9,高教社出版。用于學習51單片機原理,便于閱讀理解,便于自學。
80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

7#
ID:147540 發(fā)表于 2016-11-12 17:18 | 只看該作者
定時器好好學,可以自己嘗試定時時間,加強練習
回復

使用道具 舉報

8#
ID:111634 發(fā)表于 2016-11-12 19:30 | 只看該作者
本帖最后由 zl2168 于 2016-11-12 19:49 編輯

看了你的程序,實在不敢恭維。我編了一個,并帶keil調(diào)試,你看看。


不學理論,盲目實踐,不是事倍功半,就是知其然,不知其所以然。


回復

使用道具 舉報

9#
ID:111634 發(fā)表于 2016-11-12 19:35 | 只看該作者
本帖最后由 zl2168 于 2016-11-12 19:51 編輯

不學理論,盲目實踐,不是事倍功半,就是知其然,不知其所以然。
再給你編一個不用中斷的按你要求的程序,你試試:


要走捷徑,看我給你介紹的2本書,真的不騙你。
張志良編著《80C51單片機實用教程》ISBN978-7-04-044532-9,高教社出版。用于學習51單片機原理,便于閱讀理解,便于自學。
80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。


回復

使用道具 舉報

10#
ID:111634 發(fā)表于 2016-11-12 19:44 | 只看該作者
再次指出,你那個高電平亮燈控制是不妥的。
回復

使用道具 舉報

11#
ID:145415 發(fā)表于 2016-11-17 17:26 | 只看該作者
zl2168 發(fā)表于 2016-11-12 19:44
再次指出,你那個高電平亮燈控制是不妥的。

非常感謝,學生受教啦
回復

使用道具 舉報

12#
ID:145415 發(fā)表于 2016-11-17 17:26 | 只看該作者
zengwei 發(fā)表于 2016-11-12 19:55
90060059初學者交流群

謝謝啦
回復

使用道具 舉報

13#
ID:140371 發(fā)表于 2016-11-18 17:57 來自手機 | 只看該作者
中斷編號有誤。延時時間太長會跳著顯示。
回復

使用道具 舉報

14#
ID:148704 發(fā)表于 2016-11-18 19:33 | 只看該作者
感謝分享
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表