共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
