📄 main.c
字号:
//************************************************************/
//喷轨信号发生器检测仪
//单片机为16f877a 8Mosc
//编译软件为HICC-16
//************************************************************/
#include <pic.h>
#include <math.h>
__CONFIG(0x1f76);
extern void initset(); //定义引用的函数
bit TimeEnd=0;
unsigned char keyback=0;
unsigned char RpmCount=0,RpmSum=0,keyflag=0; //
#define nop() asm("nop")
#define clrwdt() asm("clrwdt")
#define keyport1 RC0 //按键开关
#define keyport2 RC1 //按键开关
//RC1 低速 pin35
//RC2 中速 pin36
////RC1为低电平, RC2为低电平 转速不输出
//RC1为低电平, RC2为高电平 转速为低
//RC2为高低电平,RC2为低电平 转速为中
//RC1,RC2全部为高 转速为高
//RB1 9PIN 转速状态灯
//RB2 10PIN
//RB1 亮 RB2灭 转速为低
//RB1 灭 RB2亮 转速为中
//RB1 亮 RB2亮 转速为高
#define OUT1 RD0 // ;1缸信号输出 38pin
#define OUT2 RD1 // ;2缸信号输出 39pin
#define OUT3 RD2 // ;3缸信号输出 40pin
#define OUT4 RD3 // ;4缸信号输出 41pin
#define LED1 RB1 // ;状态灯
#define LED2 RB2
//********************************************************/
//中断子程序
//Timer2中断服务子程序, 2ms中断一次
//********************************************************/
//#pragma interrupt_level 1 //该宏语句为允许中断调用子程序
void interrupt IRQ(void)
{
if(TMR2IF)
{
TMR2IF=0;
RpmCount++;
if(RpmCount>RpmSum)
{
RpmCount =0;
TimeEnd =1; //退出标志
RD0=1;RD1=1;RD2=1;RD3=1;TMR2IE=0;TMR0IE=1;TMR0IF=0;TMR0=0;
}
}
if(TMR0IF==1&TMR0IE==1)
{ TMR0IF=0;RD0=0;RD1=0;RD2=0;RD3=0;TMR2IE=1;TMR0IE=0;TMR2=0x00;}
}
//**********************************************************/
//延时程序(8ms)
//**********************************************************/
void DELAY()
{
unsigned char u,x;
for(x=0;x<41;x++)
{ clrwdt();
for(u=110;--u;) continue;
}
}
//**********************************************
//按键扫描
//**********************************************
void keyscan()
{
//按键按动检测
if(keyport1==1&keyport2==1)
{
DELAY();
if(keyport1==1&keyport2==1)
{keyflag=3; }
}
else if(keyport1==1&keyport2==0)
{
DELAY();
if(keyport1==1&keyport2==0)
{keyflag=1;}
}
else if(keyport1==0&keyport2==1)
{
DELAY();
if(keyport1==0&keyport2==1)
{keyflag=2;}
}
else if(keyport1==0&keyport2==0)
{
DELAY();
if(keyport1==0&keyport2==0)
{keyflag=0;}
}
}
//****************************************************************/
//****************************************************************/
void main()
{
initset();
keyflag=0;
keyback=0;
while(1)
{ clrwdt();
keyscan(); //按键扫描
if(keyback!=keyflag)
{
if(keyflag==0)
{RpmSum=0;LED1=0; nop();nop();LED2=0;nop();nop();RD0=0;nop();nop();RD1=0;nop();nop();RD2=0;nop();nop();RD3=0;TMR2IE=0;TMR0IE=0;}
else if(keyflag==1)
{RpmSum=60;LED1=1;nop();nop(); LED2=0;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
else if(keyflag==2)
{RpmSum=30;LED1=0; nop();nop();LED2=1;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
else if(keyflag==3)
{RpmSum=15; LED1=1; nop();nop();LED2=1;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
keyback=keyflag;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -