标题:
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