亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1307 | 回復(fù): 0
打印 上一主題 下一主題

AT59C52簡單中斷 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-23 01:27 |只看該作者 |倒序?yàn)g覽
定時器:

  1. /*
  2. 定時器每個機(jī)器周期加1,機(jī)器周期是晶振的12倍.
  3. 初始化定時器中斷。對TMOD賦值,確定T0,T1的工作方式
  4. 計算初值,將其寫入TH0,TL0,TH1,TL1
  5. 開中斷,對IE賦值,開放中斷。
  6. 使TR0,TR1,置位,啟動定時器定時或計數(shù)。
  7. sbit EA = IE^7;
  8. sbit ET2 = IE^5; //8052 only
  9. sbit ES = IE^4;
  10. sbit ET1 = IE^3;
  11. sbit EX1 = IE^2;
  12. sbit ET0 = IE^1;
  13. sbit EX0 = IE^0;
  14. TMOD用于設(shè)置timer的狀態(tài),高4位timer1,低4位timer0
  15. 控制寄存器TCON,高4位設(shè)置timer,低4位設(shè)置外部中斷
  16. sbit TF1 = TCON^7;
  17. sbit TR1 = TCON^6;
  18. sbit TF0 = TCON^5;
  19. sbit TR0 = TCON^4;
  20. sbit IE1 = TCON^3;
  21. sbit IT1 = TCON^2;
  22. sbit IE0 = TCON^1;
  23. sbit IT0 = TCON^0;
  24. */
  25. #include <REG52.h>

  26. unsigned char code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  27. unsigned char count=0;


  28. void time0_init()
  29. {
  30.     TMOD = 0x01;//gate0 c\t mode1 mode0 形成0 1 2 3 選擇1為16位
  31.     TH0=0x4C;
  32.     TL0=0x00;//50ms
  33.     IE=1<<7|1<<1;//設(shè)置相應(yīng)位為1//其中第7位為未定義
  34.     TCON=1<<4;
  35. }

  36. void add() interrupt 1//分別為,外部0定時器0外部1定時器1
  37. {
  38.     TH0=0X4C;
  39.     TL0=0X00;
  40.     count ++;    
  41. }

  42. void main()
  43. {
  44.     unsigned char i=0;
  45.     time0_init();
  46.     P2=0X04;//選著哪個數(shù)碼管,從左邊數(shù)第4個
  47.     while(1)
  48.     {
  49.         P0=table[i%10];
  50.         while(1)
  51.         {
  52.             if(count==20)
  53.             {
  54.                 count =0;
  55.                 i++;
  56.                 break;
  57.             }
  58.         }
  59.         
  60.     }
  61. }

外部中斷:

  1. #include <REG52.h>

  2. sbit key_1=P3^2;
  3. sbit key_2=P3^3;
  4. //num為1延遲1ms,軟件防抖延遲20ms
  5. void Delay(unsigned int num)
  6. {
  7.     unsigned int i,j;
  8.     for(i=0;i<num;i++)
  9.         for(j=0;j<1827;j++)
  10.             ;
  11. }

  12. void interrupt_init()
  13. {
  14.     IE=1<<7|1|1<<2;//第1,3,8位為1
  15.     TCON=1|1<<2;//第1,3位為1,負(fù)邊沿觸發(fā)
  16. }

  17. void out1() interrupt 0 using 1
  18. {
  19.     Delay(2);//延遲20ms
  20.     if(key_1==0);
  21.     {
  22.         P0=0xf0;
  23.     }
  24. }

  25. void out2() interrupt 2 using 1
  26. {
  27.     Delay(2);
  28.     if(key_2==0);
  29.     {
  30.         P0=0x0f;
  31.     }
  32. }

  33. int main()
  34. {
  35.     interrupt_init();
  36.     while(1)
  37.     ;
  38. }

定時器中斷時候,需要處理TMOD設(shè)置相關(guān)方式,TCON設(shè)置TR為1,允許計時,IE中設(shè)置EA和ET
外部中斷時候,需要設(shè)置TCON中的IT為相應(yīng)位,設(shè)置中斷觸發(fā)方式,TCON中的IE0和IE1是中斷請求標(biāo)志,由硬件置1和0
然后設(shè)置IE中的EA和EX
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP