当前位置:文档之家› 基于51单片机的8253产生方波程序

基于51单片机的8253产生方波程序

#include //定义8052寄存器的头文件
#include //定义存储器形式的头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
#define CH0 XBYTE[0xfcff] //通道0地址
#define CH1 XBYTE[0xfdff] //通道1地址
#define CH2 XBYTE[0xfeff] //通道2地址
#define CON XBYTE[0xffff] //控制口地址
sbit PWM = P1^0; //P1.0口产生8253输入时钟
sbit A0 = P2^0;
sbit A1 = P2^1;
sbit dat = P0;
//*******************定时器中断初始化函数***********************/
void Timer0_Init(void)
{
TMOD=0x01; //选择通道0,方式2
TH0=0xd8; //设置计数初始值,TH0=256-25
TL0=0xf0; //TH0=TL0
ET0=1; //通道0中断使能
}
//***************************主程序****************************/
void main(void)
{
Timer0_Init(); //定时器中断初始化
TR0 = 1;
EA = 1;
CON=0X16; //写通道0控制字,只读低字节,方式3,BCD计数
CH0=0x64; //写计数初值,CH0=20000/100;
CON=0x56; //写通道1控制字,只读低字节,方式3,BCD计数
CH1=0xc8; //写计数初值,CH1=200/1;

while(1)
{
// CON=0X16; //写通道0控制字,只读低字节,方式3,BCD计数
// CH0=0x64; //写计数初值,CH0=20000/100;
// CON=0x56; //写通道1控制字,只读低字节,方式3,BCD计数
// CH1=0xc8; //写计数初值,CH1=200/1;
}
}
void Timer0_Int_Routine(void) interrupt 1 using 1 //中断服务子程序
{
TH0 = 0xD8; //10us,数据重载
TL0 = 0xF0;
PWM = ~PWM; //输入PWM波形

}

相关主题
文本预览
相关文档 最新文档