資源簡介
89C51雙機通信的Proteus仿真及C語言收發程序,包括電路圖。一個MCU發送數據,另一塊接收并以ASCII數值LED顯示

代碼片段和文件信息
#include?? ?
#include?? ?
#define?XTAL? ??????????11059200? //?CPU振蕩頻率 ?
#define?baudrate? ??????9600? ????//?波特率 ?
#define?ILEN? ??????????8? ????//?接收緩沖區大小? ? ?
unsigned?char? istart;? ????????//?接收緩沖區起始? ?
unsigned?char? iend;? ????????????//?接收緩沖區末尾?
char?idata? inbuf[ILEN];? ????????//?接收緩沖區 ?
bit??have_data_arrive;??????????????//有數據被接收,用于同步顯示
unsigned?char?ipos=0;???????????????//當前接收的數據在緩沖區的位置
//顯示位控制
sbit?L=P1^0;?//4常0????????????????????????
sbit?R=P1^1;?//3
sbit?L1=P1^2;//2
sbit?R1=P1^3;//1
//定義表格
unsigned?char?code?table[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};??//共陰極段碼表
//延時函數
void?delay(unsigned?char?nms)
{
???unsigned?char?xy;
???for(x=0;x ??????for(y=0;y<110;y++);
}
//數碼顯示
void?display_2(unsigned?char?dd)
{
????R=L=L1=R1=1;
????L=1;
//P0=table[0];
//delay(1);
//L=1;
R=0;
P0=table[(dd/100)%10];
delay(1);
R=1;
L1=0;
P0=table[(dd/10)%10];
delay(1);
L1=1;
R1=0;
P0=table[dd%10];
delay(1);
R1=1;
}
//接收中斷例程
static?void?com_isr?(void)?interrupt?4?using?1?
{?
?
char?c;?
//數據接收中斷
if?(RI)?
{? ?
c?=?SBUF;? //?讀數據
RI?=?0;? //?清除中斷標志 ?
ipos=iend?&?(ILEN-1);//存放位置
????iend++;??????????????//調整指針
if?(istart?+?ILEN?!=?iend)?//緩沖區未用完
{?
???inbuf[ipos]?=?c;? //?寫入數據到接收緩沖區?
? ???have_data_arrive=1;??//告訴主程序,接收數據準備好,可以開始顯示了
}? ?
}? ?
}?
//串口初始化 ?
void?com_initialize?(void)?
{? ?
istart?=?0;? //?清空緩沖區?
iend?=?0;?
have_data_arrive=0;//沒有數據?
//?配置T1作為波特率發生器
PCON?|=?0x80;? //?波特率加倍 ?
TMOD?|=?0x20;?//?T1方式2,自動重裝 ?
TH1?=?(unsigned?char)?(256?-(XTAL?/?(16L?*?12L?*?baudrate)));? ?
TR1?=?1;? //?啟動T1? ?
SCON? =?0x50;//串口方式1,允許接收
ES?=?1;? //?允許串行中斷
}? ?
? ?
void?main?(void)?
{? ?
?
com_initialize?();?//初始化串口
????EA?=?1;? ???//開總中斷
while(!have_data_arrive);//等待數據到來
while?(1)?
{?
?????????//顯示接收到的數據
?display_2(inbuf[ipos?]);
}? ?
}? ?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2580??2009-12-30?16:53??send.c
?????文件??????90310??2009-12-30?17:01??vterminal.DSN
?????文件???????2209??2009-12-30?17:21??rcv.c
-----------?---------??----------?-----??----
????????????????95099????????????????????3
- 上一篇:單功能流水線模擬
- 下一篇:使用C語言產生正態分布的隨機數的源代碼
評論
共有 條評論