李现的老婆叫什么名字
计算机怎么连接51单⽚机,如何实现(电脑)PC机与单⽚机
AT89C51的串⾏通信好句摘抄大全
在以单⽚机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接⼝进⾏计算机与单⽚机之间的命令和数据传送,就可以利⽤计算机对⽣产现场进⾏监测和控制。由于计算机上的RS-232所传送的距离不超过30m,所以,在远距离的数据传送和控制时,可以⽤
MAX485的接⼝转换芯⽚将RS-232转换成RS-485协议进⾏远距离传送。在发送和接收端都进⾏协议转换后,RS-485协议对数据传送来说是相对透明的,所以依然可以使⽤计算机中的RS-232进⾏远距离的数据传送和控制。在最简单的RS-232直接传送通信系统中,只要发送和接收双⽅同时准备好,仅⽤信号发送端(TXD),信号接收端(RXD)和信号地(GND)3根线即可进⾏通信;若以应答⽅式进⾏数据通信,可使⽤请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)进⾏硬件握⼿。在Windows95下,可以很⽅便地使⽤Win32通信API函数来实现这些硬件的握⼿以及数据的传送。在89C51单⽚机系统中,分别从P3.0和P3.1引出串⼝线RXD和TXD通过专⽤的电平转换芯⽚转换成RS-232接⼝标准的电平,这样,⼆者之间就可以通过RS-232接⼝进⾏数字信号的传送。单⽚机也可以以直接传送或应答握⼿的⽅式进⾏数据通信,但由于握⼿⽅式占⽤其他的端⼝,⽽单⽚机的端⼝数量有限,所以,计算机与单⽚机的通信常采⽤直接传送的⽅式,本⽂将重点介绍。
1 Windows95下的通信编程
Windows95通信体系提供了1个改进的串⾏应⽤程序接⼝SAPI⽤来进⾏交互式串⾏通信。其中,串⼝和其他通信设备是作为⽂件进⾏处理的,串⼝的打开、关闭、读取和写⼊所⽤的函数和操作⽂件的函数相同。
mc水观音芙蓉出水
通信会话以调⽤CreateFile函数开始,CreateFile函数为读访问或写访问打开串⼝,打开成功后返回该串⼝句柄,供读写串⼝时使⽤。CreateFile函数的使⽤如下:
CreateFile(szDevice,fdwAccess,fdwShareMode,lpsa,fdwCreate,fdwAttrsAndFlags,hTemplateFile)
其中,第1个参数szDevice是要打开的串⼝逻辑名,如COM1或COM2;第2个参数fdwAccess指定串⼝的访问类型,如读、写或两者兼⽽有之,⼤部分通信是双向的,因⽽通常设置为:GENERICREAD|GENERICWRITE;第3个参数fdwShareMode指定串⼝的共享属性,串⼝不能共享,所以它必须为0;第4个参数lpsa引⽤安全性属性结构;第5个参数fdwCreate指定如果CreateFile正被已有的⽂件调⽤时应做些什么,既然串⼝总是存在,此参数就必须被设置为OPENEXISTING。第6个参数fdwAttrsAndFlags描述了该端⼝的各种属性,对串⼝⽽⾔,唯⼀有意义的设置是FILEFLAGOVERLAPPED,指定该设置时,端⼝I/O可以在后台进⾏;最后1个参数hTemplateFile是指向模板⽂件的句柄,当端⼝打开时,该参数为NULL。
打开串⼝后,在Windows95下可以对串⼝进⾏合适的配置。Windows95提供了COMMPROP结构,COMMPROP结构中包含了对串⼝允许的设置,如波特率、数据位数、停⽌位的个数以及奇偶校验⽅法等,如果串⼝连接到调制解调器,COMMPROP结构中还包含调制解调器⽀持的设置。但COMMPROP结构给出的只是单纯的信息,它不能⽤来改变串⼝的设置。Windows95下串⼝设置的改变是通过改变它的DCB结构来实现的,DCB结构中包含了所有串⼝的设置,其中包括硬件的握⼿、流控制等。
Windows95提供GetCommState函数来得到当前串⼝的设置情况,该函数接收1个打开的端⼝句柄和1个指向DCB结构的指针,在DCB结构中返回信息,GetCommState函数的补充函数是SetCommState函数,SetCommState函数将DCB结构中的内容写向串⼝设置,这2个函数的调⽤如下:
BOOLGetCommState(hComm,&dcb)
BOOLSetCommState(hComm,&dcb)
其中,hComm为打开串⼝的句柄,dcb为1个指向DCB的结构。
王晶高云翔案件王晶照片
Windows95中实现串⼝的读写函数与⽂件的读写函数相同,读写函数的使⽤格式如下:
ReadFile(hComm,inbuff,nBytes,&nBytesRead,&overlapped)
WriteFile(hComm,outbuff,nBytes,&nBytesWrite,&overlapped)
其中,第1个参数是打开串⼝的句柄,第2个参数是数据所使⽤的缓冲区,第3个参数是要读取的字节数,第4个参数是实际读取的字节数,实际读取的字节数可能⼩于要读取的字节数,最后1个参数指向1个覆盖似的结构,当CreateFile中dwAttrsAndFlags参数设置为FILEFLAGOVERLAPPED时,此参数可以指定1个OVERLAPPED结构,使数据的读写操作在后台进⾏。
归去来兮辞原文读写端⼝可以通过4种技术来实现:查询、同步I/O、异步I/O(后台I/O)和事件驱动I/O。查询⽅式直接、易于理解,但占⽤⼤量CPU时间;同步I/O直到读取所指定字节数或超时时才返回,这样很容易长时间地阻塞线程;异步I/O可以在后台读写数据,⽽在前台做其他的事情;事件驱动I/O是由Windows95通知应⽤程序某些事件什么时候发⽣,然后根据所发⽣的事情来对串⼝进⾏操作。
这4种不同的技术,各有利弊和⾃⼰适⽤的领域,所以,在不同的通信系统中,可以根据不同的要求采⽤不同的技术。在监测系统中,由于事件的偶然性和要求传送的实时性,计算机常采⽤事件驱动I/O⽅式来进⾏现场监测。
在事件驱动I/O⽅式下,Windows95报告给应⽤程序的事件由函数GetCommMask返回,改变返回的事件时,可以使⽤SetCommMask 函数设置,这2个函数的调⽤如下:
GetCommMask(hComm,&dwMask)
公务员的考试内容
SetCommMask(hComm,dwMask)
第1个参数是打开串⼝的句柄,第2个参数是要等待的1个或多个事件的掩码。在⽤SetCommMask设置了有⽤的事件后,应⽤程序调⽤WaitCommEvent函数来等待事件的发⽣,直到事件发⽣,WaitCommEvent函数返回。WaitCommEvent函数使⽤格式如下:
WaitCommEvent(hComm,&dwEvent,&overlapped)
第1个参数是打开串⼝的句柄,第2个参数是返回的事件,第3个参数是指定同步或者异步操作。当函数返回后,可根据返回的事件掩码进⾏相应的串⼝操作。
完成通信后,串⼝应该关闭,否则,它始终处于打开状态,其他应⽤程序就不能打开或使⽤它。关闭串⼝的函数为:
CloseHandle(hComm),其中,hComm为打开的串⼝句柄。
2 单⽚机下的通信编程
单⽚机89C51的串⾏端⼝有4种⼯作⽅式,通过编程设计,可以使其⼯作在任⼀⽅式,以满⾜不同场合的需要。其中,⽅式0主要⽤于外接移位寄存器,以扩展单⽚机的I/O电路;⽅式1主要⽤于双机之间或
外设电路的通信;⽅式2、3除有⽅式1的功能外,还可⽤作多机通信,以构成多微机系统,⽅式2、3的区别在于波特率的不同。
单⽚机的串⾏通信的波特率可以程控设定,在不同的⼯作⽅式下,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定。
单⽚机的串⾏端⼝有2个控制寄存器,⽤来设置⼯作⽅式、发送或接收的状态、特征位、数据传送的波特率以及中断标志TI和RI。
单⽚机的串⾏端⼝有1个数据寄存器SBUF,该寄存器为发送和接收所共有,在⼀定条件下,向SBUF写⼊数据就启动了发送过程,读SBUF 就启动了接收过程。
单⽚机可以采⽤循环⽅式或中断⽅式实现串⾏数据的传送。在循环⽅式下,单⽚机循环对数据寄存器SBUF进⾏读写来实现数据的接收和发送;在中断⽅式下,对⽅式1、2来说,1帧数据发送或接收完后,TI/RI⾃动置1,请求串⾏中断,若CPU响应中断,则执⾏串⾏中断服务程序,并把TI/RI清0以再次响应中断。对在⽅式2、3下的接收,还要视串⼝控制寄存器SCON的设置才可确定RI是否被置位以及串⼝中断是否开放。
实时控制中,由于事件的突发性,常采⽤中断的⽅式进⾏数据传送,中断⽅式能更⼤限度地提⾼资源
的利⽤率,使CPU在不进⾏数据通信时做其他的⼯作。下⾯重点介绍单⽚机在⽅式1下的中断⽅式编程。
⽅式1是10位异步通信⽅式,其中包括1个起始位,8个数据位和1个停⽌位。波特率由定时器T1的溢出率和串⼝控制寄存器SMOD的状态确定,在CPU的晶振为11.0592MHz时,波特率常采⽤9600b/s。
对SBUF进⾏写操作就可启动发送,在发送移位时钟的同步下,从TXD先送出起始位,然后是8位数据位,最后是停⽌位,这样,1帧数据发送完,中断标志TI置位。
在允许接收的条件下(REN=1),当RXD出现由1到0的负跳变时,即被当成是串⾏发送来的1帧数据的起始位,从⽽启动1次接收过程。当8位数据接收完,并检测到⾼电平停⽌位后,即把收到的8位数据装⼊SBUF,置位RI,1帧数据的接收过程就完成了。
下⾯是单⽚机以⽅式1在直接传送下的中断接收和发送程序。由于没有使⽤通信握⼿,所以通信双⽅都应做好通信准备。在计算机接收、单⽚机发送时,由计算机先发送字母“R”,通知单⽚机计算机已准备好,然后计算机在事件驱动I/O⽅式下等待接收到字符“Y”;当单⽚机接收到“R”时,向计算机发送“Y”,表⽰单⽚机也已准备好,这样,⼀旦计算机接收到“Y”就表⽰双⽅都已准备好,⼆者之间就可以进⾏数据交换了。在计算机发送、单⽚机接收时,计算机发送1帧数据,单⽚机响应中断,接收数据。单⽚机程序的具体实现过程如下: