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

📄 fm0813.txt

📁 本程序是用于高速冲床上的送料控制程序
💻 TXT
字号:
/*此程序为一控制程序,用于高速冲床。对应于20mm料长,300次/分钟,只用了一个T0计数器和一个外部中断INT1*/
/*没有显示和键盘,2008年8月13日晚*/
/*8月14日调试成功,实现了每秒5次,10mm料长的送料*/


//#include <REG51.H>                /* special function register declarations   */
#include <stdio.h>                /* prototype declarations for I/O functions */           
                                /* for the intended 8051 derivative         */

#include <reg52.h>   
//#include <reg51.h>

#include <absacc.h>             



#define uchar unsigned char
#define uint unsigned  int

//#define ConTH0 0xf9
//#define ConTL0 0x28
     
sbit start=P1^1;    //启动电机

/*****************************************************************/
void time0(void) interrupt 1 using 1 //定时/计数器中断 T0
{
//uint i;
start=0;          //停止电机

TR0=0; //关定时/计数器T0,由于T0优先级高于外部中断1,所以在这里没必要EA=0,关掉所有中断。	

EX1=1; //开外部中断,等待传感器信号
//for(i=0;i<2000;i++){;}
}

/*****************************************************************/
void intsvr1(void) interrupt 2 using 2  // 外部中断1
{ 
start=1;          //启动电机,默认外部中断时,冲头恰好完成冲料,刚刚开始抬起,
                  //将传感器装在此时可所对应的主轴所在点上

EX1=0;//关外部中断
TR0=0;  
 //     TH0=(65536-1752)/256;TL0=(65536-1752)%256; //WJP modify at 0525,要转成16进制吗?
             
        	     
TL0=0xde;	
TH0=0xfa;	 

TR0=1;            //启动计数器
   	 
 }

/*****************************************************************/
void main(void)
{
//uint i;

start=0;   //关闭电机,上电时,P1.1默认为高电平,电机转动。所以要先关掉电机	
	TMOD=0x05;        //设T0为计数器方式,工作于模式1,即;16位定时/计数器模式。
	IT1=0;           //外部中断定义为电平出触发方式
    EA=1;
	EX1=0;          //关外部中断,以免与T0定时计数器中断冲突
	ET0=1;            //定时计数中断T0中断允许
start=1;   //启动电机
	TR0=0;	//关闭定时计数器T0
	TH0=0xfa;TL0=0xde; //定时器T0赋初值,相当于10mm料长
//TH0=(65536-1752)/256;TL0=(65536-1752)%256;

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

while(1); //此语句是必须的,否则中断程序只执行一遍,	
  }

⌨️ 快捷键说明

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