共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 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |