[原创]MSP430&D12 请教
我用MSP430的F1121A与D12做了个USB接口,
设计程序的初始化如下,可是一运行完初始化部分后,
D12的中断输出INT脚就为低电平(低中断有效,平时应为高才对.),而
D12的时钟输出正常,说明D12正常工作了.
关于D12初始化部分:
;/////////////////////////////////////////
mov.b #0,R12 ; < < < < < < < < < < < <
mov.b #1,R11 ; < < < < < < < < < < < < < < < <
call #D12_SetAddressEnable ; < < < < < < < < < < < < <,
mov.b #1,R12 ; < < < < < < < < < < < < < < maybe not need
call #D12_SetEndpointEnable ; < < < < < < < < < < < <
mov #0,&Union_epp_flags
call #reconnect_USB
;> > > > > > > > > > > > > > > > > > > > > > >
connect_USB
;> > > > > > > > > > > > > > > > > > > > > > > > > > > >
DINT
mov.w #0,&Union_epp_flags
EINT
mov.b #D12_NOLAZYCLOCK+D12_SOFTCONNECT,R14
mov.b #D12_SETTOONE+D12_CLOCK_12M,R15
call #D12_SetMode
RET
;> > > > > > > > > > > > > > > > > > > > >
reconnect_USB
;> > > > > > > > > > > > > > > > > > > > > > > > > >
bic.b #0x01,&P2OUT ; P2.0---> PDIUSBD12
mov.b #D12_NOLAZYCLOCK,R14
mov.b #D12_SETTOONE+D12_CLOCK_12M,R15
call #D12_SetMode
mov #0xC350,R15
connectloop dec R15
jnz connectloop
call #connect_USB
RET整体:
RESET mov.w #300h,SP ;> > > > > > > > > > > 注意SP
StopWPT mov.w #WDTPW+WDTHOLD,&WDTCTL
DINT ; < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
SetupBC bis.b #XTS,&BCSCTL1
SetupOsc bic.b #OFIFG,&IFG1
mov.w #0FFh,R15
setupOsc1 dec.w R15
jnz setupOsc1
bit.b #OFIFG,&IFG1
jnz SetupOsc
bis.b #SELM_3,&BCSCTL2
init_port mov.b #0xFF,&P1DIR
mov.b #0xFF,&P1OUT
mov.b #0x00,&P1DIR
bic.b #0x20,&P2DIR
bis.b #0x20,&P2IES
bis.b #0x1B,&P2DIR
bic.b #0x20,&P2IFG
bis.b #0x20,&P2IE
bis.b #0x1B,&P2OUT
bic.b #0x01,&P2OUT
;/////////////////////////////////////////////////
;add init_timer
;///////////////////////////////////////
SetupTA mov #TASSEL_1+MC_2,&TACTL
; mov #CCIE,&CCTL0
mov #200,&CCR0
EINT
;/////////////////////////////////////////
mov.b #0,R12 ; < < < < < < < < < < < <
mov.b #1,R11 ; < < < < < < < < < < < < < < < <
call #D12_SetAddressEnable ; < < < < < < < < < < < < <,
mov.b #1,R12 ; < < < < < < < < < < < < < < maybe not need
call #D12_SetEndpointEnable ; < < < < < < < < < < < <
mov #0,&Union_epp_flags
call #reconnect_USB
;> > > > > > > > > > > > > > > > > > > > > > >
connect_USB
;> > > > > > > > > > > > > > > > > > > > > > > > > > > >
DINT
mov.w #0,&Union_epp_flags
EINT
mov.b #D12_NOLAZYCLOCK+D12_SOFTCONNECT,R14
mov.b #D12_SETTOONE+D12_CLOCK_12M,R15
call #D12_SetMode
RET
;> > > > > > > > > > > > > > > > > > > > >
reconnect_USB
;> > > > > > > > > > > > > > > > > > > > > > > > > >
bic.b #0x01,&P2OUT ; P2.0---> PDIUSBD12
mov.b #D12_NOLAZYCLOCK,R14
mov.b #D12_SETTOONE+D12_CLOCK_12M,R15
call #D12_SetMode
mov #0xC350,R15
connectloop dec R15
jnz connectloop
call #connect_USB
RET
发表时间:2005年6月13日23:59:02