一鼓作气,再发个三星S3F9454做的红外遥控.9454这个芯片很是便宜,简单场合的应用,还是没问题的.这个方案中,只用到3个按键,一个红外发射功能.三个按键使用1*3的方式,中断口读取按键状态,后面要用到低功耗,所以这样的配置很有用意的.
硬件配置: MCU:S3F9454,T0作载波输出,PWM做定时器, 外部时钟:4MHz,
红外编码结构参考上一篇.
T0和PWM的初始化代码如下:
//CA:Enable INT,
T0CON = 0xC8;
T0DATA = 0x34;
PWMCON = 0x5E;
PWMDATA = 0x80;
红外载波输出时,P2.0(T0 输出)的控制代码:
#define PWM_INVALID() P2CONL=0x0A;P2|=0x01; //空置状态,IO模式输出1
#define PWM_VALID() P2CONL=0x0B; //载波模式,IO输出38KHz方波
低功耗设计:在正常待机模式下,单片机控制键盘扫描口输出全低,使能中断唤醒,然后使用STOP命令进入该模式,这样在待机模式下的电流也之后几个uA. 当有按键按下时, 中断触发唤醒单片机, 这时再把中断关闭, 进入正常程序中扫描按键. 发码结束后, 延时一段时间, 再次进入stop模式.