#include <reg52.h>
#include <stdio.h>
#define uint unsigned int
uint i=0;
sbit p2_6=P2^6;
void main()
{
TMOD=0x02; /*定時(shí)器工作在模式2*/
IT0=1;
EX0=1;
ET0=1;
TH0=249; /*初始化定時(shí)器*/
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)閉定時(shí)器中斷*/
i++; /*每進(jìn)入一次外部中斷改變一次i的值*/
}
void timer0() interrupt 1
{
p2_6=!p2_6; /*發(fā)送頻率*/
}
我想實(shí)現(xiàn)的效果是當(dāng)我不給外部0中斷時(shí)p2.6口不會(huì)發(fā)射頻率,當(dāng)我給一個(gè)INT0口一個(gè)下降沿跳變時(shí),定時(shí)器開始工作通過(guò)定時(shí)器中斷來(lái)實(shí)現(xiàn)40k頻率波的發(fā)射。當(dāng)我再次給一個(gè)INT0口一個(gè)下降沿跳變時(shí),P2.6口停止頻率的發(fā)射。但是我現(xiàn)在出現(xiàn)的情況是有時(shí)候情況是正常的,即我給它一個(gè)外部中斷它就會(huì)從一個(gè)狀態(tài)轉(zhuǎn)換為另一個(gè)狀態(tài),有時(shí)候要給INT0口幾次下降沿跳變才會(huì)從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)。請(qǐng)大家?guī)臀铱纯催@個(gè)程序的問(wèn)題出現(xiàn)在哪?該怎么解決?
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |