发新帖我要提问
12
返回列表
打印

PIC编译器中指针与数组的疑问与switch的疑问

[复制链接]
楼主: shuidi_wangdan
手机看帖
扫描二维码
随时随地手机跟帖
21
shuidi_wangdan|  楼主 | 2013-9-13 08:05 | 只看该作者 回帖奖励 |倒序浏览
我找到switch乱跳的原因了,是因为中断优先级造成的,我的程序里有两个中断,一个是低级中断,一个是高级中断,低级中断放的是定时器的处理程序,高级中断放的是串口的处理程序,有没有老师能给指点一下怎样才能解决这个问题?

使用特权

评论回复
22
ayb_ice| | 2013-9-13 09:02 | 只看该作者
加个取地址符号,还不行,强制指针转换

使用特权

评论回复
23
shuidi_wangdan|  楼主 | 2013-9-13 09:15 | 只看该作者
ayb_ice 发表于 2013-9-13 09:02
加个取地址符号,还不行,强制指针转换

我试一下,你能否给解答一下下面这个问题,
使用中断优先级造成程序跑乱,我的程序里有两个中断,一个是低级中断,一个是高级中断,低级中断放的是定时器的处理程序,高级中断放的是串口的处理程序,老师能给指点一下怎样才能解决这个问题

使用特权

评论回复
24
ayb_ice| | 2013-9-13 09:33 | 只看该作者
中断里如果访问公共资源, 一定要满足互斥条件,特别是写(修改)操作

一般情况下,中断只收集必要数据(这样一般可以保证中断程序小而精练),设定标志,主循环查询标志,处理后清除标志,这样就不会有问题

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
shuidi_wangdan + 3 很给力!
25
shuidi_wangdan|  楼主 | 2013-9-13 09:36 | 只看该作者
ayb_ice 发表于 2013-9-13 09:33
中断里如果访问公共资源, 一定要满足互斥条件,特别是写(修改)操作

一般情况下,中断只收集必要数据( ...

不好意思,能具体一点吗

使用特权

评论回复
26
gaorongxing| | 2013-9-13 09:53 | 只看该作者
估计还得叶老师出马

使用特权

评论回复
27
ayb_ice| | 2013-9-13 09:55 | 只看该作者
所谓的程序跑乱,其实是逻辑混乱了

使用特权

评论回复
28
shuidi_wangdan|  楼主 | 2013-9-13 10:16 | 只看该作者
ayb_ice 发表于 2013-9-13 09:55
所谓的程序跑乱,其实是逻辑混乱了

我感觉自己在设置中断的时候没有什么问题,我是按照datasheet做的,就是中断入口的的跳转函数有的是伪指令,并且里面还用到了goto跳转语句,这种写法我也是在网上看到的,在网上我也没有搜索到其他的写法,你能否给一些其他的C18的中断写法,#pragma code high_vector_section=0x08  
void high_vector(void)
{
        _asm goto
        PIC18F_HIGH_ISR
        _endasm
}
#pragma code

#pragma code low_vector_section=0x18
void low_vector (void)
{
        _asm goto
        PIC18F_LOW_ISR
        _endasm
}
#pragma code
这是我在网上搜到的。

使用特权

评论回复
29
shuidi_wangdan|  楼主 | 2013-9-13 10:17 | 只看该作者
gaorongxing 发表于 2013-9-13 09:53
估计还得叶老师出马

叶老师是哪位?怎么请他出山?

使用特权

评论回复
30
ayb_ice| | 2013-9-13 10:22 | 只看该作者
中断程序一般是这样的,用goto。。。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
shuidi_wangdan + 3 很给力!
31
shuidi_wangdan|  楼主 | 2013-9-13 10:26 | 只看该作者
ayb_ice 发表于 2013-9-13 10:22
中断程序一般是这样的,用goto。。。

我不明白的是,为什么高级中断和低级中断放在一起就出现了问题了呢?郁闷的问题。

使用特权

评论回复
32
shuidi_wangdan|  楼主 | 2013-9-13 10:47 | 只看该作者
先结贴吧,谢谢大家了!

使用特权

评论回复
33
XIEYUANBIN| | 2013-9-15 18:56 | 只看该作者
switch(8)????

使用特权

评论回复
34
shuidi_wangdan|  楼主 | 2013-9-16 09:22 | 只看该作者
问题找到了,是中断关键字写错了,高级中断和低级中断的关键字都写成了interrupt,谢谢大家!

使用特权

评论回复
35
yewuyi| | 2013-9-16 10:30 | 只看该作者
shuidi_wangdan 发表于 2013-9-13 10:17
叶老师是哪位?怎么请他出山?

ayb_ice等网友水平都很高,他们帮不了你,我也是白搭。

另:我也不住山里。


另:简单问题,还是靠自己比较好。

使用特权

评论回复
36
shuidi_wangdan|  楼主 | 2013-9-16 13:51 | 只看该作者
yewuyi 发表于 2013-9-16 10:30
ayb_ice等网友水平都很高,他们帮不了你,我也是白搭。

另:我也不住山里。

呵呵,叶老师真幽默,这个问题是自己的问题,是自己疏忽了,还有就是对编译器不太了解,以后还要多多向您请教!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则