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

QQ登錄

只需一步,快速開始

搜索
查看: 2642|回復(fù): 0
收起左側(cè)

中斷部分求解釋如何進(jìn)如主函數(shù)的?

[復(fù)制鏈接]
ID:72008 發(fā)表于 2015-1-12 16:28 | 顯示全部樓層 |閱讀模式
  1. /*********** 2015.7 JQ--V0.1 宏晶公司STC單片機(jī)開發(fā)板 ************

  2. $ 程序作用:手動(dòng)可調(diào)變速的流水燈的效果

  3. $ 程序作者: Jh

  4. $ 程序版本: JQ--V0.1

  5. $ 編制日期: 2011-07-01

  6. $ 編譯器:Keil C uVision2

  7. $ 所用芯片:STC89C52,11.0592M晶振

  8. $ 程序開發(fā)板:JQ--V0.1版本

  9. $ 程序通俗易懂  注釋詳細(xì)  結(jié)構(gòu)化模塊是51單片機(jī)初學(xué)愛(ài)好者的理想選擇

  10. ******************** JQ--V0.1 宏晶公司STC單片機(jī)開發(fā)板 **********************/

  11. #include<reg52.h>      //52單片機(jī)頭文件定義

  12. #define uchar unsigned char    //數(shù)據(jù)類型uchar的宏定義
  13. #define uint  unsigned int   //數(shù)據(jù)類型uint的宏定義

  14. #define led P0          //P0口宏定義
  15. void init();
  16. uchar count,speed,num;  //全局變量定義

  17. sbit key =P3^2;

  18. void delay(uint k);

  19. uchar code huayang[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0x55,0x55,0x00};   //花樣跑馬燈數(shù)組定義  隨便改變數(shù)組里面的值就可以改變花樣(該數(shù)組有27個(gè)數(shù)值)
  20. void main(void)   //主函數(shù)
  21. {
  22. uchar i;
  23. init();
  24. while(1)         //while死循環(huán)
  25. {
  26.   for(i=0;i<8;i++)     //0-26共27次循環(huán)依次取出數(shù)組中的數(shù)(i小于多少由數(shù)組中的數(shù)決定)
  27.   {
  28.    led=huayang[i];   //把取出的數(shù)以總線的方式賦給led即P0口
  29.   }
  30. }
  31. }



  32. void init()   //初始化
  33. {
  34. speed=0;
  35. TMOD=0x01;   //定時(shí)器T0的應(yīng)用   后面會(huì)詳細(xì)講
  36. TH0=(65536-speed)/256;
  37. TL0=(65536-speed)%256;
  38. EA=1;
  39. ET0=1;
  40. TR0=1;
  41. }


  42. void timer0() interrupt 1   //定時(shí)器T0中斷   后面會(huì)詳細(xì)講
  43. {
  44.   TH0=(65536-speed)/256;
  45.   TL0=(65536-speed)%256;
  46.   count++;
  47.   if(count==5000)
  48.   {
  49.    count=0;

  50.    if(key==0)      //按鍵消抖
  51.    { delay(5);
  52.     if(key==0)
  53.      num++;
  54.      while(!key);   //松手檢測(cè)  只要當(dāng)key==1時(shí)才會(huì)退出這個(gè)while循環(huán)!

  55.      if(num==1)
  56.      {
  57.       speed=50;  //速度調(diào)節(jié)(也就是改變定時(shí)器的初值。
  58.      }

  59.      if(num==2)
  60.      {
  61.       speed=100;
  62.      }

  63.      if(num==3)
  64.      {
  65.       speed=150;
  66.      }
  67.      

  68.      if(num==4)
  69.      {
  70.       speed=200;
  71.      }
  72.    }
  73.   }
  74. if(num==5)  num=0;
  75.   
  76. }


  77. void delay(uint k)   //延時(shí)子函數(shù)
  78. {
  79.    while(--k);
  80. }


  81. //這過(guò)程序用到了定時(shí)器  后面會(huì)跟大家詳細(xì)講解的! 謝謝大家。!
  82. //對(duì)于調(diào)速函數(shù)可以進(jìn)行修改,使其變得更加的簡(jiǎn)潔,speed=num*50;if(num==6)  num=0;//防止程序出錯(cuò),所以進(jìn)行了限制!
復(fù)制代碼



相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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