標(biāo)題: 程序調(diào)試沒問題,但是跟預(yù)想的功能不一樣中斷沒起作用,程序和連線圖都貼上來,求解答 [打印本頁(yè)]

作者: 機(jī)械小瘋子    時(shí)間: 2016-3-26 22:57
標(biāo)題: 程序調(diào)試沒問題,但是跟預(yù)想的功能不一樣中斷沒起作用,程序和連線圖都貼上來,求解答

#include<reg51.h>
#define unit unsigned int
#define uchar unsigned char
#define DutyCycle 200
sbit R=P2^1;
sbit L=P2^0;
sbit PWM=P2^2;
uchar flag=1;
uchar dida=0;
void turnClockwise()
{
R=1;
L=0;
}
void turnAntiClockwise()
{
R=0;
L=1;
}
void init()
{
TMOD=0x01;
IT0=1;
EX0=1;
PWM=1;
}
void int0() interrupt 0
{
flag=0;
}
void main()
{
init();
while(1)
   if(flag==1)
    turnAntiClockwise();
   else
    turnClockwise();
}
void time_0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dida++;
if(dida>=DutyCycle)
    PWM=0;
  else
    PWM=1;
if(dida==100)
    dida=0;
}

作者: jblbin2008    時(shí)間: 2016-3-27 22:36
你想達(dá)到啥功能呢??
作者: 迷戀520冬天    時(shí)間: 2016-3-28 00:48
功能要說明一下吧
作者: 暗光    時(shí)間: 2016-3-28 08:27
功能是不是,按鍵按下會(huì)切換正反轉(zhuǎn)?然后有PWM波控制轉(zhuǎn)速?沒大仔細(xì)看,中斷不起作用是因?yàn)槟阍趍ain中沒有開啟總中斷,EA=1;主要疑問有,你的外部中斷0那個(gè)地方1沒有上拉,2在程序里面沒有設(shè)置觸發(fā)方式是低電平觸發(fā)還是下降沿觸發(fā),還有設(shè)置的DutyCycle值為200,比100大,在定時(shí)器中斷中dida>DutyCycle,PWM波才給0,然而,當(dāng)dida=100后,你有把dida變成0了,等于永遠(yuǎn)也不會(huì)大于DutyCycle。PS,一夜沒睡,沒仔細(xì)看程序,回答的不對(duì)、沒看到的勿怪啊
作者: 機(jī)械小瘋子    時(shí)間: 2016-3-29 13:07
暗光 發(fā)表于 2016-3-28 08:27
功能是不是,按鍵按下會(huì)切換正反轉(zhuǎn)?然后有PWM波控制轉(zhuǎn)速?沒大仔細(xì)看,中斷不起作用是因?yàn)槟阍趍ain中沒有 ...

恩恩,謝謝啦,沒想到一個(gè)程序這么多錯(cuò)誤。我改了再試試




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