4077|4

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】中断问题 [复制链接]

小弟用的是149,晶振8M,用定时器中断,在主程序中我先将R6 清零,进入中断后,R6加一,再处理其他,跳出中断回到主程序判断是否中断了60000次,即R6=60000,如果是就关闭中断,但我发现一运行就关闭了中断,没有中断60000次.这是什么原因呢?

最新回复

有的时候执行了,能跳回主程序,我用仿真器,设置断点单步执行过. 如果有问题,大侠们帮我解决一下,我要在主程序判断TA中断60000次后,将TA关掉.  详情 回复 发表于 2005-11-23 13:58
 
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
最好能贴出程序看看
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
自己先顶,我把程序贴上,问题如前,大家帮我看看.

#include "msp430x14x.h"

CHUFA EQU 002h ;P2.1
HOLD EQU 001h ;P1.0
SHDN1 EQU 002h ;P3.1
SHDN2 EQU 010h ;P3.4
CLK EQU 010h ;P1.4 4M
EOC EQU 002h ;P1.1
ADRESET EQU 001h ;P3.0
A2 EQU 080h ;P1.7
A1 EQU 040h ;P1.6
A0 EQU 020h ;P1.5
RD EQU 001h ;P2.0 读AD
WE EQU 040h ;P2.6



ORG 08000h

RESET MOV.W #0600h, SP
StopWDT MOV.W #WDTPW + WDTHOLD, &WDTCTL

SetupBC BIC.B #XT2OFF, &BCSCTL1
SetupOsc BIC.B #OFIFG, &IFG1
MOV.W #005h, R15

SetupOsc1 DEC.W R15

JNZ SetupOsc1
BIT.B #OFIFG, &IFG1
JNZ SetupOsc
BIS.B #SELM1 + SELS + DIVS0, &BCSCTL2




SetupP1 BIS.B #011h, &P1DIR
BIS.B #CLK, &P1SEL ; P1.4 输出时钟
BIS.B #013h, &P3DIR
BIS.B #RD + WE, P2DIR
BIS.B #RD + WE, P2OUT
CLR R5
CLR R6
CLR R11
BIC.B #SHDN2, &P3OUT ; P3.4,输出SHDN2为0
BIS.B #SHDN1, &P3OUT ; P3.1,输出SHDN1为1

MOV.B #000h, &P4DIR
MOV.B #000h, &P5DIR


BIS.B #ADRESET, &P3OUT

BIC.B #CHUFA, &P2DIR
BIS.B #CHUFA, &P2IES
BIS.B #CHUFA, &P2IE
EINT


Mainloop

BIS.W #LPM4, SR 进入低功耗,等待p2.1外部中断

NOP
NOP

SetupTA
MOV.W #TASSEL1 + TACLR, &TACTL ;初始化定时器
MOV.W #CCIE, &TACCTL0
MOV.W #500, &TACCR0
BIS.B #HOLD, &P1OUT
BIS.W #0x10, &TACTL
NOP
NOP
BIC.B #02h, P2IE



QUFAN XOR.B #WE, P2OUT ; P2.6, 输出WE
XOR.B #WE, P2OUT
CMP #6000, R6 ;判断是否定时器中断6000次
JNZ QUFAN
BIC.B #SHDN2, &P3OUT ; P3.4,输出SHDN2为0
BIS.B #SHDN1, &P3OUT ; P3.1,输出SHDN1为1

KK
NOP
NOP
JMP KK






;P2口外部中断服务程序
PORT2_INT
BIC.W #LPM4, 0(SP) ;退出低功耗
BIS.B #SHDN2, &P3OUT ; P3.4,输出SHDN2为1
BIC.B #SHDN1, &P3OUT ; P3.1,输出SHDN1为0
MOV.W #005h, R14

DELAY
DEC.W R14
JNZ DELAY
NOP
NOP
BIS.B #ADRESET, &P3DIR
BIC.B #ADRESET, &P3OUT ; P3.0, 输出ADRESET
NOP
NOP
NOP
NOP
BIS.B #ADRESET, &P3OUT
BIS.B #A2+A1,P1OUT ;A2、A1为1
BIC.B #A0,P1OUT ;A0为0
CLR.B &P2IFG
RETI


;定时器中断服务程序
TimerA_INT
INC R6
BIS.B #HOLD, &P1OUT ;P1.0产生hold
BIC.B #HOLD, &P1OUT
NOP
BIS.B #HOLD, &P1OUT
MOV.B #08, R5
LOOP1 DEC R5 ;通过R5计数延时,产生RD信号读数
JNZ LOOP1
CALL #DUAD
KK2
RETI


DUAD
XOR.B #RD, P2OUT
XOR.B #RD, P2OUT
XOR.B #RD, P2OUT
XOR.B #RD, P2OUT
RET



ORG 0FFFEh
DW RESET
ORG 0FFE2h
DW PORT2_INT
ORG 0FFECh
DW TimerA_INT


END
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
你的程序有问题,退出LPM模式后,执行TA,但这个时候没有MAINLOOP,所以程序跑到哪里都不知道了呀。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
有的时候执行了,能跳回主程序,我用仿真器,设置断点单步执行过.
如果有问题,大侠们帮我解决一下,我要在主程序判断TA中断60000次后,将TA关掉.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表