女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>C/C++語言編程>

霹靂燈、繼電器、蜂鳴器等實驗程序

大小:0.15 MB 人氣: 2017-09-06 需要積分:0
霹靂燈、繼電器、蜂鳴器等實驗程序

1、霹靂燈實驗程序

/* ch03-3-3.c - 霹靂燈實驗程序? */
//==聲明區============================================
#include?? ?// 定義8051暫存器之標頭檔,P2-17~19?
#define?LED?P1???// 定義LED接至Port 1
void delay(int);??// 聲明延遲函數?
//==主程序============================================
main()?????// 主程序開始?
{?unsigned char i;? ?// 聲明無號數字元變數i(占1Bytes) ?
?LED=0xfe;???// 初值=1111 1110,只有最右1燈亮?
?while(1)???// 無窮循環,程序一直跑?
?{?for(i=0;i<7;i++)// 左移7次?
??{?delay(100);?// 延遲100 5m=0.5s?
???LED=(LED<<1)|0x01;?// 左移1位,并設定最低位元為1?
??}????// 左移結束,只有最左1燈亮?
??for(i=0;i<7;i++)// 右移7次?
??{?delay(100);?// 延遲100 5m=0.5s?
???LED=(LED>>1)|0x80;?// 右移1位,并設定最高位元為1
??}????// 結束右移,只有最右1燈亮?
?}?????// while循環結束?
}??????// 主程序結束?
//==子程序=============================================
/* 延遲函數,延遲約x 5ms */
void delay(int x)??// 延遲函數開始?
{?int i,j;???// 聲明整數變數i,j?
?for (i=0;i ??for (j=0;j<600;j++);// 計數600次,延遲5ms?
}??????// 延遲函數結束?
?

2、繼電器實驗程序

/* ch03-3-2.c - 繼電器實驗程序? */
//==聲明區========================================
#include? ??// 定義8051暫存器之標頭檔, P2-17~19?
sbit?buzzer = P3^7;??//?聲明蜂鳴器的位置?
sbit?relay = P3^6;??//?聲明繼電器的位置??
void delay(int);???//?聲明延遲函數?
void pulse_BZ(int,int,int);?//?聲明蜂鳴器發聲函數?
void pulse_RL(int,int,int);?//?聲明繼電器控制函數?
//==主程序========================================
main()??????//?主程序開始?
{?while(1)????//?無窮循環,程序一直跑 */
?{?pulse_RL(10,2000,2000);?
??// 繼電器使燈亮滅各10次,各2000 0.5m=1s
??pulse_BZ(100,1,1);?
??// 蜂鳴器第1聲嗶,約100*(0.5m+0.5m)=0.1s
??delay(200);???//?延遲200 0.5ms=0.1s?
??pulse_BZ(100,1,1);?
??// 蜂鳴器第2聲嗶,約100*(0.5m+0.5m)=0.1s
??delay(200);???//?延遲200 0.5ms=0.1s?
?}??????//?while循環結束?
}???????//?主程序結束?
//==副程序=========================================
// 延遲函數開始,延遲約x*0.5ms/
void delay(int x)??//?延遲函數開始?
{?int i,j;???//?聲明整數變量i,j
?for (i=0;i ??for (j=0;j<60;j++);?//?計數60次,延遲約0.5ms?
}?????//?延遲函數結束?
/* 蜂鳴器發聲函數,count=計數次數,TH=高態時間,TL=低態時間 */
void pulse_BZ(int count,int TH,int TL)?//?蜂鳴器發聲函數開始?
{?int i;???//?聲明整數變量i/
?for(i=0;i ?{?buzzer=1;?//?輸出高態??
??delay(TH);?//?延遲TH 0.5ms?
??buzzer=0;?//?輸出低態?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環結束?
}?????//?蜂鳴器發聲函數結束?
/* 繼電器控制函數,count=計數次數,TH=激磁時間,TL=消磁時間 */
void pulse_RL(int count,int TH,int TL)?//?繼電器控制函數開始?
{?int i;???//?聲明整數變量i?
?for(i=0;i ?{?relay=1;??//?輸出高態,繼電器激磁(燈亮)??
??delay(TH);?//?延遲TH 0.5ms?
??relay=0;?//?輸出低態,繼電器消磁(燈滅)?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環結束?
}?????//?繼電器控制函數結束?
?

3、蜂鳴器實驗程序

/* ch03-3-1.c - 蜂鳴器實驗程序? */
//==聲明區====================================
#include??// 定義8051暫存器的標頭檔,P2-17~19
sbit buzzer = P3^7 ;?// 聲明蜂鳴器的位置為Port 3之bit 7
void delay(int);??//?聲明延遲函數?
void pulse_BZ(int,int,int);?//?聲明蜂鳴器發聲函數?
//==主程序====================================
main()?????//?主程序開始?
{?while(1)???//?無窮循環,程序一直跑?
?{?pulse_BZ(100,1,1);?
??// 蜂鳴器發聲100 (0.5m+0.5m)=0.1s
??delay(1000);?//?延遲1000 0.5m=0.5秒?
?}?????//?while循環結束?
}??????//?主程序結束?
//==子程序=====================================
/* 延遲函數開始,延遲x 0.5ms */?
void delay(int x)??//?延遲函數開始?
{?int i,j;???//?聲明整數變量i,j
?for (i=0;i ??for (j=0;j<60;j++);?//?計數60次,延遲約0.5ms?
}?????//?延遲函數結束?
/* 蜂鳴器發聲函數,count=計數次數,TH=高態時間,TL=低態時間 */
void pulse_BZ(int count,int TH,int TL)?//?蜂鳴器發聲函數開始?
{?int i;???//?聲明整數變數i
?for(i=0;i ?{?buzzer=1;?//?輸出高態
??delay(TH);?//?延遲TH 0.5ms?
??buzzer=0;?//?輸出低態?
??delay(TL);?//?延遲TL 0.5ms?
?}????//?for循環結束?
}?????//?蜂鳴器發聲函數結束
?

4、秒表計C程序

//秒表程序
#define XMS 2000? /* 定時中斷間隔 12MHz,1uS */?
#include
#include
#define uchar unsigned char
sbit?KEY1?=P3^3;? /* 啟動鍵 */
sbit?KEY2?=P3^4;? /* 停止鍵 */
sbit?KEY3?=P3^5;? /* 清除鍵*/
bit stop;
char buf[4]={0,0,0,0};
char low[4]={0xfe,0xfd,0xfb,0xf7};
char disppoint;
uchar ms;
code char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};? /* 顯示段表*/
void delayms(int t)
{
uchar i;
while(t--)
?{
?i=100;
?while(i--);?
?}
}
void put_num(char c)
{
P0=seg[c&0x0f];
}
void timer0( ) interrupt 1 using 1? /*定時器中斷程序*/
{
EA=0;
//顯示:
TH0=-(XMS/256);?
TL0=-(XMS%256);
disppoint&=3;
put_num(buf[disppoint]);
//if(disppoint==2)P0&=~0x20; /* 小數點*/
P1=low[disppoint];
disppoint++;
if(stop){EA=1;return;}
//----
ms--;
if(ms==0)
?{
?ms=100;
?buf[3]++;
?if(buf[3]>9)
??{buf[3]=0;
??buf[2]++;
??if(buf[2]>9)
???{buf[2]=0;
???buf[1]++;
???if(buf[1]>9)
????{buf[1]=0;
????buf[0]++;
????if(buf[0]>9)buf[0]=0;
????}
???}
??}
?}
EA=1;
}
main()
{
TMOD=0x01;
TH0=-(XMS/256);?/* 5ms */
TL0=-(XMS%256);
TR0=1;
EA=1;
while(1)
?{
?EA=1;
?ET0=1;
?if(!KEY1 && stop!=0){stop=0;delayms(100);}
?if(!KEY2 && stop==0){stop=1;delayms(100);}
?if(!KEY3)
??{buf[0]=buf[1]=buf[2]=buf[3]=0;
??stop=1;
??delayms(100);}
?}
}
?

5、AT89S5x看門狗
#include
#include


sfr AUXR??? = 0x8E;??//定義AT89S51擴展寄存器
sfr WDTRST? = 0xA6;

void clr_wdt();
main()
{
?AUXR = 0xff;??// 初始化看門狗相關寄存器
?while(1)???// 主循環
?{
??clr_wdt();??// 8191個機器周期內必須至少調用此程序一次
??????// 否則看門狗會溢出
??
??// 其它子程序?
??// ?
?}
}
void clr_wdt()
{
?WDTRST = 0x1E;??// 清除看門狗指令
?WDTRST = 0xE1;??//?
}
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?