Board logo

标题: MC9S12DG128定时器中断问题 [打印本页]

作者: happyfred    时间: 2007-11-25 22:02     标题: MC9S12DG128定时器中断问题

我刚开始学习S12系列单片机,定时器我按照下面的程序进行初始化,但是就是不能发生中断,谁能帮我看看,谢谢!

定时器6初始化:
LDAA #01000000B ;使定时器6输出比较
STAA 定时器输入输出选择

LDAA #11000000B ;使定时器0计数器初始化
STAA 输入输出6高位
LDAA #000000011B ;使定时器0计数器初始化
STAA 输入输出6低位

LDAA #10000000B
STAA 定时器系统控制1

LDAA #00000000B
STAA 定时器系统控制2

LDAA #01000000B ;使定时器6开
STAA 定时器中断使能

[此贴子已经被作者于2007-11-25 22:02:27编辑过]


作者: strongchen    时间: 2007-11-26 10:20

把整个project打包贴出来吧。这样看不出问题。
作者: happyfred    时间: 2007-11-26 12:33

我刚开始学习单片机,帮我看看吧,谢谢!
作者: happyfred    时间: 2007-11-26 12:34

我的工程文档打包
http://bbs.chinaecnet.com/uploadImages/ECT_ceshi.rar
作者: strongchen    时间: 2007-11-26 13:59

你有3个问题:
1. 没有将通道6设置为输出比较;
2. 没有开中断;
3. 在中断中没有请中断标志。

下面是我修改后的程序:

ORG 0C000H

main:

;³õʼ»¯io
MOVB #11110000B,$0240 ;t¿ÚÊý¾Ý¼Ä´æÆ÷ÉèÖÃ
MOVB #00001111B,$0242 ;t¿Ú·½Ïò¼Ä´æÆ÷ÉèÖÃ

;ÉèÖöÑÕ»
JieCHu1: LDS #3FEFH
;³õʼ»¯ECT
ECT6:
LDAA #01000000B
STAA $40 ;¶¨Ê±Æ÷ÊäÈëÊä³öÑ¡Ôñ¼Ä´æÆ÷ TIOS

LDAA #00000000B
STAA $5C ;ÊäÈëÊä³ö6¸ßλ TC6(hi)
LDAA #000000011B ;ÊäÈëÊä³ö6µÍλ TC6(lo)
STAA $5D

LDAA #10000000B
STAA $46 ;¶¨Ê±Æ÷ϵͳ¿ØÖÆ1¼Ä´æÆ÷TSCR1

LDAA #00000000B
STAA $4D ;¶¨Ê±Æ÷ϵͳ¿ØÖÆ2¼Ä´æÆ÷TSCR2

LDAA #01000000B
STAA $4C ;¶¨Ê±Æ÷ÖжÏʹÄܼĴæÆ÷TIE
;Ö÷Ñ­»·
CLI
index:
JMP index

;¶¨Ê±Æ÷ÖжϳÌÐò
ECT_I:
BSET $4E,#$40
COM $0240 ;T¿ÚÊý¾Ý¼Ä´æÆ÷È¡·´
RTI
;¶¨Ê±Æ÷ÖжÏÏòÁ¿ÉèÖÃ
ORG 0FFE2H
FDB ECT_I
;¸´Î»ÏòÁ¿ÉèÖÃ
ORG 0FFFEH
FDB main
作者: happyfred    时间: 2007-11-26 16:31

谢谢您提示,我试了一下,好像有中断产生了,但是并没有出现我想象中的那4个灯亮一下灭一下的效果,我该从哪里下手呢,关于S12的定时器能否给我点资料,比如如何向上向下计数...也希望这个例子能够给其它一些即将学习和刚开始学S12的朋友,感谢!
附程序我把注释都加上了)
ORG 0C000H
main:

;初始化io,使用的是PT0~PT3
MOVB #11110000B,$0240
MOVB #00001111B,$0242

;设置堆栈
JieCHu1: LDS #3FEFH

;初始化ECT(定时器)
ECT6:
LDAA #01000000B ;设置通道6设置为输出比较
STAA $40 ;定时器输入输出选择寄存器 TIOS

LDAA #00000000B
STAA $5C ;输入输出6高位 TC6(hi)
LDAA #000000011B
STAA $5D ;输入输出6低位 TC6(lo)

LDAA #10000000B
STAA $46 ;定时器系统控制1寄存器TSCR1

LDAA #00000000B
STAA $4D ;定时器系统控制2寄存器TSCR2

LDAA #01000000B ;设置通道6
STAA $4C ;定时器中断使能寄存器TIE

CLI ;允许中断

;主循环
index:
JMP index

;定时器中断程序
ECT_I:
BSET $4E,#$40 ;清中断标志
COM $0240 ;T口数据寄存器取反
RTI

;定时器中断向量设置
ORG 0FFE2H
FDB ECT_I

;复位向量设置
ORG 0FFFEH
FDB main
作者: strongchen    时间: 2007-11-26 16:36

你有没有算过现在的中断频率,即你的LED的闪烁频率是多少?
作者: happyfred    时间: 2007-11-26 16:43

没有,我把输入输出6高位和低6位设置了很多数都不行,是从这里来调么?
我用51单片机的时候设置一下就可以了,总体还是有点迷茫.
作者: strongchen    时间: 2007-11-26 17:06

你要仔细看一下数据手册,理解输出比较和输入捕捉的具体含义。改变通道寄存器的值只是改变比较值,并不会改变周期或频率。
作者: strongchen    时间: 2007-11-26 17:09

可以参看这个帖子:

http://bbs.eccn.com/dispbbs.asp?BoardID=3&RootID=108752&id=109043&star=1&skin=
作者: happyfred    时间: 2007-11-26 17:34

好的,我好好研究一下,谢谢版主!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0