单片机串行通信_第1页
单片机串行通信_第2页
单片机串行通信_第3页
单片机串行通信_第4页
单片机串行通信_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

45 a机通过串行端口控制b机LED/*名称:a机器传输控制命令字符说明:a微控制器向外部发送控制命令字符“a”、“b”、“c”,或者停止传输,b键根据收到的字符停止LED1闪烁、LED2闪烁、双闪烁或闪烁。*/#include#define uchar unsigned char#define uint unsigned intsbit led 1=P0 0 0;sbit led 2=P0 3;sbit k1=P1 0;/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/向串行端口发送字符Void Putc_to_SerialPort(uchar c)SBUF=c;while(TI=0);TI=0;/主程序Void main()uchar Operation _ No=0;SCON=0x40/串行模式1TMOD=0x20/T1操作模式2PCON=0x00/传输速度不会加倍TH1=0xfdTL1=0xfdTI=0;TR1=1;While(1)按If(K1=0)/K1时,选取工作代码0,1,2,3while(K1=0);Operation _ No=(Operation _ No 1)% 4;Switch(Operation_No)/根据作业代码发送A/B/C或停止传输Case 0:LED1=LED2=1BreakCase 1: putc _ to _ serial端口(a);LED1= LED1led 2=1;Breakcase 23360 putc _ to _ serial port(b);LED2= LED2LED1=1Breakcase : putc _ to _ serial port(C);LED1= LED1LED2=LED1BreakDelayMS(100);/*名称:b机器程序接收a机器发送字符并完成相应的动作说明:乙基接收到甲基发送的信号后,根据所述信号控制LED完成不同的闪烁动作。*/#include#define uchar unsigned char#define uint unsigned intsbit led 1=P0 0 0;sbit led 2=P0 3;/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/主程序Void main()SCON=0x50/串行模式1,允许接收TMOD=0x20/T1操作模式2PCON=0x00/传输速度不会加倍TH1=0xfd/波特率9600TL1=0xfdRI=0;TR1=1;le D1=le D2=1;While(1)如果If(RI)/接收,指示灯将闪烁RI=0;Switch(SBUF)/根据收到的命令字符完成不同的操作case a 3360 led 1= le D1;led 2=1;Break/LED1闪烁盘柜b : led 2= led 2LED1=1Break/LED2闪烁case c 3360 led 1= le D1;LED2=LED1/双闪烁Else LED1=LED2=1/关闭LEDDelayMS(100);46单片机之间的双向通信/*名称:a-机器串行程序说明:盔甲向乙机发送控制命令文字,甲机同时接收乙机发送的数字,并在数字管上显示。*/#include#define uchar unsigned char#define uint unsigned intsbit led 1=P1 0;sbit led 2=P1 3;sbit k1=P1 7;uchar Operation _ No=0;/作业代码/数码管代码Uchar code dsy _ code =0xx3f,0x06,0xx5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/向串行端口发送字符Void Putc_to_SerialPort(uchar c)SBUF=c;while(TI=0);TI=0;/主程序Void main()le D1=le D2=1;P0=0x00SCON=0x50/串行模式1,允许接收TMOD=0x20/T1操作模式2PCON=0x00/传输速度不会加倍TH1=0xfdTL1=0xfdTI=RI=0;TR1=1;IE=0x90/允许串行端口中断While(1)DelayMS(100);按If(K1=0)/K1时,选取工作代码0,1,2,3while(K1=0);Operation _ No=(Operation _ No 1)% 4;Switch(Operation_No)/根据作业代码发送A/B/C或停止传输case 03360 putc _ to _ serial port(X);le D1=le D2=1;BreakCase 1: putc _ to _ serial端口(a);LED1= LED1led 2=1;Breakcase 23360 putc _ to _ serial port(b);LED2= LED2LED1=1Breakcase : putc _ to _ serial port(C);LED1= LED1LED2=LED1Break/a机器串行接收中断函数Void Serial_INT() interrupt4If(RI)RI=0;if(sbuf=0 sbuf=9)P0=dsy _ codesbuf;Else P0=0x00/*名称:b机器程序接收a机器发送字符并完成相应的动作说明:乙基接收到甲基发送的信号后,根据所述信号控制LED完成不同的闪烁动作。*/#include#define uchar unsigned char#define uint unsigned intsbit led 1=P1 0;sbit led 2=P1 3;sbit k2=P1 7;uchar NumX=-1;/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/主程序Void main()le D1=le D2=1;SCON=0x50/串行模式1,允许接收TMOD=0x20/T1操作模式2TH1=0xfd/波特率9600TL1=0xfdPCON=0x00/传输速度不会加倍RI=TI=0;TR1=1;IE=0x90While(1)DelayMS(100);If(K2=0)while(K2=0);Numx=numx/生成0到10范围内的数字。其中10表示关闭SBUF=NumXwhile(TI=0);TI=0;Void Serial_INT() interrupt 4If(RI)/接收时的指示灯行为RI=0;Switch(SBUF)/根据收到的命令字符完成不同的操作case x 3360 led 1=led 2=1;Break/完全关闭case a 3360 led 1=0;led 2=1;Break/LED1很亮case b 3360 led 2=0;LED1=1Break/LED2打开case c 3360 led 1=led 2=0;/全部亮47单芯片主机传输字符串/*名称:单芯片微型计算机向主机发送字符串说明:单片机以一定的间隔向主机发送字符串,发送内容显示在虚拟终端上。*/#include#define uchar unsigned char#define uint unsigned int/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/向串行端口发送字符Void Putc_to_SerialPort(uchar c)SBUF=c;while(TI=0);TI=0;/将字符串发送到串行端口Void puts _ to _ serial端口(uchar * s)While(*s!=0)putc _ to _ serial port(* s);s;DelayMS(5);/主程序Void main()uchar c=0;SCON=0x40/串行模式1TMOD=0x20/T1操作模式2TH1=0xfd/波特率9600TL1=0xfdPCON=0x00/传输速度不会加倍TI=0;TR1=1;DelayMS(200);/向主机发送数据puts _ to _ serial port( receiving from 8051). r n );Puts _ to _ serial端口(“-r n”);DelayMS(50);While(1)putc _ to _ serial port(c A);DelayMS(100);putc _ to _ serial port();DelayMS(100);If(c=25)/在每个输出后添加破折号Puts _ to _ serial端口(“ r n- r n”);DelayMS(100);C=(c 1)&If (c=0)/每次输出10个字符时换行puts _ to _ serial port( r n );DelayMS(100);48单片机与PC通信/*名称:单片机与PC通信说明:单芯片微型计算机可以接收PC发送的数字字符,按下单芯片K1键,单芯片微型计算机就可以向PC发送字符串。要在Proteus环境中完成此实验,必须安装Virtual Serial Port Driver和串行调试助手。本例缓冲100个数字字符,缓冲后,新数字从前面开始(环形缓冲区)。*/#include#define uchar unsigned char#define uint unsigned intuchar Receive _ Buffer101;/接收缓冲区uchar Buf _ Index=0;/缓冲区空间索引/数码管编码Uchar code dsy _ code =0x3f,0x06,0xx5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f/延迟Void DelayMS(uint ms)uchar I;while(ms-)for(I=0);I120I);/主程序Void main()uchar I;P0=0x00receive _ Buffer0=-1;SCON=0x50/串行模式1,允许接收TMOD=0x20/T1操作模式2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论