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

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>C語言|源代碼>mode0-3多種實驗程序分享

mode0-3多種實驗程序分享

2017-09-06 | rar | 0.1 MB | 次下載 | 免費

資料介紹

/* ch08-8-1.c - Mode 0串列輸入實驗 */
#include? //?包含reg51.h檔?
#define? LED?? P1?//?定義LED位置
sbit?load=P3^2;?//?聲明P3^2位置?
main()????//?主程序開始?
{?SCON=0x11;??//?設定為mode 0、REN=1、RI=1
//====b7===b6===b5===b4===b3===b2===b1===b0=== (P8-5 ̄P8-6)
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====0====0====0====1====0====0====0====1===
?while(1)??//?while循環開始?
?{?load=0;??//?輸出負脈波,讓74165載入資料?
??load=1;??//?恢復高態?
??RI=0;??//?清除RI?
??while (RI==0);?//?等待RI串列輸入中斷?
??LED=SBUF;?? //?RI=1時(接收完成),輸出至LED
?}????//?while循環結束?
}?????//?主程序結束?

2、Mode 0串列輸出實驗

/* ch08-8-2.c - Mode 0串列輸出實驗 */?
#include? ?//?包含reg51.h檔?
#define? DIPSW? P2?// 定義指撥開關位置
main()???//?主程序開始?
{?SCON=0;??//?設定為mode 0
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====0====0====0====0====0====0====0====0===
?while(1)??//?while循環開始?
?{?DIPSW=0xff;?//?規劃為輸入埠?
??SBUF=DIPSW;?//?將指撥開關狀態,放入SBUF
??while (TI==0);?//?等待TI串列輸出中斷?
??TI=0;??//?TI=1時(傳送完成),清除TI?
?}????//?while循環結束?
}?? ????//?主程序結束?
?

3、mode 1實驗(垂詢方式) _采用Timer 1產生鮑率

/* ch08-8-3.c - mode 1實驗(垂詢方式) _采用Timer 1產生鮑率 */
#include? ?// 包含reg51.h檔?
#define? LED???? P1??// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2??// 定義指撥開關位置?
main()?????// 主程式開始?
{?TMOD |= 0x20;??// 將Timer 1設定mode 2以產生鮑率
?PCON &= 0x7f;??//?將SMOD設定為0
?TH1=TL1=0xfd;??//?鮑率設定約為9600bps(12MHz)
?TR1=1;????//?啟動Timer 1
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====0====1====0====1====0====0====0====0===
?SCON=0x50;??//?設定為mode 1? (P8-5 ̄P8-6)
?while(1)??//?while循環開始
?{?DIP_SW=0xff;// 規劃指撥開關為輸入埠?
??SBUF=DIP_SW;//?將指撥開關狀態,放入SBUF
??while (RI==0);? //?檢查是否完成接收?
??RI=0;??//?RI=1時(接收完成),清除RI旗標?
??LED=SBUF;?//?將所接收的資料輸出到LED
??TI=0;??//?清除TI旗標?
?}????//?while循環結束?
}?????//?主程式結束?
?

4、mode 1實驗(中斷方式) _采用Timer 1產生鮑率

