高手指导下 中断问题
p1_7------p1_7/CNTR00/INT10
//INT1 初始化
cntrsel=0; //int10位INT1的输入脚
r0edg=1; //下降沿 RXDHW
int1ic=0x06; //6级中断
p1=0x97;
pd1=0x7b;
void _int1(void)
{
//ir_int1ic=0; /*清中断请求*/
//tc=416; //set count
// tm0=833-1;
tm0=416;
rxd_bit=ONEBIT;
Int1_stop();
TimerC_cmp0_start();
}
怎么中断没触发直接就进去了 不知道什么问题
I/O对应的就是上面对应的脚
关键词: 高手 指导下 中断 问题
//INT0 初始化
int0pl=0; //单边沿
int0f=0X03; //有滤波器 F32采样
inostg=0; //禁止单次触发模式
pol_int0ic=1; //上升沿触发
int0en=1; //允许INT0输入
int0ic=0x17; //7级中断
//INT1 初始化
cntrsel=0; //int10位INT1的输入脚
r0edg=1; //下降沿 RXDHW
int1ic=0x06; //6级中断
//INT3 初始化
tcc06=1; //在INT3输入时序产生
tcc07=0; //选取INT3中断
tcc10=1; //有滤波F32
tcc11=1;
tcc03=1; //下降沿
tcc04=0;
int3ic=1; //1级中断
我的是R8CR5R0C002单片机
帮忙看下 我的外部中断初始化正确不 谢谢
我觉得你的INT初始化好像没有什么问题,倒是上面的端口设定很奇怪
p1=0x97;
pd1=0x7b;
如果把p1_7设为输入的话,就不用设定p1的初值了吧,如三楼所说,你的p1_7管脚上的初始电平是什么呢?
此外,中断处理程序是按照这种格式设定的吗?
#pragma INTERRUPT _int1
void _int1(void);
哦
我的目的是想用P1_7--外中断1,红外接收
P1_6---红外输出 P1_3-----38K
做一个I/O口模拟红外。
我现在中断能进去了 是我有地方设置重复了
我用的是定时器C来控制波特率1200
要实现错半位读P1_7的电平输入
我现在定时器设置有疑问
定时器初值是 tm0=6666;
在外中断中触发定时器C cmp0比较接收
#pragma interrupt _int1(vect=25)
void _int1(void);
void _int1(void)
{
tm0=3333; //请问这个值怎么设置?
rxd_bit=ONEBIT;
Int1_stop();
TimerC_cmp0_start();
}
请高手指点。。。。。
还有我的比较中断好像进不去。。。。。
tcc00=0; //定时器C停止计数 频率=F/(TM0+1)
tcc01=1; //定时器C F8分频 1M/1200=833
tcc02=0;
tcc12=1; //匹配自动置0
tcc13=1; //比较器0输出
tcc14=0; //比较器0 比较器1匹配时,CMP输出不发生变化
tcc15=0;
tcc16=0;
tcc17=0;
tcout0=0x00; //CMP不输出
tm0=833-1;
tm1=833-1;
外中断1.。。。。。。。
#pragma interrupt _int1(vect=25)
void _int1(void);
void _int1(void)
{
/*清中断请求*/ //set count
tm0=417;
rxd_bit=ONEBIT;
Int1_stop();
TimerC_cmp0_start();
}
比较0
void _compare0(void)
{
ir_cmp0ic=0; /*清中断请求*/
tm0+=833;
if(rxhw_allow_sign==1) //如果红外允许接收标志=1 则接收 否则不接
{ ....这里应该没问题 我是从我的mega16上移植过来的....}
}
红外接收不到。。。。。。好像比较0进不去
请版主帮我看看 不胜感激
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |