[ZLG-MCU] LPC900 的PWM输出禁止问题

[复制链接]
2833|6
 楼主| xiaoxin1986 发表于 2009-9-20 13:14 | 显示全部楼层 |阅读模式
我需要在应用中快速的开/关 T1的PWM输出
目前想到的方法有这么几种
1 对TH1填入0x00/0xFF ,不关闭T1。
2 对TR1置位0/1。
3 对P0M1/P0M2进行设置,控制IO输出。
不知道哪一种方法最快最可靠?
方法1 的重新装填会不会需要等到下一个256的时钟周期开会生效?
方法2肯定有问题,如果直接关闭TR1,可能T1停止后,P0^7的电平是不定的。
方法3不知道重新设置I/O会不会有较长时间的延迟。

希望高手们给个意见。
linhai1986 发表于 2009-9-20 22:15 | 显示全部楼层
用第二种方法

// Header:
// File Name:
// Author:
// Date:


#include "reg935.h"
#define uchar unsigned char
#define uint unsigned int


sbit P00 =P0^0;
sbit P01 =P0^1;
sbit P02 =P0^2;
sbit P03 =P0^3;
sbit P04 =P0^4;
sbit P05 =P0^5;
sbit P06 =P0^6;
sbit P07 =P0^7;

sbit P10 =P1^0;
sbit P11 =P1^1;
sbit P12 =P1^2;
sbit P13 =P1^3;
sbit P14 =P1^4;
sbit P15 =P1^5;
sbit P16 =P1^6;
sbit P17 =P1^7;

sbit P20 =P2^0;
sbit P21 =P2^1;
sbit P22 =P2^2;
sbit P23 =P2^3;
sbit P24 =P2^4;
sbit P25 =P2^5;
sbit P26 =P2^6;
sbit P27 =P2^7;
linhai1986 发表于 2009-9-20 22:15 | 显示全部楼层
void Timeini(void)
{
TH0 =0xff;
TL0 =0xff;
TMOD &=0xF0;
TMOD |=0x02;
TR0 =1;
AUXR1 = 0X10; //溢出相应的端口翻转
// EA = 1;
// ET1 = 1;
}



void main (void)
{
unsigned char x,y;
P0M1 = 0x00;
P0M2 = 0x00;

P1M1 = 0x00;
P1M2 = 0x00;

P2M1 = 0x00;
P2M2 = 0x00;

P3M1 = 0x00;
P3M2 = 0x00;

Timeini();
while(1)
{
TR0 = ~TR0;
//for(x= 0; x<255;x++)
//
for(y= 0 ;y<255 ; y++);


}
}
 楼主| xiaoxin1986 发表于 2009-9-20 23:52 | 显示全部楼层
我实验结果表明,TR0=0之后,根据占空比不同,PIN上的电平是不定的。。。。。。

IO用的是开漏输出模式。
linhai1986 发表于 2009-9-22 13:39 | 显示全部楼层
那你停止计时器后再执行端口赋值处理啊。
 楼主| xiaoxin1986 发表于 2009-9-22 14:08 | 显示全部楼层
停止计时器后赋值不可以的。你停止T1,接着执行赋值需要等待一段时间。

我现在用 TH1控制。
linhai1986 发表于 2009-9-23 00:53 | 显示全部楼层
这个我没有试过,我也不清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

1487

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部