標(biāo)題: 關(guān)于單片機(jī)定時(shí)器賦初值的問(wèn)題,程序里的值和定時(shí)計(jì)算器的值為什么不一樣呢? [打印本頁(yè)]

作者: 芙蓉焊料    時(shí)間: 2022-12-17 13:58
標(biāo)題: 關(guān)于單片機(jī)定時(shí)器賦初值的問(wèn)題,程序里的值和定時(shí)計(jì)算器的值為什么不一樣呢?
請(qǐng)教老師,關(guān)于定時(shí)器賦初值的問(wèn)題,程序里的值和定時(shí)計(jì)算器的值為什么不一樣呢?




作者: Hephaestus    時(shí)間: 2022-12-17 16:43
三張圖,上下兩張一樣,中間不一樣,2:1判斷中間錯(cuò)了。
作者: coody_sz    時(shí)間: 2022-12-17 17:22
應(yīng)該是(65536-5000)
作者: wulin    時(shí)間: 2022-12-17 20:12
誰(shuí)是對(duì)的,仿真圖為證。下面是驗(yàn)證程序。


  1. #include<reg51.h>

  2. sbit LED1=P2^0;
  3. sbit LED2=P2^1;

  4. void Timer_Init(void)//5毫秒@12.000MHz
  5. {
  6.         TMOD= 0x00;                //設(shè)置定時(shí)器模式
  7.         TL0 = 0xC0;                //設(shè)置定時(shí)初始值
  8.         TH0 = 0x63;                //設(shè)置定時(shí)初始值
  9.         TL1 = 0x78;                //設(shè)置定時(shí)初始值
  10.         TH1 = 0x0c;                //設(shè)置定時(shí)初始值
  11.         TR0 = 1;                        //定時(shí)器0開(kāi)始計(jì)時(shí)
  12.         TR1 = 1;                        //定時(shí)器1開(kāi)始計(jì)時(shí)
  13.         ET0 = 1;
  14.         ET1 = 1;
  15.         EA = 1;
  16. }

  17. void main(void)
  18. {
  19.         Timer_Init();
  20.         while(1);
  21. }

  22. void Timer0Interrupt() interrupt 1
  23. {
  24.         TL0 = 0xC0;                //設(shè)置定時(shí)初始值
  25.         TH0 = 0x63;                //設(shè)置定時(shí)初始值
  26.         LED1=~LED1;
  27. }

  28. void Timer1Interrupt() interrupt 3
  29. {
  30.         TL1 = 0x78;                //設(shè)置定時(shí)初始值
  31.         TH1 = 0x0c;                //設(shè)置定時(shí)初始值
  32.         LED2=~LED2;
  33. }
復(fù)制代碼




作者: wulin    時(shí)間: 2022-12-18 08:32
Hephaestus 發(fā)表于 2022-12-17 16:43
三張圖,上下兩張一樣,中間不一樣,2:1判斷中間錯(cuò)了。

恰恰相反,中間圖是對(duì)的。由于很少用到13位定時(shí)器,很多人對(duì)13位定時(shí)器的理解是想當(dāng)然。



作者: 芙蓉焊料    時(shí)間: 2022-12-18 09:35
wulin 發(fā)表于 2022-12-17 20:12
誰(shuí)是對(duì)的,仿真圖為證。下面是驗(yàn)證程序。

學(xué)習(xí)了,但是沒(méi)看懂
作者: Y_G_G    時(shí)間: 2022-12-18 17:35
8051的定時(shí)器是計(jì)數(shù)器加到65536就溢出,產(chǎn)生中斷和溢出
TH0和TL0是用來(lái)存放初始值的兩個(gè)寄存器
其它的自己計(jì)算就行了,實(shí)在不明白,看STC89C52的定時(shí)器章節(jié),里面有說(shuō)明




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1