/* ch08-8-3a.c - mode 1實驗(中斷方式) _采用Timer 1產生鮑率 */
#include? ?// 包含reg51.h檔?
#define? LED???? P1?// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2??// 定義指撥開關位置?
sbit? ?BUZZER = P3^7;?// 定義蜂鳴器位置?
void??delay(int);?// 聲明延遲函數?
char?i;????// 聲明變數?
main()?????// 主程序開始?
{?TMOD |= 0x20;??// 將Timer 1設定mode 2以產生鮑率???
?PCON &= 0x7f;??// 將SMOD設定為0
?TH1=TL1=0xfd;??// 鮑率設定約為9600bps(12MHz)
?TR1=1;????// 啟動Timer 1
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====0====1====0====1====0====0====0====0===
?SCON=0x50;???// 設定為mode 1? (P8-5 ̄P8-6)
?EA=ES=1;???// 設定串列埠中斷
?DIP_SW=0xff;??// 規劃指撥開關為輸入埠?
?SBUF= DIP_SW;??// 將指撥開關狀態,放入SBUF
//============主程序(產生1kHz聲音)==========
?while(1)???//?while回圈開始?
?{?for(i=0;i<30;i++)???// 30 x 0.5ms
??{?BUZZER=1; delay(1);??// 輸出高態?
???BUZZER=0; delay(1); }?// 輸出低態?
??delay(200);??// 延遲0.1s (200 x 0.5ms)
?}?????// while回圈結束?
}??????// 主程序結束?
//============延遲函數(產生0.5ms延遲)==========
void delay(int? x)
{?char? i,j;???// 聲明變數?
?for (i=0;i ??for (j=0;j<60;j++);?// 計時0.5ms
}
//===串列埠中斷子程序(中斷向量為0x23、中斷編號為 4)===
void serial_INT(void)? interrupt? 4
{?if (RI==1)???// 判斷是否發生接收中斷
?{?RI=0;???// 清除RI旗標,準備下次的接收?
??LED=SBUF;??// 將所接收的資料輸出到LED
??SBUF= DIP_SW;?// 將指撥開關狀態,放入SBUF
?}
?else? TI=0;???// 清除TI旗標?
}??????// 結束中斷子程序?
?
?

5、mode 1實驗(中斷方式)_采用Timer 2產生鮑率

/* ch08-8-3b.c - mode 1實驗(中斷方式)_采用Timer 2產生鮑率 */
#include? // 包含reg52.h檔?
#define? LED???? P1?// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2?// 定義指撥開關位置?
sbit? ?BUZZER = P3^7;?// 定義蜂鳴器位置?
void?delay(int?);?// 聲明延遲函數?
char?i;????// 聲明變數?
main()?????// 主程序開始?
{?T2CON &= 0xf0;??// EXEN2=TR2=C/T2=CP/RL2=0?
?T2CON |= 0x30;??// RCLK=TCLK=1?
?TH2 = 0xff;???// Timer 2初值(9600bps, 12MHz)?
?TL2 = 0xd9;???// Timer 2初值(9600bps, 12MHz)
?RCAP2H = 0xff;??// 鮑率設定為9600bps(12MHz)?
?RCAP2L = 0xd9;??// 鮑率設定為9600bps(12MHz)
?TR2=1;????// 啟動Timer 2
?SCON=0x50;???// 設定為mode 1? (P8-5 ̄P8-6)
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====0====1====0====1====0====0====0====0===
//============主程序(產生1kHz聲音)==========
?EA=ES=1;???// 設定串列埠中斷
?DIP_SW=0xff;??// 規劃指撥開關為輸入埠?
?SBUF= DIP_SW;??// 將指撥開關狀態,放入SBUF
?while(1)???// while循環開始
?{?for(i=0;i<30;i++)???// 30 x 0.5ms
??{?BUZZER=1; delay(1);??// 輸出高態?
???BUZZER=0; delay(1); }?// 輸出低態?
??delay(200);?????// 延遲0.1s (200 x 0.5ms)
?}????????// while循環結束?
}?????????// 主程序結束?
//============延遲函數(產生0.5ms延遲)==========
void delay(int? x)
{?char? i,j;??????// 聲明變數?
?for (i=0;i ??for (j=0;j<60;j++);???// 計時0.5ms
}
//===串列埠中斷子程序(中斷向量為0x23、中斷編號為 4)===
void serial_INT(void)? interrupt? 4
{?if (RI==1)???// 判斷是否發生接收中斷
?{?RI=0;???// 清除RI旗標,準備下次的接收?
??LED=SBUF;??// 將所接收的資料輸出到LED
??SBUF= DIP_SW;?// 將指撥開關狀態,放入SBUF
?}
?else?TI=0;??// 清除TI旗標?
}??????// 結束中斷子程序?
?
?

6、mode 2實驗

/* ch08-8-4.c - mode 2實驗 */?
#include? // 包含reg51.h檔?
#define? LED???? P1?// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2?// 定義指撥開關位置?
main()????// 主程序開始?
{?PCON |= 0x80;?// 將SMOD設定為1
?SCON=0x90;??// 設定為mode 2? (P8-5 ̄P8-6)
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====1====0====0====1====0====0====0====0===
?while(1)???// while循環開始
?{?DIP_SW=0xff;?// 規劃指撥開關為輸入埠?
??SBUF=DIP_SW;?// 將指撥開關狀態,放入SBUF
??while (RI==0);? // 檢查是否完成接收?
??RI=0;???// RI=1時(接收完成),清除RI旗標?
??LED=SBUF;??// 將所接收的資料輸出到LED
??TI=0;???// 清除TI旗標?
?}?????// while循環結束?
}??????// 主程序結束
?
?

7、mode 3實驗(垂詢方式) _采用Timer 1產生鮑率

/* ch08-8-5.c - mode 3實驗(垂詢方式) _采用Timer 1產生鮑率*/
#include? // 包含reg51.h檔?
#define? LED???? P1?// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2?// 定義指撥開關位置?
main()????// 主程序開始?
{?TMOD |= 0x20;?// 將Timer 1設定mode 2以產生鮑率?
?PCON &= 0x7f;?// 將SMOD設定為0
?TH1=TL1=0xfd;?// 鮑率設定約為9600bps(12MHz)
?TR1=1;???// 啟動Timer 1
?SCON=0xd0;??// 設定為mode 3? (P8-5 ̄P8-6)
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====1====1====0====1====0====0====0====0===
?DIP_SW=0xff;?// 規劃指撥開關為輸入埠?
?SBUF=DIP_SW;?// 將指撥開關狀態,放入SBUF
?while(1)??// while循環開始?
?{?if (TI==1)?// 檢查是否完成傳出?
??{?TI=0;?// TI=1時(傳出完成),清除TI旗標?
???SBUF=DIP_SW; }?// 將指撥開關狀態,放入SBUF
??if (RI==1)?// 檢查是否完成接收?
??{?RI=0;?// RI=1時(接收完成),清除RI旗標?
???LED=SBUF; }?// 將所接收的資料輸出到LED
?}????// while循環結束?
}?????// 主程序結束
?
?

?

8、mode 2互傳實驗

/* ch08-8-6.c - mode 2互傳實驗 */?
#include? // 包含reg51.h檔?
#define? LED???? P1?// 定義LED位置?
// 第一版89S51線上刻錄實驗板(印表機埠介面)之指撥開關在P2。?
// 第二版89S51線上刻錄實驗板(USB介面) 之指撥開關在P0。?
#define? DIP_SW? P2?// 定義指撥開關位置?
main()????// 主程序開始?
{?PCON |= 0x80;?// 將SMOD設定為1?
?SCON=0x90;??// 設定為mode 2? (P8-5 ̄P8-6)
//====b7===b6===b5===b4===b3===b2===b1===b0===
//===SM0==SM1==SM2==REN==TB8==RB8===TI===RI===
//=====1====0====0====1====0====0====0====0===
?while(1)??// while循環開始?
?{?DIP_SW=0xff;// 規劃指撥開關為輸入埠?
??SBUF=DIP_SW;// 將指撥開關狀態,放入SBUF
??while (RI==0); ?// 檢查是否完成接收?
??RI=0;??// RI=1時(接收完成),清除RI旗標?
??LED=SBUF;?// 將所接收的資料輸出到LED
??TI=0;??// 清除TI旗標?
?}????// while循環結束?
}?????// 主程序結束?
?
?

9、mode 3多處理器通信實驗

/* ch08-8-70.c - mode 3多處理器通信實驗_Master */?
#include? ?// 包含reg51.h檔?
#define? LED? P1??// 定義LED位置?
//============ 函數 ==========
void INIT_serial(void);?// 聲明串列埠初始化函數?
void send_char(char);?// 傳送字元函數?
void delay1ms(int);??// 聲明延遲函數?
//============ 函數 ==========
unsigned char myAddress = 0x01;?// 我的地址?
unsigned char addr[3]={0x02, 0x03, 0x04};?// SLAVE之地址?
unsigned char sdata[3]={0x01, 0x03, 0x07};?// 傳出之初值?
//=======? 主程式? ========
main()?????// 主程式開始?
{?unsigned char? i,j;?// 聲明變量??
?INIT_serial();??// 串列埠初始化設定?
?LED=0xff;???// 關閉LED
?while(1)
?{?LED=~LED;??// 切換LED
??for(i=0;i<3;i++)// 對三個slave通訊?
??{?TB8 = 1;?// 傳送地址模式?
???send_char(addr[i]);?// 傳送地址?
???TB8 = 0;??// 傳送資料模式?
???j=sdata[i];??// 取出資料?
???send_char(j);?// 傳送資料?
???delay1ms(100);?// 延遲0.1秒?
???TB8 = 0;??// 傳送資料模式?
???send_char(~j);?// 傳送反相資料?
???delay1ms(100);?// 延遲0.1秒?
??}?????// for回圈結束??????????
?}??????// while回圈結束?????
}???????// 主程式結束?
//=== 串列埠初始化函數 ===
void INIT_serial(void)
{?PCON |= 0x80;??// 將SMOD設定為1
?SCON=0xf0;???// 設定為mode 3,多處理器通訊?
?TMOD |= 0x20;??// 設定采mode 2
?TH1=TL1=0xf3;??// 4800bps (12MHz)
?TR1=1;????// 啟動Timer 1
}??????// 結束初始化函數?
//============ 傳送字元函數 ==========
void send_char(char s_char)
{?TI=0;????// 清除TI旗標??
?SBUF = s_char;??? ?// 傳出字元?
?while(!TI);???// 等待完成傳出?
}?
//============ 延遲函數(產生x1ms延遲) ==========
void delay1ms(int x)
{?char? i, j;???// 聲明變量?
?for (i=0;i ??for (j=0;j<120;j++);// 延遲1ms
}
====================================
/* ch08-8-71.c - mode 3多處理器通訊實驗_Slave A */?
#include? ?// 包含reg51.h檔?
#define? LED? P1??// 定義LED位置?
void INIT_serial(void);?// 聲明串列埠初始化函數?
unsigned char myAddress = 0x02;?// 我的地址?
//=======? 主程序? ========
main()?????// 主程序開始?
{?INIT_serial();??// 串列埠初始化設定?
?while(1);???// 無窮回路?
}??????// 主程序結束?
//=== 串列埠初始化函數 ===
void INIT_serial(void)
{?PCON |= 0x80;??// 將SMOD設定為1
?SCON=0xf0;???// 設定為mode 3,多處理器通訊?
?TMOD |= 0x20;??// 設定采mode 2
?TH1=TL1=0xf3;??// 4800bps (12MHz)
?EA=ES=1;???// 設定串列埠中斷
?TR1=1;????// 啟動Timer 1
}??????// 結束初始化函數?
//===串列埠中斷子程序(中斷向量為0x23、中斷編號為 4)===
void serial_INT(void)? interrupt? 4
{?if (TI==1)???// 判斷是否發生傳出中斷
??TI=0;???// 清除TI旗標,準備下次的傳送?
?if (RI==1) ???// 判斷是否發生接收中斷
?{?RI=0;???// 清除RI旗標,準備下次的接收?
??if (RB8)?
???if (SBUF==myAddress) SM2=0;?// 進入接收資料模式?
???else SM2=1;?// 非我的地址?
??else? LED=SBUF;?// 讀取接收到的資料,并輸出到LED
?}?????// 結束接收程序?
}??????// 結束中斷子程序?
=======================================
/* ch08-8-71.c - mode 3多處理器通訊實驗_Slave B */?
#include? ?// 包含reg51.h檔?
#define? LED? P1??// 定義LED位置?
void INIT_serial(void);?// 聲明串列埠初始化函數?
unsigned char myAddress = 0x03;?// 我的地址?
//=======? 主程序? ========
main()?????// 主程序開始?
{?INIT_serial();??// 串列埠初始化設定?
?while(1);???// 無窮回路?
}??????// 主程序結束?
//=== 串列埠初始化函數 ===
void INIT_serial(void)
{?PCON |= 0x80;??// 將SMOD設定為1
?SCON=0xf0;???// 設定為mode 3,多處理器通訊?
?TMOD |= 0x20;??// 設定采mode 2
?TH1=TL1=0xf3;??// 4800bps (12MHz)
?EA=ES=1;???// 設定串列埠中斷
?TR1=1;????// 啟動Timer 1
}??????// 結束初始化函數?
//===串列埠中斷子程序(中斷向量為0x23、中斷編號為 4)===
void serial_INT(void)? interrupt? 4
{?if (TI==1)???// 判斷是否發生傳出中斷
??TI=0;???// 清除TI旗標,準備下次的傳送?
?if (RI==1) ???// 判斷是否發生接收中斷
?{?RI=0;???// 清除RI旗標,準備下次的接收?
??if (RB8)?
???if (SBUF==myAddress) SM2=0;?// 進入接收資料模式?
???else SM2=1;?// 非我的地址?
??else? LED=SBUF;?// 讀取接收到的資料,并輸出到LED
?}?????// 結束接收程序?
}??????// 結束中斷子程序?
?
==============================
/* ch08-8-71.c - mode 3多處理器通訊實驗_Slave C */?
#include? ?// 包含reg51.h檔?
#define? LED? P1??// 定義LED位置?
void INIT_serial(void);?// 聲明串列埠初始化函數?
unsigned char myAddress = 0x04;?// 我的地址?
//=======? 主程序? ========
main()?????// 主程序開始?
{?INIT_serial();??// 串列埠初始化設定?
?while(1);???// 無窮回路?
}??????// 主程序結束?
//=== 串列埠初始化函數 ===
void INIT_serial(void)
{?PCON |= 0x80;??// 將SMOD設定為1
?SCON=0xf0;???// 設定為mode 3,多處理器通訊?
?TMOD |= 0x20;??// 設定采mode 2
?TH1=TL1=0xf3;??// 4800bps (12MHz)
?EA=ES=1;???// 設定串列埠中斷
?TR1=1;????// 啟動Timer 1
}??????// 結束初始化函數?
//===串列埠中斷子程序(中斷向量為0x23、中斷編號為 4)===
void serial_INT(void)? interrupt? 4
{?if (TI==1)???// 判斷是否發生傳出中斷
??TI=0;???// 清除TI旗標,準備下次的傳送?
?if (RI==1) ???// 判斷是否發生接收中斷
?{?RI=0;???// 清除RI旗標,準備下次的接收?
??if (RB8)?
???if (SBUF==myAddress) SM2=0;?// 進入接收資料模式?
???else SM2=1;?// 非我的地址?
??else? LED=SBUF;?// 讀取接收到的資料,并輸出到LED
?}?????// 結束接收程序?
}??????// 結束中斷子程序?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1490次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  92次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  10次下載  |  免費
  11. 6基于AT89C2051/4051單片機編程器的實驗
  12. 0.11 MB  |  4次下載  |  免費
  13. 7藍牙設備在嵌入式領域的廣泛應用
  14. 0.63 MB  |  3次下載  |  免費
  15. 89天練會電子電路識圖
  16. 5.91 MB  |  3次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537791次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233045次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費