|
發(fā)一個(gè)單片機(jī)控制可控硅導(dǎo)通的程序?煽毓+兩鍵控制燈亮滅
單片機(jī)源程序如下:
- /***************************************************************
- 功 能:按鍵k1按下燈泡由滅逐漸變亮,按鍵k2按下燈泡由亮逐漸變滅
- 單片機(jī):STC90C58+
- 晶 振:12M
- 編 程:hgh
- ****************************************************************/
- #include<stc90c.h>
- #include<intrins.h>
- sbit k1=P3^4;
- sbit k2=P3^5;
- sbit BT=P2^0;
- unsigned int t;
- void Delay6us() //@12.000MHz
- {
- _nop_();
- _nop_();
- }
- void INT_1() interrupt 2 //外部中斷1,過零觸發(fā)
- {
- if(k1==0)
- {
- t -= 10; //減少觸發(fā)延時(shí)時(shí)間,燈逐漸亮
- if(t<=10)
- {
- t=10;
- }
- }
- if(k2==0)
- {
- t += 10; //增加觸發(fā)延時(shí)時(shí)間,燈逐漸熄滅
- if(t>=8000)
- {
- t=8000;
- }
- }
- TH0=(65536-t)/256;
- TL0=(65536-t)%256;
- TR0=1;
- }
- void T0_time() interrupt 1 //T0定時(shí)器,定時(shí)觸發(fā)可控硅的脈沖發(fā)出時(shí)間
- {
- BT=0;
- TR0=0;
- Delay6us();
- BT=1;
- }
- void init()
- {
- EA=1;
- IT1=1;
- ET0=1;
- EX1=1;
- TMOD=0x01;
- t=1000; //經(jīng)測(cè)試,過零后8ms可控硅就不能觸發(fā)導(dǎo)通了
- } //所以t最大取8000即可
- void main()
- {
- init();
- while(1);
-
- }
復(fù)制代碼
|
|