找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5210|回复: 5
打印 上一主题 下一主题
收起左侧

单片机模拟EV1527的发射程序,输出是错的

[复制链接]
跳转到指定楼层
楼主


图上红色是keil 仿真输出,蓝色是是实际输出,keil仿真是我想要的,但输出是错的不知道为什

单片机源程序
  1. #include<STC8.h>
  2. #define T_SYN_H 1 //发送状态1 发送同步码高电平,存储同步码高电平脉宽
  3. #define T_SYN_L 2 //发送状态3 发送同步码低电平,
  4. #define T_DATA_H 3 //发送状态3 发送数据码高电平,
  5. #define T_DATA_L 4 //接收状态4 发送数据码低电平,
  6. sbit RF_T =P3^4; //发射端口


  7. struct RF_Code
  8. {

  9. unsigned int y;
  10. unsigned char x2;
  11. };

  12. struct RF_Code RF_Send_Code={42405,2};
  13. unsigned char Send_Times=0;

  14. bit RF_T0_Send(struct RF_Code *SendCode)
  15. {
  16. static unsigned char RF_T_Step;
  17. static unsigned char i; //i发送编码的字节数,j发送取位辅助变量,每次发射完成重新清零
  18. static unsigned char j;
  19. //static bit abit; static bit bbit;
  20. //Lcd_Show_Str(50,28,Num2Str(RF_T_Step,2,0),WHITE,BLUE,1); //测试 f(i==1)
  21. switch (RF_T_Step)
  22. {

  23. case T_SYN_H:
  24. //RF_R_STOP;
  25. P34=1; //同步码高电平
  26. TL0 = 0x66; //8F FE 0.2ms@22.1184
  27. TH0 = 0xFC; //66 FC 0.5ms
  28. RF_T_Step=T_SYN_L;
  29. i=0;
  30. j=0x80;

  31. break;

  32. case T_SYN_L:
  33. P34=0; //同步码低电平
  34. TL0 = 0x66; //5C D3 6.2ms@22.1184
  35. TH0 = 0x90; //66 90 15.5ms
  36. RF_T_Step=T_DATA_H;


  37. //RF_T_Step=T_SYN_H ;
  38. break;

  39. case T_DATA_H:
  40. P34=1; //数据码高电平
  41. //abit=(((unsigned char *)SendCode)[i]) & j ;
  42. if( (((unsigned char *)SendCode)[i]) & j )

  43. {
  44. TL0 = 0x33; //AE FB 600us@22.1184
  45. TH0 = 0xF5; //33 F5 1500us
  46. }
  47. else
  48. {
  49. TL0 = 0x66; //8F FE 200us@22.1184
  50. TH0 = 0xFC; //66 FC 500US

  51. }
  52. RF_T_Step=T_DATA_L;
  53. //lcdShowChar(50,28,'3',WHITE,BLUE,1);
  54. break;

  55. case T_DATA_L:
  56. P34=0; //数据码低电平
  57. //bbit=(((unsigned char *)SendCode)[i]) & j ;
  58. if( (((unsigned char *)SendCode)[i]) & j ) //(((unsigned char *)SendCode)[i-1]) & j
  59. {
  60. TL0 = 0x66; //8F FE 200us@22.1184
  61. TH0 = 0xFC; //66 FC 500US
  62. }
  63. else
  64. {
  65. TL0 = 0x33; //AE FB 600ms@22.1184
  66. TH0 = 0xF5; //33 F5 1500us

  67. }
  68. j >>=1;

  69. if(!j)
  70. {i++;
  71. j=0x80;
  72. }
  73. RF_T_Step = T_DATA_H;
  74. break;


  75. default:
  76. RF_T_Step = T_SYN_H;
  77. WDT_CONTR |=0x10; //喂狗
  78. break;
  79. }
  80. if(i==sizeof(*SendCode))
  81. { RF_T_Step = T_SYN_H; return 1; } // RF_T_Step = T_DATA_H;
  82. else { return 0;} //测试 f(i==1)
  83. }


  84. void Timer0Init(void) //10毫秒@22.1184MHz
  85. {
  86. //IPH |=0x08; IP |=0x00; //提到3级
  87. AUXR &= 0x7F; //定时器时钟12T模式(cpu12分频)
  88. TMOD &= 0xF0; //设置定时器模式 T0GATE=0,T0_C/T=0,T0M1=0,T0M0=0;16位自动重装模式
  89. TL0 = 0x00; //设置定时初值
  90. TH0 = 0x00; //设置定时初值

  91. TF0 = 0; //清除TF0标志
  92. // TR0 = 1; //定时器0开始计时
  93. }



  94. void main()
  95. {
  96. unsigned long *ll ;
  97. ll=(unsigned long*)&RF_Send_Code;
  98. Timer0Init();
  99. ET0=1;//使能定时器0中断

  100. EA=1;

  101. P3M1 &=0XEF; P3M0 |=0X10; //推挽输出
  102. P34=0;
  103. //TL0=0XF0; TH0=0XFF; TR0=1;
  104. while(1)
  105. {
  106. if(!Send_Times) {Send_Times=15;TL0=0XF0; TH0=0XFF; TR0=1; }
  107. }
  108. }


  109. void Timer0_Isr() interrupt 1 //10毫秒@22.1184MHz
  110. {
  111. TF0 = 0; //清除TF0标志
  112. //lcdShowCC(140,5,"信",RED,GBLUE,1);//信号符号,不是‘信’ 字 测试
  113. if(Send_Times)
  114. {
  115. if(RF_T0_Send(&RF_Send_Code)) Send_Times--;
  116. //Lcd_Show_Str(50,28,Num2Str(Send_Times,2,0),WHITE,BLUE,1); //测试
  117. }
  118. else
  119. {
  120. RF_T=0;
  121. TR0=0; //发送完毕,停止Timer0
  122. //lcdShowCC(140,5,"信",BLACK,GBLUE,1);//信号符号,不是‘信’ 字 测试

  123. }

  124. }

复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:138119 发表于 2019-1-30 08:41 | 只看该作者
楼主先说明一下问题,是因为相位反了吗?
回复

使用道具 举报

板凳
ID:218365 发表于 2019-2-16 19:35 | 只看该作者
yfpc2006 发表于 2019-1-30 08:41
楼主先说明一下问题,是因为相位反了吗?

相位反了,
我用软件延时发送,就不会反相位
回复

使用道具 举报

地板
ID:236699 发表于 2019-10-30 22:39 | 只看该作者
发射与接收的模块厂家批次不同,有的会同时多个三极管,有的同时少个三极管,有的发射有、接收没有,有的发射没有、接收有。改一下输出的正负逻辑就行。  原厂的遥控发射一般都多一个三级管取反,T宝上的几元的发射小板就少一个三级管!
回复

使用道具 举报

5#
ID:218365 发表于 2020-1-4 20:07 | 只看该作者
ztb096001 发表于 2019-10-30 22:39
发射与接收的模块厂家批次不同,有的会同时多个三极管,有的同时少个三极管,有的发射有、接收没有,有的发 ...

嗯,认同您的说法,谢谢
回复

使用道具 举报

6#
ID:65237 发表于 2020-4-10 21:01 | 只看该作者
学习中 EV1527
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表