急求高手解决51单片机串行口3机通信的问题!!!
你这个不乱才怪,建议接收使用串口中断,发送使用普通函数即可,同时发送时候屏蔽中断。
还真是这样的。。就是单片机自动的帮你加上的。。
比如说你发送,当你想SBUF写一个字节的数据的时候,就会自动的帮你加上起始位的,然后当TI==1的时候,就会帮你加上停止位的。
也就是说你设置串口通信的时候只需要设置,串口中断,串口模式,以及串口中断函数的处理的,还有就是波特率的。
程序调通后,主机控制也应加个超时限制,防止实际使用时出现干扰,接受不到信息时死机。
另外建议将CASE1和CASE2合并,MOV SBUF, #03H改为MOV SBUF,A,在跳转前给A赋值,或用其他寄存器也可以。
JNB RI,$为等待串口接收到数据才能继续执行。
主机在发送完后不要加 JNB RI, $ ;//等待接收结束
建议把串口数据接收放在串口中断中来执行。
从机地址写错了 CJNE A,#01,LOOP ;//判断地址码是否为01 应为02。
先做个简单的测试,只有主机往从机发送数据,看看能否正常,再写从机给主机返回信息。
51单片机按键问题,求解决
1)要让一个程序能够几乎立即停止执行,需要在程序的很多地方,关键位置上加入判断语句,以便接收停止命令;2)为了让程序按原逻辑顺序执行,检测键盘的输入就应该采用中断方式;sbit K1=P1^0; \/\/按键 char flag=0;在8051单片机的时钟频率为12MHz,用T0定时,10ms中断一次 void Timer0_init(){ TMOD ...
求组高手帮忙:51单片机编程
一、MOV A, 40H CJNE A, 41H, $+3 JNC DDD MOV A, 41H DDD:MOV 42H, A END 二、CLR A MOV R2, A MOV R3, A MOV R0, #40H MOV R1, #10 LOOP:MOV A, R3 ADD A, @R0 INC R0 MOV R3, A MOV A, R2 ADDC A, #0 MOV...
51单片机控制PMOS管去开关5V不成功,求高手解决?
PMOS焊接在洞洞板上测试,满负载(80mA)没问题,但是PCB上满负载时,单片机管脚输出低电平去导通PMOS,却被拉高,去掉其中一个负载才可以导通,单片机输出恢复到正常的低电平,--- 这个问题,恐怕是电路问题,仔细检查电路吧。--- 以低电平、拉电流方式来控制5V的外设,是个正确的方法。如果外部器...
51单片机的程序问题!求高手帮忙!
void timer0() interrupt 1 { TH0=(65535-50000)\/256;TH0=(65535-50000)%256;--TL0 ……void timer1()interrupt 3 { TH1=(65535-50000)\/256;TH1=(65535-50000)%256; --TL1 !另外,各种定时,都用同一个定时器即可。
51单片机一道编程题,求大神解决下,谢谢啦
这个不难的。定时器一秒钟一次中断,再中断处理函数里面加秒,更新时间就可以了。注意闰月的问题。
跪求高手帮忙解决程序难题啊,是18b20和51单片机之间的控制,悬赏20分...
首先,我要说明一下,搞技术的,必须把逻辑写得很清楚。否则做东西是容易出问题的。从标题来看,写的是基于18B20的温度控制技术。这个不是什么难题。写跪求,显得太低下。有伤自尊。然后,这种问题,是搞单片机的人都会,不需要高手来解决,浪费社会资源!写一份规格书,要把输入、输出、控制过程写清楚...
51单片机独立键盘问题,求高手
上一位的答案是对的,但是要加上去抖程序来一个5到10毫秒的延时最后加上一个按键释放语句例如:while(P1.1==0);这一句放在最后,执行完这一句后再去执行其他的语句,不是很具体,不过执行体会体会,应该知道把这两句放在什么位置。
请高手提供一个51单片机例程,关于串口和定时器中断共存
void system_Ini() \/\/ 可以试试 自发 自收 TXD 与 RXD 连接起来 { \/\/ P2 口 接 8 路 开关 信号 , P1 口输出 接收信号 TMOD|=0x21 ; \/\/定时器T1工作方式2(自动装载初值的8位定时器),T0方式1 SCON = 0x50; \/\/REN=1允许串行接受状态,串口工作模式1...
51单片机使用定时器1时,没有反应!求大神帮忙解决
void exter0() interrupt 1 是错的,应该是 void exter0() interrupt 3
问几个单片机的问题 急求高手帮助 谢
1、ORG 30H \/\/将这一句之后的程序定义到地址30H处,一般51单片机的地址前30H是中断向量表,所以程序开头不能从00H开始,需要让开,所以,51单片机的程序都是,在00H处放跳转指令,跳到主程序,而主程序也不一定必须从30H开始,也可以往前或往后,全看你的程序如何了 2、A是51的累加器,作用是...
敞齐活血: 串行通信,每次传输8位二进制数字.这8位二进制数字,有256种,可以分别代表256操作命令.编程的人,都是自己规定,各个命令的数值,不用顾及别人是否理解.从楼主给出的程序来看,0x08,就是一个别人编好的命令字符.知道它能这么用,就行了,不用琢磨0x08是怎么来的.
淮上区18079389013: 51单片机串口通信问题求解 - ?
敞齐活血: 51单片机串口通信接收数据和发送出去,这不是一个整个过程,即接收和发送没有什么关系的,是完全可以只发送,或只接收的,不需要接收就发出去的.而且不论是接收或发送,每次都是一个字节的,没有什么8个字节的事.但是每发送一个字节,或接收一个字节,数据本身是8个位,注意是8个位,并不是8个字节.但是串口通信并不是只发送这8位数据,需要加一个起始位和一个停止位,组成一帧数据,共10个位.即是要发送一个字节的8个位,需要加一个头和一个尾,对8位数据包装起来.
淮上区18079389013: 怎么实现51单片机与电脑串口之间的通信? - ?
敞齐活血: 首先,单片机和微机通信的电气标准要一致,微机串口一般是RS232电气标准,所以要加电平转换芯片,大多用MAX232,一般单片机实验板上都提供这样的标准串口. 其次,要分别编写上位机和下位机软件程序,单片机程序参照例程、教科书...
淮上区18079389013: 51单片机双机串口通讯的问题~ - ?
敞齐活血: 1、上位机向下位机发送数据,请先弄个通信协议;2、如果下位机未开启,应该重复询问下位机是否准备好3、下位机准备好,应该作出回应4、上位机收到回应后开始正常发送数据你的问题肯定就...
淮上区18079389013: 51单片机主从串行通信 - ?
敞齐活血: 485可以直接通过转换芯片接在串口上,然后用串口实现多机通信.51单片机在通信时,串口要设置成9位通信.多机通信主要靠SCON中的SM2位来控制.当SM2=1时,从机只有在接收到的第9位数据为1时,才...
淮上区18079389013: 跪求51单片机高手赐教 关于串口通信和数码管显示上位机数据的程序 - ?
敞齐活血: 串口发来2字节的数据(一般还要加上校验),按16进制显示用4个数码管,10进制用5个数码管.如果是10进制,先转换成5个0-9的数(16进制转换成4个0-15的数),再分别按照数码管驱动对照表从控制口发出0-9(0-15)对应的驱动码就可以了.
淮上区18079389013: 怎么样用c语言实现51单片机间串口通信,并实现多机通信,一个主机,两个丛机,怎么控制呀?QQ:809160703 - ?
敞齐活血: 用485通讯,或者用IO脚模拟I2C总线来实现.如果距离远必须485.主机用轮询的方式与从机通讯,从机设为只能被动...
淮上区18079389013: 对2个51单片机进行串口通信的具体步骤是什么,高手来看看,能写程序的请帮我写一下,不胜感激! - ?
敞齐活血: 1、设置串口相关寄存器;2、设置波特率,两边相同;上面两个是初始化……希望这个你自己好好写写,不然可以说你什么都不会了……3、两个串口的接口Rx接另外一个Tx,Tx接另外一个的Rx就可以了.这个是正常的SBUF的接收和发送处理就行了..其实这跟单片机像上位机发送和接收没有两样……
淮上区18079389013: 51单片机串口通信c语言编程 - ?
敞齐活血: 这只是个模板,参考一下/*----------------------------------------------- 名称:串口通信 网站:www.doflye.net 编写:shifang 日期:2009.5 修改:无 内容:连接好串口或者usb转串口至电脑,下载该程序,打开电源 打开串口调试程序,将波特率设置为...
淮上区18079389013: 51单片机与PC进行串口通信,可以烧写,但是不能通信? - ?
敞齐活血: 首先,别乱试MAX232周围的那四个电容,根据MAX232的数据说明书里规定这四个电容必须是1uF的,并且最好是带极性的电解电容(耐压至少16V以上). 既然能进行ISP在线编程烧写程序进去,那说明硬件是没有问题.你的程序在开发板上...