|
我打算通过扩展定时器的方法测出多路PWM信号的占空比,利用GATE门控位,当GATE低电平的时候读取外部定时器8253计数器的值。可是我怎么也读不出来值,当我使RD位有效时,读的计数器的值也总是不变是个固定值,大家看看我的程序有什么问题??怎么改,或者大家有什么好的方法,可以重新解决此类问题??
#include "reg52.h"
#include "absacc.h"
#define P8253ControlWord XBYTE[0xFFFF]//控制寄存器地址
#define P8253Channel0 XBYTE[0x3FFF]//通道0地址
#define P8253Channel1 XBYTE[0x7FFF]//通道1地址
#define P8253Channel2 XBYTE[0xBFFF]//通道2地址
#define uchar unsigned char
#define uint unsigned int
uchar c8253data;
xdata uchar c8253word=0;
sbit p37=0xb7;//
main()
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
P8253ControlWord=0x54;
P8253Channel1=0x10;
delay();
p37=0;//RD位低电平有效
c8253data=P8253Channel1;//读取8253计数器的值
while(1);
}
void delay()
{
uint i;
for(i=0;i<10;i++);
}
|
|