|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请教各位大虾PIC16C72A怎么不执行中断服务程序 |
作者:linefw 栏目:单片机 |
我的一个程序中 用Timer1定时中断 在程序中寄存器:TMR1L TMR1H PIE INTCON TICON 的各相关参数都设置好了 在MPLAB IDE 环境下 软件仿真时 TMR1L TMR1H 的数能递增累加 溢出时也会把PIR1的TMR1IF置位 但就是没执行中断服务程序 而中断服务程序也是在 ORG 0x04 开始的地方判断 PIR1 的TMRIF 是否为1 然后执行中断服务程序的 而更奇怪的是 在国产WAVE 仿真器所配的软件环境中 用软件仿真时 连TMR1L TMR1H都不工作 没有累加记数!! 奇怪了 请教各位大虾 这是怎么回事 谢谢! |
2楼: | >>参与讨论 |
作者: xieyuanbin 于 2005/4/6 11:07:00 发布:
软件仿真还是用MPLAB。 看看中档手册,可能是有个中断使能没开,或者计数时钟源没选择好。 我想你应该是INTCON,PEIE没有开。 |
3楼: | >>参与讨论 |
作者: linefw 于 2005/4/6 12:30:00 发布:
INTCON PEIE 相应位打开了的 我用一个非常小的程序来测试 只涉及TIME1中断 INTCON 的 GIE 置1 PIE1的TMR1IE 置1 晶振是4MHZ TICON 的值是 B'00110101' 预分频 是1:8 结果情况还是如此 |
4楼: | >>参与讨论 |
作者: jimocao_80 于 2005/4/6 13:17:00 发布:
看看你的是不是设置成了计数模式! |
5楼: | >>参与讨论 |
作者: linefw 于 2005/4/6 23:14:00 发布:
T1CON 是 B'00110101' 怎么会是计数模式嘛 |
6楼: | >>参与讨论 |
作者: xxdcq 于 2005/4/7 11:33:00 发布:
不是pie是pie1 banksel TMR1L movlw 0a0 movwf TMR1L ;80ms movlw 15 movwf TMR1H movlw B'00110001' ;t1定时器工作方式,预分频器为1:8,关闭t1振荡器,打开t1 movwf T1CON bcf PIR1,TMR1IF ;清定时器1中断标志 banksel PIE1 ;pie1在另一页,要赋值先要换页 bsf PIE1,TMR1IE ;允许定时器1中断 banksel INTCON bsf INTCON,GIE ;允许所有中断 |
7楼: | >>参与讨论 |
作者: xieyuanbin 于 2005/4/7 12:21:00 发布:
16C72的数据手册第68页 INTCON中除GIE要置1外,PEIE(INTCON,6)也要置1. 数据手册在每个功能模块详细介绍之后都有一个所用到的寄存器的小结,里面集中了所有用到的关联寄存器及其相关位。如遇到这样的问题可去看一下什么地方没设置好。 |
8楼: | >>参与讨论 |
作者: linefw 于 2005/4/7 20:28:00 发布:
谢谢大侠 我想过 PEIE 位,但觉得它是外围接口的中断使能位,与TIME1的中断没什么联系吧,所以就没有管它。结果把PEIE置1就行了,怎么回这样呢? 不好意思,I am a 初学者。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |