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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3613|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

80C52單片機(jī)定時(shí)器T2使用問(wèn)題請(qǐng)教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用T2來(lái)控制LED延時(shí)1s亮滅,如下圖,但燒寫進(jìn)單片機(jī)后發(fā)現(xiàn)控制不了,
覺(jué)得應(yīng)該是初始化出現(xiàn)問(wèn)題,但又不清楚是哪里有問(wèn)題
各位大神,幫幫看一下,謝謝!


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

使用道具 舉報(bào)

沙發(fā)
ID:330198 發(fā)表于 2018-5-18 08:55 | 只看該作者
你TH2和TL2初值0xff不對(duì),LED=!LED,這句也錯(cuò)了,應(yīng)該LED=~LED。
回復(fù)

使用道具 舉報(bào)

板凳
ID:269211 發(fā)表于 2018-5-23 16:19 | 只看該作者
為何要用定時(shí)器2呢?用0與1都可以呀
回復(fù)

使用道具 舉報(bào)

地板
ID:18297 發(fā)表于 2018-5-23 19:30 | 只看該作者
初始化時(shí)需要加2條語(yǔ)句(仿真可行):
EA=1;//開(kāi)總中斷允許
ET2=1; //開(kāi)定時(shí)器T2的中斷允許
否則你的定時(shí)器T2溢出但不產(chǎn)生中斷。
回復(fù)

使用道具 舉報(bào)

5#
ID:155507 發(fā)表于 2018-5-23 19:38 | 只看該作者

  1. #include "reg51.h"

  2. typedef unsigned char BYTE;
  3. typedef unsigned int WORD;

  4. //-----------------------------------------------

  5. /* define constants */
  6. #define FOSC 11059200L

  7. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  8. /* define SFR */
  9. sbit ET2 = IE^5;

  10. sfr T2CON = 0xc8;                   //timer2 control register
  11. sbit TF2  = T2CON^7;
  12. sbit TR2  = T2CON^2;

  13. sfr T2MOD = 0xc9;                   //timer2 mode register
  14. sfr RCAP2L = 0xca;
  15. sfr RCAP2H = 0xcb;
  16. sfr TL2 = 0xcc;
  17. sfr TH2 = 0xcd;

  18. sbit LED = P2^0;               //work LED, flash once per second

  19. /* define variables */
  20. WORD count;                         //1000 times counter

  21. //-----------------------------------------------

  22. /* Timer2 interrupt routine */
  23. void tm2_isr() interrupt 5 using 1
  24. {
  25.     TF2 = 0;
  26.     if (count-- == 0)               //1ms * 1000 -> 1s
  27.     {
  28.         count = 1000;               //reset counter
  29.         LED = ! LED;                              //work LED flash
  30.     }
  31. }

  32. //-----------------------------------------------

  33. /* main program */
  34. void main()
  35. {
  36.     RCAP2L = TL2 = T1MS;            //initial timer2 low byte
  37.     RCAP2H = TH2 = T1MS >> 8;       //initial timer2 high byte
  38.     TR2 = 1;                        //timer2 start running
  39.     ET2 = 1;                        //enable timer2 interrupt
  40.     EA = 1;                         //open global interrupt switch
  41.     count = 0;                      //initial counter

  42.     while (1);                      //loop
  43. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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