📄 main.c
字号:
#include<reg51.h>
#include<intrins.h>//包含NOP指令
//unsigned int count_th,count_tl;
unsigned char number; //number记录定时次数
unsigned char time1,time2; //time1是由慢到快的初始值,time2是由快到慢的初始值
unsigned char flag1,flag2;
sbit mode1 =P1^6;//模式1开关信号
sbit mode2 =P1^5;//模式2开关信号
sbit out =P1^7;//脉冲输出
sbit led1 =P1^4;//模式1指示灯
sbit led2 =P1^3;//模式2指示灯
extern void init_time0();
extern void init_out();
extern void init();
extern void delay(unsigned char,unsigned char);
extern void change(unsigned char,unsigned char);
void main()
{
unsigned int n;
unsigned int a1,a2;
a1=100;
a2=100;
flag1=1;
flag2=1;
init(); //相关开关量初始化
while(1)
{
if(mode1==1)
{
if(flag1==1)
{
if(a1<20000) a1+=250;
if(a1>=20000) flag1=0;
}
else
{
if(a1>100) a1-=250;
if(a1<=100) flag1=1;
}
for(n=0;n<a1;n++);
out=1;
for(n=0;n<a1;n++);
out=0;
}
if(mode2==1)
{
if(flag2==1)
{
if(a2<5000) a2+=10;
if(a2>=5000) flag2=0;
}
else
{
if(a2>100) a2-=10;
if(a2<=100) flag2=1;
}
for(n=0;n<a2;n++);
out=1;
for(n=0;n<a2;n++);
out=0;
}
}
}
//***************************************************************************************
//功能:初始化仪表各项功能:
//
//***************************************************************************************
void init(void)
{
out=0; //输出置为0
led1=0;
led2=0;
mode1=1;
mode2=1;
delay(10,50);
}
//***************************************************************************************
//功能:设置定时器0并打开中断禁止
//***************************************************************************************
void init_time0(void)
{
TMOD=0x15; //定时器1模式1计数器0模式1
TH1=0x3c;
TL1=0xb0; //装载50ms的初值
TH0=0x00;
TL0=0x00; //计数器初值
TR0=1; //启动定时器1
TR1=1; //打开计数器0
ET0=1;
EX1=0; //外中断1禁止位
ET1=1; //定时器1中断允许
EA=1; //开总中断允许
}
void time1_isr(void) interrupt 3 using 0 //定时器1中断服务程序
{
number++;
}
//***************************************************************************************
//功能:延时子程序,时间为time1*time2
//***************************************************************************************
void delay(unsigned char time1,unsigned char time2)
{
unsigned char tmp1,tmp2;
for(tmp1=0;tmp1<=time1;tmp1++)
{
for(tmp2=0;tmp2<=time2;tmp2++)
{
_nop_();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -