#include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit key1=P1^0; //开 sbit key2=P1^1; //关 sbit key3=P1^2; //减 sbit key4=P1^3; //增 sbit out=P2^0; uint up=1; //------------------------------------------------------------------- //** 延时子程序 ** //------------------------------------------------------------------- void Delayms(uint n) //延时n*0.5毫秒 { uint i,j; for(j=n;j>0;j--) for(i=60;i>0;i--); } void Delay500us(void) //脉冲宽度延时500us { uint j; for(j=60;j>0;j--); } //------------------------------------------------------------------- //** 外部中断0服务程序 ** //------------------------------------------------------------------- void intersvr0(void) interrupt 0 using1 { Delayms(up); //延时up*0.5毫秒后再给触发脉冲 out=0; Delay500us(); //给触发脉冲500us的宽度 out=1; } //------------------------------------------------------------------- //** 主程序 ** //------------------------------------------------------------------- void main(void) { IT0=1; //外部中断0初始化 EX0=1; while(1) { /****************************/ if(key1==0) //开关打开 { Delayms(20);//按键消抖 if(key1==0) { up=0; EA=1; out=0; } } while(key1==0); /****************************/ if(key2==0) //开关关断 { Delayms(20); //按键消抖 if(key2==0) { EA=0; out=1; } } while(key2==0); /****************************/ if(key3==0) //减光 { Delayms(20);//按键消抖 if(key3==0) { up++; if(up>19) up=19; } } while(key3==0); /****************************/ if(key4==0) //增光 { Delayms(20);//按键消抖 if(key4==0) { up--; if(up<1||up>20) up=1; } } while(key4==0); } }
|