共2条
1/1 1 跳转至页
ADC12ISR 为什么进不了ADC12ISR?

问
我是想在TAISR中打开ADC12进行转换,但为什么进不了ADC12ISR呢?请指教。
#include "MSP430x44x.h"
RESULT_ZC EQU 0200H
RESULT_JC EQU 0220H
ORG 01100H
RESET MOV #0A00h,SP
MAIN
CALL #INIT_SYS ;系统初始化
EINT
CLR R4 ;R4用来控制TA一个周期中断的次数32
MOV #625,&CCR0 ;采样间隔设置
BIS #MC0,&TACTL ;TA开始增记数,当记数到CCR0,即625的时候产生
;中断,进入TAISR?在TAISR中打开ADC12,进行
;采样转换。采样转换完后进入ADC12ISR存储数据
;同时TAISR进行记数,满32次则不允许TA的CCR0
;中断,程序进入计算模块。
L1
BIT #CCIE,&CCTL0 ;测试是否还在转换
JNZ L1
CALL #JS
MAINLOOP
NOP
JMP MAINLOOP
;--------------------------------------------------------------------------------
;系统初始化
;-------------------------------------------------------------------------------
INIT_SYS
StopWDT MOV #WDTPW+WDTHOLD,&WDTCTL ;关狗
SETUP_P BIS.B #02H,&P1SEL
BIS.B #02H,&P1DIR ;输出主系统时钟来测试
BIS.B #04H,&P1SEL ;捕获上升沿输入 P1.2 85脚
BIS.B #03H,&P6SEL ;直流 交流采样输入 P6.0直流95脚 P6.1交流96脚
SETUP_TA MOV #TASSEL1,&TACTL ;主系统时钟 允许中断
;MOV #CM0+SCS+CAP+CCIE,&CCTL1 ; 捕获 上升沿 同步允许中断
MOV #CCIE,&CCTL0 ; 比较 允许中断
SETUP_ADC MOV #ADC12ON,&ADC12CTL0 ;多次采样 开ADC
MOV #SHP+ADC12SSEL_2+CONSEQ_1,&ADC12CTL1 ;主系统时钟 序列通道单次转换模式
MOV.B #INCH_0,&ADC12MCTL0 ;通道0 交流输入
MOV.B #INCH_1+EOS,&ADC12MCTL1 ;通道1 直流输入 序列结束
RET
;---------------------------------------------------------------------
;-------------------------------------------------------------------
; TA中断子程序和ADC12中断子程序
;-------------------------------------------------------------------
TAISR
INC R4
CMP #32,R4
JEQ TA1
BIS #ENC,&ADC12CTL0
BIS #ADC12SC,&ADC12CTL0
NOP
JMP TA2
TA1 BIC #CCIE,&CCTL0
TA2 RETI
ADC12ISR
MOV &ADC12MEM0,RESULT_JC(R4)
MOV &ADC12MEM1,RESULT_ZC(R4)
RETI
;-------------------------------------------------------------------
;中断向量表
;-------------------------------------------------------------------
ORG 0FFECH
DW TAISR
ORG 0FFEEH
DW ADC12ISR
ORG 0FFFEh
DW RESET
END 答 1: 刘工 3gxj xiaoliang 三位高手在,我有救了。帮忙啊 答 2: :) 我看好像没有把ADC12IE中的第0位和第1位置位吧! 答 3: xiaoliang大虾终于出手了,先谢谢了,我试试。 答 4: 确实如此,再次感谢xiaoliang兄。 答 5: :D 别客气!相互帮助!
#include "MSP430x44x.h"
RESULT_ZC EQU 0200H
RESULT_JC EQU 0220H
ORG 01100H
RESET MOV #0A00h,SP
MAIN
CALL #INIT_SYS ;系统初始化
EINT
CLR R4 ;R4用来控制TA一个周期中断的次数32
MOV #625,&CCR0 ;采样间隔设置
BIS #MC0,&TACTL ;TA开始增记数,当记数到CCR0,即625的时候产生
;中断,进入TAISR?在TAISR中打开ADC12,进行
;采样转换。采样转换完后进入ADC12ISR存储数据
;同时TAISR进行记数,满32次则不允许TA的CCR0
;中断,程序进入计算模块。
L1
BIT #CCIE,&CCTL0 ;测试是否还在转换
JNZ L1
CALL #JS
MAINLOOP
NOP
JMP MAINLOOP
;--------------------------------------------------------------------------------
;系统初始化
;-------------------------------------------------------------------------------
INIT_SYS
StopWDT MOV #WDTPW+WDTHOLD,&WDTCTL ;关狗
SETUP_P BIS.B #02H,&P1SEL
BIS.B #02H,&P1DIR ;输出主系统时钟来测试
BIS.B #04H,&P1SEL ;捕获上升沿输入 P1.2 85脚
BIS.B #03H,&P6SEL ;直流 交流采样输入 P6.0直流95脚 P6.1交流96脚
SETUP_TA MOV #TASSEL1,&TACTL ;主系统时钟 允许中断
;MOV #CM0+SCS+CAP+CCIE,&CCTL1 ; 捕获 上升沿 同步允许中断
MOV #CCIE,&CCTL0 ; 比较 允许中断
SETUP_ADC MOV #ADC12ON,&ADC12CTL0 ;多次采样 开ADC
MOV #SHP+ADC12SSEL_2+CONSEQ_1,&ADC12CTL1 ;主系统时钟 序列通道单次转换模式
MOV.B #INCH_0,&ADC12MCTL0 ;通道0 交流输入
MOV.B #INCH_1+EOS,&ADC12MCTL1 ;通道1 直流输入 序列结束
RET
;---------------------------------------------------------------------
;-------------------------------------------------------------------
; TA中断子程序和ADC12中断子程序
;-------------------------------------------------------------------
TAISR
INC R4
CMP #32,R4
JEQ TA1
BIS #ENC,&ADC12CTL0
BIS #ADC12SC,&ADC12CTL0
NOP
JMP TA2
TA1 BIC #CCIE,&CCTL0
TA2 RETI
ADC12ISR
MOV &ADC12MEM0,RESULT_JC(R4)
MOV &ADC12MEM1,RESULT_ZC(R4)
RETI
;-------------------------------------------------------------------
;中断向量表
;-------------------------------------------------------------------
ORG 0FFECH
DW TAISR
ORG 0FFEEH
DW ADC12ISR
ORG 0FFFEh
DW RESET
END 答 1: 刘工 3gxj xiaoliang 三位高手在,我有救了。帮忙啊 答 2: :) 我看好像没有把ADC12IE中的第0位和第1位置位吧! 答 3: xiaoliang大虾终于出手了,先谢谢了,我试试。 答 4: 确实如此,再次感谢xiaoliang兄。 答 5: :D 别客气!相互帮助!
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】mcxa156使用低功耗定时器适配硬件RTC框架被打赏26分 | |
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 |