单片机白炽灯调光程序
/* 单片机白炽灯调光程序 (晶振:11.0592MHz)
*/ #include “reg52.h”
sbit lamp_pwm=P1^0;//可控硅位 sbit key0=P1^1;//降低亮度按键位 sbit key1=P1^2;//增加亮度按键位
unsigned int inc;
void INT0s()interrupt 0 using 0//INT0外部中断,过零检测触发 { TR0=0; if(!key0)//降低亮度 { inc+=50; if(inc>=8000)inc=8000; } if(!key1)//增加亮度 { inc-=50; if(inc<=800)inc=800; } TH0=(65536-inc)/256; TL0=(65536-inc)%256; TR0=1; }
void timer1()interrupt 1 using 0//可控硅触发中断 { unsigned char i; lamp_pwm=0;//灯亮 for(i=0;i<2;i++);//延时2us lamp_pwm=1;//灯灭 }
/STC不断电下载用******/ sfr ISP_DOWNS=0xe7;//ISP软复位地址 sbit ISP_SW=P3^0;//串口数据接收 void DebugDownISP()//软复位 { if(!ISP_SW)ISP_DOWNS=0x60; } /********************************************/
void main() { TMOD|=0x01; IT0=1;//INT0下降沿触发 EX0=1;//外部中断允许 ET0=1; EA=1;//开总中断 inc=8000; while(1) {
|