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

📄 fun.h

📁 从零开始学51单片机源代码
💻 H
字号:
#include "intrins.h"
#include <reg52.h>	//包含头文件  

//定义端口寄存器	 
sfr P0M0 = 0X93;
sfr P0M1 = 0X94;
sfr P1M0 = 0X91;
sfr P1M1 = 0X92;
sfr P2M0 = 0X95;
sfr P2M1 = 0X96;  
sfr P3M0 = 0Xb1;
sfr P3M1 = 0Xb2; 

//与PCA0有关的寄存器
sfr CCON = 0xd8; //PCA控制寄存器
sbit CCF0 = CCON^0; //PCA0中断标志位 
sbit CR = CCON^6;	//运行控制位 
sbit CF = CCON^7;	//溢出标志 
sfr CMOD = 0xd9; //PCA工作模式寄存器
sfr CL = 0xe9;
sfr CH = 0xf9;
sfr CCAPM0 = 0xda;//PCA0寄存器  
sfr CCAP0L = 0xea;
sfr CCAP0H = 0xfa;
sfr PCAPWM0 = 0xf2;

sfr AUXR=0x8e;

#define fosc 11059200L
sbit en = P1^1;	
sbit dir = P1^2;
sbit s1 = P1^7;
sbit s2 = P1^6;

bit run_flag;//操作锁
unsigned int step; //剩余步数 

//升降速表 
//设计64步,低速时尽快提速,高速时尽量平顺 
unsigned int speedtable[64] = 
			{ //5~120 r/min
			 0xf5e0,0xf8e0,0xfaf0,0xfbf0,0xfce0,0xfd23,0xfd78,0xfdac,
			 0xfdce,0xfe00,0xfe28,0xfebc,0xfece,0xfee0,0xfef2,0xff04,

			 0xff16,0xff28,0xff2e,0xff34,0xff3a,0xff40,0xff46,0xff4b,
			 0xff50,0xff54,0xff58,0xff5e,0xff60,0xff62,0xff64,0xff66,

			 0xff68,0xff6a,0xff6c,0xff6e,0xff70,0xff72,0xff74,0xff76,
			 0xff78,0xff7a,0xff7c,0xff7e,0xff80,0xff82,0xff83,0xff84,

			 0xff85,0xff86,0xff87,0xff88,0xff89,0xff8a,0xff8b,0xff8c,
			 0xff8d,0xff8e,0xff8f,0xff90,0xff91,0xff92,0xff93,0xff94
			};
  


void init_port()
{
	///P1.1 P1.2 P1.3强推挽输出  P1.6 P1.7准双向 
	P1M1 = 0x00;   
	P1M0 = 0x0e; 
}

void init_timer0()
{
	TMOD = 0X01;	//定时器0模式1,16bit
	AUXR |=0x80; //T0x12=1,1T模式 
	TH0 = 0;	  
	TL0 = 0;		
	ET0 = 1; //允许T0中断 
}

void init_pca()
{
	CCON = 0;
	CL = 0;
	CH = 0;
	CMOD = 0x04; //时钟源为T0,得到PWM的频率 = T0 / 256 
	//占空比50%
	CCAP0H =  255 - 255 * 50 / 100;
	CCAP0L =  CCAP0H;
	CCAPM0 = 0x42; //上升沿捕获,PWM使能 
	CR = 0;	//	停止PWM
}

//定义延时函数
void ms_delay(unsigned int t)
{
	unsigned  int  i;
	for (t; t > 0; t--)	//外层循环t次	 
		for (i = 1320;i > 0; i--)	//内层循环110*12次		   
		;
} 

⌨️ 快捷键说明

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