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

📄 main.c

📁 中颖单片机SH88F516例程
💻 C
字号:
/***************************************************************************************************************************************
说明:
SH88F516继承了3个8位PWM模块,可以分别通过各自的PWMCON寄存器控制PWM模块的时钟,PWMP寄存器控制PWM输出波形的周期,PWMD寄存器控制PWM输出波形的
占空比,从而产生周期和占空比分别可调整的脉宽调制波形.在PWM输出允许期间可以修改这三个寄存器,但在下一个PWM周期修改才会起作用.	PWM定时器提
供3个中断源,在每个PWM周期都会产生中断.他们有不同的标志位,共享一个中断向量地址.

本程序通过按键S1,S2,S3来调节电机转速,S1--慢速  S2--中速  S3--快速
直流电机的调速实际上是通过改变PWM的占控比来实现的,因而可以实现多档速度的控制.

要求:打开J14的1脚
****************************************************************************************************************************************/
#include <sh88f516.h>

unsigned char Temp;
void init();

main()
{

	init();
					
    while(1) ;

}



void init()
{

	CLKCON = 0x00;			//系统时钟=osc

	PWM0P = 100;			//PWM0输出周期   = PWM0P[7-0]*PWM0时钟
	PWM0D = 90;				//PWM0输出占空比 = PWM0D[7-0]*PWM0时钟		 
	PWM0CON = 0xB1;			//PWM0控制寄存器; 1000 0001---打开PWM0定时器,并从PWM0管脚输出  占空比极性为高,时钟为系统时钟的1/16

	IENC = 0x70;    		//IENC = 0111 0000B   即 EX4选择寄存器打开4,5,6三个通道
	EXF0 = 0x01;			//EX4采用下降沿方式触发

	IEN1 = 0x60;    		//IEN1 = 0110 0000B   即 EX4=1 EPWM=1	打开外部中断4  开启PWM中断	不能使用位操作,不具备位寻址功能
	EA = 1;					//开启总中断

	Temp = 90;

}



void PWM_INT() interrupt 12  using 3  //PWM0/1/2的中断号共享为12.
{

	if(PWM0CON & 0x02)				  //判断是否为PWM0中断?
	{
		PWM0D = Temp;                 //占空比可调
	}


	PWM0CON &= 0xFD;			      //清除中断标志位	PWMIF=0但是这边不能使用位操作,不具备位寻址功能

}


void EX4_INT() interrupt 13  //using 2  //外部中断4的中断号为13.
{
	
	IEN1 &= 0xBF;

	if(IF44)						   //高速
		    Temp = 100;	

	if(IF45)						   //中速
		    Temp = 90;	

	if(IF46)						   //慢速
		    Temp = 80;	


	EXF1 = 0x00;			           //需要软件清0

	IEN1 |= 0x40;

}










⌨️ 快捷键说明

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