找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子

采用單片機(jī)定時(shí)器0的工作方式1寫一段5ms的延時(shí)函數(shù),請大家?guī)臀铱纯茨睦锍隽藛栴}?

查看數(shù): 2426 | 評論數(shù): 21 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
  • 1/19
  • 2/19
  • 3/19
  • 4/19
  • 5/19
  • 6/19
  • 7/19
  • 8/19
  • 9/19
  • 10/19
  • 11/19
  • 12/19
  • 13/19
  • 14/19
  • 15/19
  • 16/19
  • 17/19
  • 18/19
  • 19/19
發(fā)布時(shí)間: 2023-5-18 01:20

正文摘要:

一:問題描述 按照文中單片機(jī)代碼編譯下載后,P1口LED不閃爍,一直亮。然后通過Keil uVision5軟件仿真,延時(shí)時(shí)間也不是期望的0.5s。請大家?guī)臀铱纯词窃趺椿厥拢? 二:硬件環(huán)境 STC12C2052AD  //12MHz ...

回復(fù)

ID:645485 發(fā)表于 2023-5-19 16:01
ydatou 發(fā)表于 2023-5-19 09:14
軟件仿真使用stc芯片有問題,要改用通用芯片。
感謝你的話不知被我回復(fù)到哪里去了?我暈根據(jù)你的方法,問題解決了。再次感謝!
ID:645485 發(fā)表于 2023-5-19 15:10
tongguan123 發(fā)表于 2023-5-19 11:42
Really?這個(gè)我還真不知道!
再次感謝分享!
ID:645485 發(fā)表于 2023-5-19 14:15
wulin 發(fā)表于 2023-5-19 12:13
這個(gè)程序在實(shí)物上運(yùn)行沒有任何問題,AUXR &= 0x7F;也可以省略,其默認(rèn)就是12T。Keil軟件仿真STC1T單片機(jī) ...
再次感謝指導(dǎo)!
ID:77589 發(fā)表于 2023-5-19 14:11
好久沒用51了,圍觀一下
ID:213173 發(fā)表于 2023-5-19 12:13
tongguan123 發(fā)表于 2023-5-19 11:40
你好,大俠:        首先非常感謝你花時(shí)間回答我的問題,再次表示衷心的感謝!通過對你提供的代碼進(jìn)行編 ...

這個(gè)程序在實(shí)物上運(yùn)行沒有任何問題,AUXR &= 0x7F;也可以省略,其默認(rèn)就是12T。Keil軟件仿真STC1T單片機(jī)結(jié)果不一定符合實(shí)際。
ID:94253 發(fā)表于 2023-5-19 12:11
STC12C2052AD應(yīng)該是1T單片機(jī)吧,計(jì)數(shù)初值搞錯(cuò)了
ID:645485 發(fā)表于 2023-5-19 12:03
yzwzfyz 發(fā)表于 2023-5-19 09:28
1、定時(shí)器的時(shí)鐘源是晶振,所以需以根據(jù)晶振的頻率不計(jì)算時(shí)間常數(shù)。
2、while(TF0 != 1);         是等待 ...
首先感謝分享與幫助!我是最近學(xué)習(xí)學(xué)到定時(shí)器這里,想充分理解它,查詢功能和中斷功能都要學(xué)習(xí)。實(shí)際使用中,當(dāng)然會用定時(shí)器的中斷功能,這里使用的查詢功能,產(chǎn)生延時(shí)的效果,只是理解寄存器的相關(guān)配置。
1:定時(shí)功能的計(jì)數(shù)脈沖選擇的是內(nèi)部時(shí)鐘(或分頻、或不分頻)得到;
     計(jì)數(shù)功能的計(jì)數(shù)脈沖當(dāng)然是外部脈沖信號了。
2:定時(shí)器0的計(jì)數(shù)溢出標(biāo)志位TF0在計(jì)數(shù)溢出后,如果要產(chǎn)生延時(shí),需要軟件清零,然后再定義個(gè)循環(huán)變量,達(dá)到延時(shí)效果。
ID:645485 發(fā)表于 2023-5-19 11:48
ydatou 發(fā)表于 2023-5-19 09:14
軟件仿真使用stc芯片有問題,要改用通用芯片。

