|
自己先顶,我把程序贴上,问题如前,大家帮我看看.
#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 |
|