c语言分频程序,急,求大神写一个发射38KHZ的C语言程序

本文档介绍了使用PwmInit函数配置PWM模块,用于红外信号的发送控制。重点讲解了IrSendBegin和IrSend函数,涉及红外编码解析、定时器控制和CCP寄存器操作,适用于嵌入式系统或物联网设备的红外通信实现。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

void PwmInit() { //AD_IR_SEND=0; RW_IR_SEND=1; TMR2ON=0; PR2=73; TMR2IF=0; TMR2IE=0; P1M1=0; P1M0=0; CCP1M3=1; CCP1M2=1; CCP1M1=0; CCP1M0=0; CCPR1L=24; DC1B1=1; DC1B0=0; TMR2ON=1; }

void IrSendBegin(){if(IR_Code_Send){IR_Code_Send=0;if(Num_Pointer==&Num_Page_B){I2cPageRead((Num_Pointer->Value)*512,512,(unsigned char*)IR_Length_Pluse);if(IR_Length_Pluse[254]==0xfd&&IR_Length_Pluse[255]==0x02){IR_State_Send=1;IR_Num_Send=0;WRITE_LED_IR_SENDING=0;Ccp5ModeChange(CCP5_NORMAL_GPIO);TMR1ON=0;TMR1IF=0;TMR1H=0;TMR1L=0;CCPR5H=(unsigned char)(IR_Length_Pluse[IR_Num_Send]>>8);CCPR5L=(unsigned char)IR_Length_Pluse[IR_Num_Send];IR_Num_Send++;Ccp5ModeChange(CCP5_COMPARE_REVERSE);RW_IR_SEND=0;TMR1ON=1;}}}}

void IrSend(){unsigned int Temp_Send;RW_IR_SEND=!RW_IR_SEND;if((IR_Length_Pluse[IR_Num_Send]!=0)&&(IR_Num_Send<256)){Temp_Send=(CCPR5H<<8)+CCPR5L+IR_Length_Pluse[IR_Num_Send];CCPR5H=Temp_Send>>8;CCPR5L=Temp_Send;IR_Num_Send++;}else{Ccp5ModeChange(CCP5_CAPTURE_DOWN);WRITE_LED_IR_SENDING=1;RW_IR_SEND=1;IR_State_Send=0;}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值