你以前處理過類似的問題嗎?
ID:645485 發(fā)表于 2023-5-19 11:45
lkc8210 發(fā)表于 2023-5-19 10:09
可能是Keil對STC12的速度有點(diǎn)誤會
設(shè)定500ms,仿真125ms,快了4倍
把12M改為3Mhz就行了
這是什么道理?以前有遇到過同類問題嗎???
ID:645485 發(fā)表于 2023-5-19 11:42
ydatou 發(fā)表于 2023-5-19 09:14
軟件仿真使用stc芯片有問題,要改用通用芯片。
Really?這個(gè)我還真不知道!
ID:161164 發(fā)表于 2023-5-19 10:09
可能是Keil對STC12的速度有點(diǎn)誤會
設(shè)定500ms,仿真125ms,快了4倍
把12M改為3Mhz就行了
ID:123289 發(fā)表于 2023-5-19 09:28
1、定時(shí)器的時(shí)鐘源是晶振,所以需以根據(jù)晶振的頻率不計(jì)算時(shí)間常數(shù)。
2、while(TF0 != 1);         是等待計(jì)數(shù)溢出位TF=1,是可以等到的,但它不會自動(dòng)清0,也即從此后一直為1。因?yàn)橐院蟮膚hile(TF0 != 1)會被路過。
3、是外話。這種程序方式延時(shí),嚴(yán)重占用CPU資源,與DELAY并無二樣,失去了定時(shí)器的設(shè)計(jì)初衷。
4、較好的做法是,將時(shí)常數(shù)計(jì)算并設(shè)計(jì)到5ms,起動(dòng)中斷。如此每5ms產(chǎn)生一次中斷,在中斷服務(wù)中做個(gè)標(biāo)記B5MS。主程序憑B5MS標(biāo)記處理事件,完成后清除B5MS標(biāo)記。如果處理的事件用時(shí)不長,如僅開關(guān)一個(gè)燈�?梢圆挥肂5MS標(biāo)記,而直接在中斷服務(wù)程序中處理。
ID:1073939 發(fā)表于 2023-5-19 09:14
軟件仿真使用stc芯片有問題,要改用通用芯片。

評分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

ID:213173 發(fā)表于 2023-5-18 20:54
tongguan123 發(fā)表于 2023-5-18 18:41
頂啥呢,有時(shí)間幫我看看嘍,分析一下,我是真沒轍了。先感謝一下!

樓主這個(gè)定時(shí)器用法是哪個(gè)老師教的?
  1. #include <STC12C2052AD.H>

  2. void Timer0Init(void)                //5毫秒@12.000MHz
  3. {
  4.         AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
  5.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  6.         TMOD |= 0x01;                //設(shè)置定時(shí)器模式
  7.         TL0 = 0x78;                //設(shè)置定時(shí)初始值
  8.         TH0 = 0xEC;                //設(shè)置定時(shí)初始值
  9.         TF0 = 0;                //清除TF0標(biāo)志
  10.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  11. }


  12. //以下是主程序
  13. void main()
  14. {
  15.         unsigned char num;
  16.         Timer0Init();
  17.         while(1)
  18.         {
  19.                 if(TF0)
  20.                 {
  21.                         TF0=0;
  22.                         TL0 = 0x78;                //設(shè)置定時(shí)初始值
  23.                         TH0 = 0xEC;                //設(shè)置定時(shí)初始值
  24.                         num++;
  25.                         if(num==100)
  26.                         {
  27.                                 num=0;
  28.                                 P1=~P1;//P1口取反
  29.                         }
  30.                 }       
  31.         }
  32. }
復(fù)制代碼
ID:645485 發(fā)表于 2023-5-18 18:41
頂啥呢,有時(shí)間幫我看看嘍,分析一下,我是真沒轍了。先感謝一下!
ID:301191 發(fā)表于 2023-5-18 17:37
頂一下

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

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

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