找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[求助]關(guān)于控制頻率輸出的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:7020 發(fā)表于 2009-2-5 13:07 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
我寫的這個程序想實(shí)現(xiàn)的效果是通過外部中斷0的下降沿觸發(fā)方式實(shí)現(xiàn)P2.6口40k頻率的發(fā)射和停止。(端口低電平有效)

#include <reg52.h>
#include <stdio.h>
#define uint unsigned int
uint i=0;
sbit p2_6=P2^6;
void main()
{
TMOD=0x02; /*定時器工作在模式2*/
 IT0=1;
 EX0=1;
 ET0=1;
 TH0=249;   /*初始化定時器*/
 TL0=249;
 EA=1;
 while(1)
 {
  if(i%2==1) /*用i的值決定開始還是停止發(fā)送40k的頻率*/
   {
    TR0=1;
   }
else

    p2_6=1;
 }
}


void extern_int0() interrupt 0
{
 TR0=0;  /*進(jìn)入外部中斷首先關(guān)閉定時器中斷*/
 i++;      /*每進(jìn)入一次外部中斷改變一次i的值*/
}

void timer0() interrupt 1
{
 p2_6=!p2_6;   /*發(fā)送頻率*/
}

我想實(shí)現(xiàn)的效果是當(dāng)我不給外部0中斷時p2.6口不會發(fā)射頻率,當(dāng)我給一個INT0口一個下降沿跳變時,定時器開始工作通過定時器中斷來實(shí)現(xiàn)40k頻率波的發(fā)射。當(dāng)我再次給一個INT0口一個下降沿跳變時,P2.6口停止頻率的發(fā)射。但是我現(xiàn)在出現(xiàn)的情況是有時候情況是正常的,即我給它一個外部中斷它就會從一個狀態(tài)轉(zhuǎn)換為另一個狀態(tài),有時候要給INT0口幾次下降沿跳變才會從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)。請大家?guī)臀铱纯催@個程序的問題出現(xiàn)在哪?該怎么解決?

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

使用道具 舉報

沙發(fā)
ID:2162 發(fā)表于 2009-2-22 00:39 | 只看該作者
當(dāng)下降沿中斷在定時器正處理中斷的時候觸發(fā)就會出問題,該成低電平觸發(fā)試下
如果要再完美點(diǎn)就在頻率輸出后,再啟動前重裝定時器初值
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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