#includeirremote.h
voidmain(void)
{
//初始化
initialize();
//死循环
while(1)
{
unsignedinttransmit;
//初始化变量
transmit=endtransmit;
//等待按键按下
setforpress();
//进入lpm4模式
lpm4;
debounce();
//扫描键盘
keyscan();
//键盘处理
keylookup();
if(error_flags==0)
{
//有键按下的情况
setupforrelease();
do
{
//传输数据(rc5码)
transmit();
transmit=testretransmit();
//延时
delaytonexttransmit();
}while(transmit==retransmit);
}
}
}
voidinitialize(void)
{
//停止看门狗
wdtctl=wdtpw+wdthold;
//p2口为输出
p2dir=0xff;
//p2.3为ta1功能管脚
p2sel=0x08;
//清除p2口的输出
p2out=0;
//设置dco频率为1mhz
dcoctl=caldco_1mhz;
bcsctl1=calbc1_1mhz;
//使能中断
_eint();
}
voidsetforpress(void)
{
//p1.0和p1.1为输入
p1dir=0xfc;
//清除p1口的输出,下拉
p1out=0;
//使能p1.0和p1.1的电阻
p1ren|=0x03;
//使能键盘
p2out|=0x07;
//低到高中断方式
p1ies&=~0x03;
//清除中断标志
p1ifg=0;
//使能中断
p1ie|=0x03;
//清除错误标志
error_flags=0;
//清除传输标志
trans_flags=0;
}
voiddebounce(void)
{
//smclk/8,清除ta
tactl=tassel1+taclr+id0+id1;
//使能ccr0中断
tacctl0=ccie;
//设置延时的值
taccr0=5000-1;
//开始up模式
tactl|=mc0;
//进入lpm0模式
lpm0;
//停止并清除ta
tactl=taclr;
//清除cctl0寄存器
tacctl0=0;
}
voidkeyscan(void)
{
unsignedinti;
//初始化行
rowmask=0x01;
keyhex=0;
//清除行的值
p1out&=~0x03;
for(i=0;i
2023世亚软博会为您解读:一季度软件业务收入增长13.5%
苏宁易购回购公司股份发布公告
剖析游戏掌机的元器件选型
SiC与GaN,谁拥有更广阔的星辰大海?
Keysight安捷伦N5772A直流电源1560W
MSP430单片机按键中断程序
区分电磁加热器全桥与半桥控制板?
溶解氧传感器的正确打开方式
客户削减项目开发预算,试试华为云这款轻量应用服务器保质保量
iPhone8新品京东首发 9月13日凌晨开启预约
基于Arduino和GPS模块构建女性安全手环
影响高低温试验机制冷效果的因素
华为端到端NVMe over RoCE增强方案亮相,打造高性能算力的高速公路
射极跟随器有什么性能和特点
广州新中轴照明 完美夜景闪亚运
金士顿u盘价格,最大容量U盘2TB打折之后还要1.1万
奇异值分解和矩阵分解傻傻分不清楚?一文帮你理清两者差异!
真我GT Neo3下周公测realme UI 4.0
芯科科技入围中国物联网行业年度评选的多个奖项
半导体先进陶瓷材料研究所落户江苏泰兴高新区