智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3378|回复: 4
打印 上一主题 下一主题

[编程类] xs128的输出比较(OC)功能

[复制链接]

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
威望
228
贡献
56
兑换币
34
注册时间
2009-3-14
在线时间
6 小时
跳转到指定楼层
1#
发表于 2009-8-23 14:17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2贡献
xs128的输出比较(OC)功能,怎么使用。发现TCNT是增计数,而且设置输出比较寄存器TCn完全没有作用。如何才能使输出比较起作用?
代码如下:(按照DG128的书写的,没有XS128的教材)

void T7_OC_Init(void)
{
  TSCR2=0X7;      //预128分频
  TIE_C7I=1;      
  TCNT=0;
  TCTL1_OM7=0;
  TCTL1_OL7=1;    //通道匹配时,OC7输出翻转
  TIOS_IOS7=1;    //OC模式
  TC7=0x120 ;      
  TSCR1_TEN=0;
}

在这个模块中,xs128好像还有三个寄存器叫TTOV  OCD7 OCM7,不知如何用?请指教!

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
QQ
威望
258
贡献
22
兑换币
0
注册时间
2009-11-22
在线时间
17 小时
2#
发表于 2011-3-18 16:03:51 | 只看该作者
现回答OCD7与OCM7寄存器的使用
//OC7M与OC7D的相关说明:
        /*首先将各个通道设置为输出比较,即在TIOS=0XFF的前提下,设OC7M=11000011B ,那么就说明输出
        比较通道7将要管理OC0、OC1、OC6、OC7四个通道;设OC7D=10101110B,那么在OC7输出比较成功后
        (就是 TCNT增加到了TC7),那么刚才提到的四个通道引脚上的逻辑状态就编程了0(OC7D的第0位)、
        1(OC7D的第1位)、0(OC7D的第6位)、 1(OC7D的第7位)。感觉和普通的输出没什么区别,没错,TIOS将某
        个通道设定为输出比较时,将OC7M中的相应位置1,对应的引脚就是输出状态,与DDR中的对应位的状态无关,
        但OC7Mn并不改变DDR相应位的状态。
回复

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
QQ
威望
258
贡献
22
兑换币
0
注册时间
2009-11-22
在线时间
17 小时
3#
发表于 2011-3-18 16:06:45 | 只看该作者
补充TTOV:当设定相应引脚有输出比较时,比较事件触发时,相应引脚翻转使能位,
回复

使用道具 举报

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
4#
发表于 2011-3-18 21:20:26 | 只看该作者
正常模式下TCNT是不能赋值的,只能读取。用中断吧,在中断中读取TCNT的值,然后再改变TC7的值。
输出比较的意思就是当TCNT得值等于TCn的值时就会中断。
输入捕捉就是中断时将TCNT的值赋给TCn;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 02:41 , Processed in 0.355415 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表