⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 51单片机C语言应用程序设计实例精讲.rar
💻 C
字号:
/*****************************************/
/* Copyright (c) 2005, 通信工程学院      */
/* All rights reserved.                  */
/* 作    者:戴 佳		        		 */
/*****************************************/

#include "PWM.h"

/* 定时器0中断服务子程序 */
void timer0_int() interrupt 1 using 1
{
	TR0 = 0;						// 关闭T0

  	TH0 = -(20000/256);				// 重置20ms定时器的计数初值
  	TL0 = -(20000%256); 

	/* 用8254计数器发送第1路PWM信号 */
	COMWORD = 0x30;
	// 1MHz时钟作为计数时钟,计数1000次,实现1ms高电平
	COUNT0 = 0xE8; 
	COUNT0 = 0x03;

	/* 用8254计数器发送第2路PWM信号 */
	COMWORD = 0x70;
	// 1MHz时钟作为计数时钟,计数2000次,实现2ms高电平
	COUNT0 = 0xD0;
	COUNT0 = 0x07;

	/* 用8254计数器发送第3路PWM信号 */
	COMWORD = 0xB0;
	// 1MHz时钟作为计数时钟,计数3000次,实现3ms高电平
	COUNT0 = 0xB8;
	COUNT0 = 0x0B;

  	TR0 = 1;  						// 启动T0
}


/* 主程序 */
void main()
{ 
	EA = 1;							// 开CPU中断
	ET0 = 1;						// 开定时器0中断
	TMOD = 0x01;					// 定时器0方式1
	TH0 = -(20000/256);				// 20ms定时器的计数初值
  	TL0 = -(20000%256); 

	/* 向8254控制字寄存器选择计数器0,并对其赋初值0 */
	COMWORD = 0x30;
	COUNT0 = 0;						// 先赋低位字节
	COUNT0 = 0;						// 再赋高位字节

	/* 向8254控制字寄存器选择计数器1,并对其赋初值0 */
	COMWORD = 0x70;
	COUNT0 = 0;						// 先赋低位字节
	COUNT0 = 0;						// 再赋高位字节

	/* 向8254控制字寄存器选择计数器2,并对其赋初值0 */
	COMWORD = 0xB0;
	COUNT0 = 0;						// 再赋低位字节
	COUNT0 = 0;						// 再赋高位字节

	TR0 = 1;						// 启动定时器T0

	while(1){}						// 无限循环
  	
}		


	
  	
	

	










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -