波形.rar
(8.96 KB)
程序是:
//********************************
#include <pic.h>//单片机内部资源
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//配置位设定
__CONFIG(WDTEN&XT&UNPROTECT);
//********************************
//定义变量
char R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10;
char FGTM,HOTM,IBAK,BKTM,PRTM,SLTM,ISHN,IIFG,STA,BUF;
/*分别定义顶锻时间,保持时间,退火热量,退火时间,*/
/*压紧时间,慢顶时间,闪光热量,顶锻热量,主程序指针*/
bit TFL2;//5ms定时标志
bit TFL3;//主程序指针
bit TFL4;//检测到脚踏开关低电平
//子程序的声明
int RR12(int x)
{
x=x*10;
R1=x&0xFF;
R2=x>>8;
}
void RR67(void)
{
#asm
movf _R1, W
addwf _R6, f
movf _R2, W
btfsc _STATUS,0//进位标志c
addlw 1
addwf _R7, f
#endasm
}
void interrupt isr(void)
{
if (T0IE&&T0IF)
{ //TMR0的中断服务程序
T0IF=0;//清TMR0的中断标志位
RC0=0;//可控硅焊接高电平清0
TMR0=0XFF;//重新对TMR0赋值
TMR1ON=0;//对TMR1赋值
TMR1L=0X7A;
TMR1H=0XEC;
// TMR1L=R6;//TMR1的定时时间为脉冲延迟输出时间
// TMR1H=R7;
TMR1ON=1;//开TMR1定时器
TMR1IE=1;
}
if (TMR1IE&&TMR1IF)
{ //TMR1中断服务程序
TMR1IF=0;//清TMR1中断标志
RC0=1;//可控硅输出置1
TMR1ON=0;//清TMR1中断计数和中断使能标志位
TMR1IE=0;
}
}
//*主程序***//
void main()
{
asm("clrwdt");
#asm
movlw 0x30
movwf _FSR
clrf _INDF
incf _FSR,f
btfss _FSR,7
goto $-3
#endasm
//***********初始化********************
STA=0;
ADCON1=0x07;//io口初始化
PORTA=0XFF;
PORTB=0XFF;
PORTC=0;
PORTD=0;
PORTE=0;
TRISA=0XFF;
TRISB=0XFF;//设为输入口,读操作
TRISC=0;
TRISD=0;
TRISE=0;//设为输出口,写操作
OPTION=0X2C;//TMR0设为外部计数中断//TMR0为上升沿中断方式
TMR0=0XFF;
TMR1L=0XF2;
R6=0XF2;
TMR1H=0XD8;
R7=0XD8;
PR2=249;
INTCON=0XC0;//开中断使能
TMR1ON=0;
TMR1IE=0;
TMR1IF=0;
T2CON=0X25;//TMR2预分频为1:4,后分频为1:5
TMR2ON=1;//TMR2定时时间为250*20=5000=5ms
TMR2IE=1;
TMR2IF=0;
T0IE=1;
T0IF=0;
while(1)//主循环程序
{
asm("clrwdt");
void ;
void;
void;
}
} |