51单片机控制8253产生三路不同的pwm控制舵机的转动的C代码谁能告诉我,还有xbye的怎么用?有好答案给高分

这是我写的代码:
#include<reg52.h>
#include<absacc.h>

#define COMI XBYTE[0x3100] // 定义8253R的控制字寄存器地址
#define C0I XBYTE[0x0100] // 定义8253R的计数器0寄存器地址
#define C1I XBYTE[0x1100] // 定义8253R的计数器1寄存器地址
#define C2I XBYTE[0x2100] // 定义8253R的计数器2寄存器地址

void init(void)
{
TMOD=0X01;
TH0=0XB1;
TL0=0XE0;//在晶振为12MHZ下延时为20ms
ET0=1;
EA=1;
TR0=1;
}

void main (void)
{
init();
while(1);

}

void T0Int() interrupt 1
{
TH0=0xB1;
TL0=0xE0; //20ms的时钟基准

//向8253中写入控制字,门控的方式1计数方式
COMI=0x30;
C0I=0xd6;C0I=0xff;
COMI=0x70;
C1I=0xac;C1I=0xff;
COMI=0xB0;
C2I=0xac;C2I=0xff;
}
有好答案 分全部给你都行

#define C0I XBYTE[0x0100] // 定义8253R的计数器0寄存器地址
#define C1I XBYTE[0x1100] // 定义8253R的计数器1寄存器地址
#define C2I XBYTE[0x2100] // 定义8253R的计数器2寄存器地址
只能解释三句话的意思。
XBYTE[0x0100]的意思就是取默认的寄存器地址向后的16进制的100个单位里的值,换句话说就是*(XBYTE+0x0100)的意思。你这里的表达式的值是一个具体值,而不是一个内存空间,下同。追问

怎么从它的值看出它在51单片机上的接线!,能不能写一下8253的控制代码

追答

不会写控制代码。
你的继电器的驱动是什么?三极管吗?

追问

舵机 产生三路pwm波形

追答

C0I=0xd6;这句代码后面输出 &C0I的值就可以了啊,这个就是其所在内存地址的值。

温馨提示:答案为网友推荐,仅供参考