求大神解答:小輩不知道為什么這個程序藍牙無法觸發中斷(如果不出意外 這個程序的顯示為藍牙觸發舵機轉動 并在oled上顯示舵機轉動狀態)
#include "REG51.h"
#include "led.h"
#include "spi.h"
#include "bmp.h"
sbit SG_PWM=P2^0;
unsigned char count=0;
unsigned char PWM_count=1;
unsigned char order;
void Timer_Init()
{
TMOD=0X01;
TH0=0Xfe;
TL0=0X0c; //????????????0.5ms ?0.5ms????????ж?
ET0=1;
TR0=1;
EA=1;
}
void Timer() interrupt 1
{
TR0=0;
TH0=0Xfe;
TL0=0X0c;
if(count<=PWM_count)
{
SG_PWM=1;
}
else
{
SG_PWM=0;
}
count++;
if(count>=40)
{
count=0;
}
TR0=1;
}
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xF3;
TL1 = TH1;
PCON = 0x80;
EA = 1;
ES = 1;
TR1 = 1;
}
void UARTInterrupt(void) interrupt 4
{
LED_Toggle();
order=SBUF;
Timer_Init();
switch(order)
{
case '0':
LED_Toggle();
PWM_count=1;
count=0;
EA=1;
OLED_Clear();
OLED_Display_GB2312_string(1,0,"順時針45度");break;
case '1':
LED_Toggle();
PWM_count=0;
count=0;
EA=1;
OLED_Clear();
OLED_Display_GB2312_string(1,0,"順時針180度"); break;
case '2':
LED_Toggle();
PWM_count=3;
count=0;
EA=1;
OLED_Clear();
OLED_Display_GB2312_string(1,0,"順時針減90度");break;
case '3':
LED_Toggle();
PWM_count=1;
count=0;
EA=1;
OLED_Clear();
OLED_Display_GB2312_string(1,0,"順時針加90度");break;
default:break;
RI=0;
SBUF=order;
while(!TI)
TI=0;
}
void main(void)
{
float t=0;
Timer_Init();
InitUART();
OLED_Init();
OLED_ColorTurn(0)
OLED_DisplayTurn(0)
OLED_Clear();
}
|