標(biāo)題: 單片機(jī)藍(lán)牙小車(chē)的程序,中斷PWM與串口中斷在一起出錯(cuò) [打印本頁(yè)]

作者: 學(xué)子喲    時(shí)間: 2019-10-11 21:53
標(biāo)題: 單片機(jī)藍(lán)牙小車(chē)的程序,中斷PWM與串口中斷在一起出錯(cuò)

已經(jīng)做了快2周了。差程序。一個(gè)中斷PWM,一個(gè)串口中斷。兩個(gè)在一起不會(huì)寫(xiě)。。。前后是通過(guò)一個(gè)電機(jī)驅(qū)動(dòng),左右是通過(guò)舵機(jī)控制。,寫(xiě)的程序問(wèn)題好多。希望有大神指點(diǎn)迷津~~~
#include<reg52.h>

sbit pwm = P0^0;
sbit E1 = P2^0;
sbit E2 = P2^1;
sbit jia =P2^2;
sbit jan =P2^3;

unsigned char jd = 3;
unsigned char count;

void UART_int(unsigned char baud);
void Timer_int0();
void Init()
{  
  E1 = 0;
  E2 = 0;
  jd = 4;
  count = 0;
}

void QJ()
{
  E1 = 1;
  E2 = 0;
}
void HT()
{
  E1 = 0;
  E2 = 1;
}
void TZ()
{
  E1 = 0;
  E2 = 0;
}
void ZUO()
{     
    count = 0;      
      jd = 4;   
}
void YOU()
{  
    count = 0;      
      jd = 2;
}
void ZHONG()
{  
  count = 0;
  jd=3;
}


void main()
{
  Init();
  Timer_int0();
   UART_int(9600);

  while(1)
  {
      switch(SBUF)
    {
      case 'Q': QJ();   break;   
      case 'H': HT();   break;   
      case 'K': TZ();   break;
      case 'Z': ZUO();  break;
      case 'Y': YOU();  break;
      case 'T': ZHONG();break;

    }
  }
}

void UART_int(unsigned char baud)
{
  SCON = 0x50;
  TMOD |= 0x21;  
  TH1 = 256 - (11059200/12/32)/baud;  
  TL1 = TH1;
  ET1 = 0;   
  ES  = 1;
  TR1 = 1;
  EA  = 1;
}


void Timer_int0()
{

    TR0 =0;
    TH0 = 0xFE;
    TL0 = 0x33;
    ET0 = 1;
    TR0 = 1;           
}

void InterruptTimer1() interrupt 4
{
  if(RI)
  {
    RI = 0;
  }  
}

void InterruptTime0() interrupt 1
{
  TH0 = 0xFE;
  TL0 = 0x33;

  if(count<jd)
      pwm = 1;
  else
      pwm =  0;
  count = (count+1);
  count = count%40;
}

作者: 學(xué)子喲    時(shí)間: 2019-10-20 15:40
這個(gè)問(wèn)題還沒(méi)解決,,希望大佬們指點(diǎn)迷津!~~~
作者: wulin    時(shí)間: 2019-10-20 20:39
學(xué)子喲 發(fā)表于 2019-10-20 15:40
這個(gè)問(wèn)題還沒(méi)解決,,希望大佬們指點(diǎn)迷津!~~~

void UART_int(unsigned char baud)   baud的數(shù)據(jù)范圍0~255,溢出部分無(wú)效,只剩128。
應(yīng)改為void UART_int(unsigned int baud)

這樣改更好
void UART_int()
{  
  SCON=0x50;
  TMOD|=0X21;
  TH1=TL1=-(11059200L/12/32/9600);
  ET1 = 0;   
  ES  = 1;
  TR1 = 1;
  EA  = 1;
}
作者: 學(xué)子喲    時(shí)間: 2019-10-21 21:28
wulin 發(fā)表于 2019-10-20 20:39
void UART_int(unsigned char baud)   baud的數(shù)據(jù)范圍0~255,溢出部分無(wú)效,只剩128。
應(yīng)改為void UART_ ...

嗯,我試了。但是舵機(jī)依舊不能轉(zhuǎn)動(dòng)。是什么原因呢,望大佬解惑~




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