关于单片机通过蓝牙串口调pwm的问题

关于单片机通过蓝牙串口调pwm的问题,想弄个蓝牙串口调pwm的程序,pwm输出接的是开发板上LED灯,发现单独的pwm程序没问题,单独的蓝牙也能正常控制,可是两个程序加起来后,LE…

关于单片机通过蓝牙串口调pwm的问题,想弄个蓝牙串口调pwm的程序,pwm输出接的是开发板上LED灯,发现单独的pwm程序没问题,单独的蓝牙也能正常控制,可是两个程序加起来后,LED灯变得一闪一闪的,根本不是正常pwm输出的现象,也没法用手机控制,不知道是程序的问题,还是定时器0中断和串口中断优先级的问题?用的是stc89c52的单片机,是不是pwm得用定时器2,才能用蓝牙正常控制呢。。

单片机源程序如下:

  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit pwm_out = P1^0;
  5. uint num = 200;
  6. uint pwm = 0;
  7. void UART_Init()
  8. {
  9.         SM0 = 0;
  10.         SM1 = 1;
  11.         REN = 1;
  12.         EA = 1;
  13.         ES = 1;
  14.         TMOD = 0x20;
  15.         TH1 = 0xfd;
  16.         TL1 = 0xfd;
  17.         TR1 = 1;;
  18. }
  19. void time0int()
  20. {
  21.         TMOD = 0x02;
  22.         TH0 = 220;
  23.         TL0 = 220;
  24.         TR0 = 1;
  25.         EA = 1;
  26.         ET0 = 1;
  27. }
  28. void time0() interrupt 1
  29. {
  30.         TR0 =0;
  31.         TH0 = 220;
  32.         TL0 = 220;
  33.         pwm++;
  34.         if(pwm == 500)
  35.         pwm_out = pwm = 0;
  36.         if(num == pwm)
  37.         pwm_out = 1;
  38.         TR0 = 1;
  39. }
  40. void UART() interrupt 4
  41. {
  42.         if(RI)
  43.         {
  44.                 RI = 0;
  45.                 switch(SBUF)
  46.                 {
  47.                         case 0x02: if(num<=450) num+=50; break;
  48.                         case 0x01: if(num >50); num-=50;; break;
  49.                 }        
  50.         }        
  51. }
  52. void main()
  53. {
  54.         time0int();
  55.         UART_Init();
  56.         while(1);
  57. }

复制代码

作者: soufei

为您推荐


Fatal error: Can't use function return value in write context in /www/wwwroot/www.qianrushi.com.cn/wp-content/themes/news/footer.php on line 115