⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.c

📁 使用AT89C52单片机
💻 C
字号:

//                    遥控发射器

//使用AT89C52单片机,12MHZ晶振,
//
//#pragma src(E:\remote.asm)
#include "reg51.h"
#include "intrins.h"     //_nop_();延时函数用
//
#define char unsigned char
#define int unsigned int
#define key0 P0              //键列线
#define key1 P1              //键行线
//
sbit  remoteout=P3^5;         // 遥控输出口
//
//
int i,j,m,n,k,s;
char keyvol;               //键值存放
char  code keyv[8]={1,2,4,8,16,32,64,128};
//
////
/*********1毫秒延时程序**********/
delay1ms(int t)
{
for(i=0;i<t;i++)
   for(j=0;j<120;j++)
   ;
}
//
//
/***********初始化函数**********/
clearmen()
{
remoteout=0;           //关遥控输出
IE=0x00;
IP=0x01;
TMOD=0x22;             //8位自动重装模式
TH1=0xf3;              //40KHZ初值
TL1=0xf3;
EA=1;                 //开总中断
}
//
//

//
/**********发射函数************/
sed()
{
ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;//40KHZ发3毫秒
for(m=keyvol;m>0;m--)
  {
   delay1ms(1);                                    //停1毫秒
   ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0;//40KHZ发1毫秒
  }
delay1ms(10);
}
//
tx()
{
switch(keyvol)
 {
  case 0:keyvol=keyvol+1;sed();break;
  case 1:keyvol=keyvol+1;sed();break;
  case 2:keyvol=keyvol+1;sed();break;
  case 3:keyvol=keyvol+1;sed();break;
  case 4:keyvol=keyvol+1;sed();break;
  case 5:keyvol=keyvol+1;sed();break;
  case 6:keyvol=keyvol+1;sed();break;
  case 7:keyvol=keyvol+1;sed();break;
  case 8:keyvol=keyvol+1;sed();break;
  case 9:keyvol=keyvol+1;sed();break;
  case 10:keyvol=keyvol+1;sed();break;
  case 11:keyvol=keyvol+1;sed();break;
  case 12:keyvol=keyvol+1;sed();break;
  case 13:keyvol=keyvol+1;sed();break;
  case 14:keyvol=keyvol+1;sed();break;
  case 15:keyvol=keyvol+1;sed();break;
  default:break;
 }
}
//
//
/**********键功能函数************/
keywork()
{
 keyvol=0x00;key1=0xf0;if(key0!=0xff)
 {delay1ms(20);if(key0!=0xff)
 {while(key0!=0xff);
  key1=0xfe;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i;tx();}}   }
  else{key1=0xfd;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+8;tx();}}   }}
 // key1=0xfb;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+16;tx();}}   }
 // key1=0xf7;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+24;tx();}}   }
  }
 }
}
//
//
/***********主函数***************/
main()
{
clearmen();          //初始化 
while(1)
 {
  keywork();       //按键扫描
  }
}
//
//
/*********40KHZ发生器***********/
//定时中断T1
void time_intt1(void) interrupt 3 
{
 remoteout=~remoteout;
}
//
//
//*********************结束**************************//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -