登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看1805|回2|收藏
楼主 ID:892737 只看他
2021-8-12 11:07
大家好,我想问一下关于使用stm32f103c6t6制作遥控器的问题使用的按键在key.c和key.h中,使用的中断3发送数据

这个遥控器它发送不出数据,希望大佬可以帮忙改一下或者提一些调试建议,谢谢。
附件列表

blueteeth.7z (2021-8-12 17:02 上传)

193.68 KB, 下载次数: 9

32遥控器程序

沙发 ID:387856 只看他
2021-8-12 17:36
用STM32做遥控器啊,杀鸡用牛刀啊
板凳 ID:892737 只看他
2021-8-12 19:39

引用:

liuhailan5757 发表于 2021-8-12 17:36
用STM32做遥控器啊,杀鸡用牛刀啊

用51做不出来了,太难了,这个是51的代码,写了没用

代码:

  1. unsigned int receive;
  2. void UART_Init(void)
  3. {
  4.           PCON &= 0x7F;                //波特率不倍速
  5.     SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
  6.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装
  7.     TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz  
  8.                 TL1   = 0xFD;   
  9.                 TR1   = 1;                  // TR1:  timer 1 打开                        
  10.                 SM0=0;
  11.                 SM1=1;
  12.                 REN=1;                  //打开总中断
  13.                 ES= 1;                  //打开串口中断
  14.           TI=0;                                                //正常的话应该是TI        =        1;但是为了控制接收先置‘0’;
  15. }
  16. unsigned char num ;

  17. void com_UART0() interrupt 4
  18. {
  19.         EA=0;
  20.                 if(RI==1)
  21.     {
  22.     }
  23.        
  24.     if (TI)
  25.     {
  26.                
  27.     }
  28.                    EA    = 1;
  29. }

  30. unsigned int qwe=0x00;
  31. void main()
  32. {
  33.         UART_Init();
  34.         while(1)
  35.         {
  36.                 num=KeyScan();
  37.                 if(num!=qwe)
  38.                 {
  39.                         qwe=num;
  40.                         if(TI==1)
  41.                         {
  42.                                 SBUF = num;
  43.                                 TI=0;
  44.                         }
  45.                 }
  46.         }
  47. }

代码:

  1. #include "delay.h"
  2. #define key1 P1     //1111 1111
  3. #define key2 P2                //1111 11   P30:RXD   P31:TXD


  4. //extern u8 fx;
  5. /*-----------------------------------------------
  6.        按键扫描函数,返回扫描键值
  7. ------------------------------------------------*/
  8. unsigned char KeyScan(void)
  9. {
  10.           
  11.          if(key1!=0xff)
  12.                 {
  13.                        
  14.                          switch(key1)           //1111 1111
  15.                                 {
  16.                                  case 0xfe:return 0x31;break;                //left
  17.                                  case 0xfd:return 0x32;break;                //right
  18.                                  case 0xfb:return 0x33;break;                //left
  19.                                  case 0xf7:return 0x34;break;                //right
  20.                                        
  21.                                  case 0xef:return 0x35;break;                //duoji 1
  22.                                  case 0xdf:return 0x36;break;
  23.                                  case 0xbf:return 0x37;break;                //duoji 2
  24.                                  case 0x7f:return 0x38;break;
  25.                                 }
  26.                                 while(key1!=0xff);
  27.                 }
  28.                  if(key2!=0xff)
  29.                 {
  30.                                 switch(key2)           //0011 1111
  31.                                 {
  32.                                  case 0xfb:return 0x39;break;    //duoji 3
  33.                                  case 0xf7:return 0x40;break;       
  34.                                  case 0xef:return 0x41;break;                //duoji 4  (夹球)
  35.                                  case 0xdf:return 0x42;break;     //         (放球)
  36.                                 }
  37.                                 while(key2!=0xff);
  38.                 }

  39.    return 0;
  40. }

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版