- UID
- 343880
- 性别
- 男
|
; export symbols
XDEF main ; export 'Entry' symbol
ABSENTRY main ; for absolute assembly: mark this as application entry point
; include derivative specific macros
INCLUDE 'mc9s12dg128.inc'
ROMStart EQU $4000 ; absolute address to place code/constant data
; variable/data section
ORG RAMStart ; Insert here your data definition.
VELOCITY equ $1000;
; code section
ORG ROMStart
main:
LDS #$1FFF
LDAB #3;
STAB REFDV;
LDAB #4;
STAB SYNR;
wait:BRCLR CRGFLG,#$08,*;
BSET CLKSEL,#$80; set the bus clock to 20M
LDD #$00;
STD fuck;
LDAA #$90
STAA TSCR1;
LDAA #$01
STAA TCTL4
LDD #$0000
STD PACN10
LDAA #$40 ;Enable the PACB
STAA PBCTL
CLI
LDD #$A000 ;load the value for timer
STD MCCNT
LDAA #$07 ;
STAA TSCR2
LDAA #$B7 ;Set the MDC.Interrupt enable;Set the mode for onece
STAA MCCTL ;
LDAA #$FF
STAA DDRA
LDAA #$FF
STAA PORTA
mainloop:JMP mainloop;
INTT0:
LDAA #$FF;
STAA MCFLG;
BRCLR PORTA,mPORTA_BIT0,NEXT_0;
LDAA #$00;
JMP NEXT
NEXT_0:
LDAA #$FF;
NEXT:
STAA PORTA;
LDD #$A000
STD MCCTL;
; BRSET COUNTFLAG,#$01,OUT
; STD VELOCITY2
; ADDD VELOCITY ;Hold the number of pulse
RTI
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG $FFFE
DC.W main ; Reset Vector
ORG $FFCA
FDB INTT0 ;
以上是我在调试MC9S12DG128的模减计数器时写的汇编代码,目的是让模减计数器计数到零,产生一个中断,中断首先使端口A的输出反向,然后启动模减计数器以同样的初值乡下计数,以此循环,方波的周期是模减计数器定时的两倍, 以查看计数器是否正常工作。
LDD #$A000
STD MCCTL;
$A000是存入定时器的值,当这个值大于等于$8000时,端口A能够输出方波,但是频率不会随定时器设定值的变化而变化,当这个值小于$8000时,端口A完全没有输出了,这个问题困扰了我好久。
请问高手些,是我寄存器设置有问题吗,有什么好的建议!谢谢大家乐! |
|