📄 tiaoshu.c
字号:
/***********************************************************/
/*********调速器***1~6档** 1档为最高档 6档为最低档 *********/
/***********************************************************/
#include<reg52.h>
#include<mylib.h>
#include<delay.h>
#include<display.h>
#include<yaokong.h>
#include<keychuli.h>
/*************************************************************************************/
/**************************初始化子程序*********************************************/
/**************************************************************************************/
void intin(void)
{
TMOD=0x11;
IT0=1;//INT0为下降沿触发
IE=0x8b;//允许INT0,T0,T1,T2中断
IT0=1; //外部中断0触发方式控制位,下降沿触发
EX0=1; //外部中断0(INT0)中断允许位
IP=0x01; //定义外部中断0优先于定时器中断的优先级
dm=0;
PWM_data=0x01;
TH0=tableH[PWM_data];
TL0=tableL[PWM_data];
TH1=(65536-10000)/256;//PWM输出周期为10ms
TL1=(65536-10000)%256;
dianyuan=0; //置电源位为开启状态
PWM_OUT=0;
}
/************************************************************************************/
/***********************************电源***开/关***********************************1*/
/************************************************************************************/
void dianyuanchuli(void)
{
dianyuan=~dianyuan;
if(dianyuan==1){PWM_data=0x01;numb=0x0f;TR1=1;KEY_OK=1; }
else {PWM_OUT=0;numb=0x0d;TR0=0;TR1=1;KEY_OK=1;}
}
/************************************************************************************/
/********************************主程序**********************************************/
/************************************************************************************/
void main()
{
intin();
while(1)
{
if(dianyuan==1)
{
if(KEY_OK==0)numb=PWM_data;
display();
}
keyscan(); //按键扫描
if(KTF==1){key_chuli();}//按键处理
if(KEY_OK==1)display();
}
}
/************************************************************************************/
/****************************T0中断服务程序*********T=10ms***************************/
/************************************************************************************/
void time1() interrupt 3
{ TR0=0;
if(KEY_OK==0)TR1=0;
if(KEY_OK==1){jishuqi++;}
if(jishuqi==200){jishuqi=0;KEY_OK=0;TR1=0;}
TH1=(65536-10000)/256; //PWM输出周期为10ms
TL1=(65536-10000)%256;
TH0=tableH[PWM_data]; //装入高电平保持时间初值
TL0=tableL[PWM_data];
if(dianyuan==1)
{
PWM_OUT=1;
TR0=1;
TR1=1;
}
}
/************************************************************************************/
/****************************T0中断服务程序******************************************/
/************************************************************************************/
void time0() interrupt 1 //50ms定时器
{
PWM_OUT=0;TR0=0;
}
/*************************************************************************************/
/**************************over***over***over***************************************/
/**************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -