|
來(lái)51黑電子論壇很久了,在眾多大佬大牛的資料分享下我學(xué)習(xí)到了很多,我目前也是一個(gè)初學(xué)者,最近搞懂了以前很久沒(méi)搞懂的pwm脈沖調(diào)制,個(gè)人覺(jué)得我這應(yīng)該是最通俗易懂的,程序通過(guò)仿真和示波器測(cè)試,下面分享一下自己的源代碼,如果有哪里不是很好希望有大佬提出
下面是單片機(jī)代碼
- #include <REGX51.H>
- unsigned int condition=10;//這里高電平占一份
- unsigned int cnt;
- sbit pin=P2^0;
- sbit led=P1^0;
- sbit key=P3^0;
- void button();
- void delay(unsigned int t)
- {
- while(t--);
- }
- void main()
- {
- TMOD=0x01;
- TL0 = 0x38; //設(shè)置定時(shí)初值
- TH0 = 0xFF;
- EA=1;
- ET0=1;
- TR0 = 1;
- while(1)
- {
- if(cnt>=100)//整個(gè)周期100
- {
- cnt=0;
- }
- if(cnt<condition)
- {
- pin=1;
- }
- else
- {
- pin=0;
- } button();
- }
- }
- void Isr01() interrupt 1
- {
-
- TL0 = 0x38; //設(shè)置定時(shí)初值
- TH0 = 0xFF;
- cnt++;
- }
- void button() //按下開(kāi)關(guān)改變上升沿的時(shí)間
- {
- if(key!=1)
- {
- delay(50);
- if(key!=1)
- {
- condition=condition+10;
- led=!led;
- if(condition==100)
- {
- condition=0;
- }
- while(!key);
- }
- }
- }
復(fù)制代碼
附件在2樓下載
|
評(píng)分
-
查看全部評(píng)分
|