首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MC9S12DG128定时器中断问题

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编辑过]

把整个project打包贴出来吧。这样看不出问题。
海纳百川  有容乃大
我刚开始学习单片机,帮我看看吧,谢谢!
我的工程文档打包
http://bbs.chinaecnet.com/uploadImages/ECT_ceshi.rar
你有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
海纳百川  有容乃大
谢谢您提示,我试了一下,好像有中断产生了,但是并没有出现我想象中的那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
你有没有算过现在的中断频率,即你的LED的闪烁频率是多少?
海纳百川  有容乃大
没有,我把输入输出6高位和低6位设置了很多数都不行,是从这里来调么?
我用51单片机的时候设置一下就可以了,总体还是有点迷茫.
你要仔细看一下数据手册,理解输出比较和输入捕捉的具体含义。改变通道寄存器的值只是改变比较值,并不会改变周期或频率。
海纳百川  有容乃大
可以参看这个帖子:

http://bbs.eccn.com/dispbbs.asp?BoardID=3&RootID=108752&id=109043&star=1&skin=
海纳百川  有容乃大
好的,我好好研究一下,谢谢版主!
返回列表