亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 要做一個(gè)單片機(jī)脈沖計(jì)數(shù)器。結(jié)果無論如何就是不成功 [打印本頁]

作者: guysxpf    時(shí)間: 2020-9-19 21:49
標(biāo)題: 要做一個(gè)單片機(jī)脈沖計(jì)數(shù)器。結(jié)果無論如何就是不成功
本來設(shè)計(jì)要做了個(gè)ADC電路,實(shí)驗(yàn)挺成功的。下一步要做一個(gè)脈沖計(jì)數(shù)器。結(jié)果無論如何就是不成功。

先聲明,我自己做了NE555方波發(fā)生器。50%固定占空,頻率從 0.72Hz ~ 72kHz 可調(diào)產(chǎn)生出來的波形送給51單片機(jī)P34引腳。雖然樣子丑了點(diǎn),但是功能完全正常。

單片機(jī)型號(hào)為STC8A8K64S4A12所有的測(cè)試都做過了。先寫了一個(gè)簡(jiǎn)單代碼,就是檢測(cè)外部脈沖,LED跟著閃爍就行



測(cè)試結(jié)果完全正常,說明準(zhǔn)雙向口輸入輸出均正常。


但下面妖魔鬼怪就來了。
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sbit    P05         =   P0^5;

  4. void TM0_Isr() interrupt 1
  5. {
  6.     P05 = !P05;                                 //測(cè)試端口
  7. }

  8. void main()
  9. {
  10.     TMOD = 0x04;                                //外部計(jì)數(shù)模式
  11.     TL0 = 0x08;
  12.     TH0 = 0x00;
  13.     TR0 = 1;                                    //啟動(dòng)定時(shí)器
  14.     ET0 = 1;                                    //使能定時(shí)器中斷
  15.     EA = 1;

  16.     while (1);
  17. }
復(fù)制代碼

這段程序可不是我寫的,是人家STC官方的范例程序,只是測(cè)試端口
修改為P05,計(jì)數(shù)次數(shù)改成了8次。然后就沒有然后了,我已無法用語言形容。更可恨的是換成定時(shí)器1、定時(shí)器2、定時(shí)器3、定時(shí)器4都不能正常計(jì)數(shù)。甚至連芯片都換了也白搭。

我已無法用見了鬼來形容了,無語了,詞窮了。

請(qǐng)各路大神來賜教一下吧,謝謝啦。

51hei圖片_20200919213659.jpg (72.43 KB, 下載次數(shù): 120)

51hei圖片_20200919213659.jpg

51hei圖片_20200919213705.jpg (69.34 KB, 下載次數(shù): 115)

51hei圖片_20200919213705.jpg

作者: angmall    時(shí)間: 2020-9-20 09:19
你是怎么測(cè)試的? 就說不成功

作者: laoshu2521    時(shí)間: 2020-9-20 10:10
親,你的定時(shí)器都沒有初始化,時(shí)鐘都沒設(shè)定。另外你要檢測(cè)555定時(shí)器的輸出脈沖的話,代碼不是這么寫的。需要用捕獲模式,中斷函數(shù)里面也不對(duì)。你這段代碼即使把定時(shí)器設(shè)好了,也是上電閃幾次燈的事情,可能太快眼睛都看不見。
作者: wulin    時(shí)間: 2020-9-20 10:39
本帖最后由 wulin 于 2020-9-20 17:33 編輯

定時(shí)器初值錯(cuò)誤,應(yīng)該是65536-8=65528=0xFFF8,中斷中也要重新賦初值FFF8。
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sbit P05=P0^5;

  4. void TM0_Isr() interrupt 1
  5. {
  6.     P05=!P05;                                 //測(cè)試端口
  7.     TL0 = 0xf8;
  8.     TH0 = 0xff;
  9. }

  10. void main()
  11. {
  12.     TMOD = 0x04;                                //外部計(jì)數(shù)模式
  13.     TL0 = 0xf8;
  14.     TH0 = 0xff;
  15.     TR0 = 1;                                    //啟動(dòng)定時(shí)器
  16.     ET0 = 1;                                    //使能定時(shí)器中斷
  17.     EA = 1;

  18.     while (1);
  19. }
復(fù)制代碼

作者: luchenzhijia    時(shí)間: 2020-9-20 15:47
好像有問題,稍后看看
作者: taotie    時(shí)間: 2020-9-20 18:24


#include <reg51.h>
#include <stdio.h>


#include "intrins.h"

sbit    P05         =   P0^5;

void TM0_Isr() interrupt 0
{
    P05 = ~P05;                                 //測(cè)試端口
}

void main()
{
  EA =1;
        EX0 =1;
        IT0= 1;

    while (1);

}


作者: guysxpf    時(shí)間: 2020-9-20 20:49
本帖最后由 guysxpf 于 2020-9-20 20:52 編輯
wulin 發(fā)表于 2020-9-20 10:39
定時(shí)器初值錯(cuò)誤,應(yīng)該是65536-8=65528=0xFFF8,中斷中也要重新賦初值FFF8。

我明白了,謝謝,定時(shí)器是從設(shè)定值累加到FF。看來是當(dāng)時(shí)學(xué)的原理都忘光了。
學(xué)習(xí)了,謝謝您!

作者: guysxpf    時(shí)間: 2020-9-20 20:51
laoshu2521 發(fā)表于 2020-9-20 10:10
親,你的定時(shí)器都沒有初始化,時(shí)鐘都沒設(shè)定。另外你要檢測(cè)555定時(shí)器的輸出脈沖的話,代碼不是這么寫的。需 ...

我的代碼不是自己寫的,是STC官方給的,簡(jiǎn)單改了改。

不過問題已經(jīng)有另外兩個(gè)大神解答了,不過還是謝謝您
作者: guysxpf    時(shí)間: 2020-9-20 21:02
wulin 發(fā)表于 2020-9-20 10:39
定時(shí)器初值錯(cuò)誤,應(yīng)該是65536-8=65528=0xFFF8,中斷中也要重新賦初值FFF8。

初值的定義我理解錯(cuò)了,謝謝指正。。

可是是有一點(diǎn)我不太理解,我選的是自動(dòng)重載模式,但,您說“中斷函數(shù)里面要重新賦初值FFF8”,已經(jīng)自動(dòng)重載了還有這個(gè)必要嗎?
作者: guysxpf    時(shí)間: 2020-9-20 21:02
taotie 發(fā)表于 2020-9-20 18:24
#include
#include

太詳細(xì)了,謝謝您
作者: wulin    時(shí)間: 2020-9-21 06:00
guysxpf 發(fā)表于 2020-9-20 21:02
初值的定義我理解錯(cuò)了,謝謝指正。。

可是是有一點(diǎn)我不太理解,我選的是自動(dòng)重載模式,但,您說“中斷 ...

已經(jīng)設(shè)置自動(dòng)重載模式就不需在中斷函數(shù)里面重新賦初值。
作者: guysxpf    時(shí)間: 2020-9-21 11:18
wulin 發(fā)表于 2020-9-21 06:00
已經(jīng)設(shè)置自動(dòng)重載模式就不需在中斷函數(shù)里面重新賦初值。

OK




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