
51单片机串口发送程序修改
void riel()interrupt 4{ if(RI) { buf=SBUF; if(com) { oubuf[count]=buf; tou=0; count++; if(count>9) { count=0; com=0; } } else if(buf=='a') com=1; else if(buf=='b') tou=1; RI=0; }}串口设定为工作方式1,上面就是接受数组的中断程序。
如何编写这个单片机串口程序
1、查询方式:#includemain(){unsigned char dat;TMOD=0x20;TH1=TL1=0xfd;SCON=0x50;TR1=1;while(1){if(RI)\\\/\\\/接收{RI=0;dat=SBUF;}SBUF=dat;\\\/\\\/发送while(!TI);TI=0;}}2、中断方式:#includeunsigned char dat;bit flag;void uart_isr() interrupt 4{if(RI)\\\/\\\/接收{RI=0;dat=SBUF;flag=1;}if(TI)TI=0;}main(){TMOD=0x20;TH1=TL1=0xfd;SCON=0x50;TR1=1;EA=1;ES=1;flag=0;while(1){if(flag){SBUF=dat;flag=0;}}}面向对象编程 ( OOP) 是基于“对象”思想的编程规范,它包含数据,一般称为属性,表现为字段(field)的形式;还包含代码,一般称为方法,表现为程序的形式。
在 OOP 中,计算机程序是根据对象与对象之间的交互来设计的。
(Wikipedia)
单片机串口程序问题,下面是我编的程序
我是在你的程序上做了个人的最少的必要修改代码如下:#include reg52.hsbit feng=P2^3; int flag,flag1,flag2,flag3,flag4,tlag,tlag1,dat; \\\/\\\/----------------延时函数-------------------------\\\/\\\/\\\/\\\/在I\\\/O口驱动蜂鸣器后加入必要延时,否则将听不到声音void delay(unsigned char time){ while(time--);}\\\/\\\/-------------------------------------------------\\\/\\\/void main() { dat=0; EA=1; \\\/\\\/开总中断 ES=1; \\\/\\\/开串行中断 ET0=1; \\\/\\\/开定时器0中断 ET1=1; \\\/\\\/开定时器1中断 TMOD=0x21; PCON=0x00; SCON=0X70; \\\/\\\/SM2=1,只有才收到有效停止位时,才激活 RI=1 \\\/\\\/你原来的程序是 0x50 TH1=0xfd; TL1=0xfd; TH0=0x4c; TL0=0x00; TR0=1; TR1=1; while(1) { while(dat==0) { if(flag1==1) { flag1=0; feng=!feng; delay(10); \\\/\\\/具体延时情况根据你实际情况调节函数的形参大小 } } while(dat==1) { if(flag2==1) { flag2=0; feng=!feng; delay(10); \\\/\\\/具体延时情况根据你实际情况调节函数的形参大小 } } while(dat==2) { if(flag3==1) { flag3=0; feng=!feng; delay(10); \\\/\\\/具体延时情况根据你实际情况调节函数的形参大小 } } while(dat==3) { feng=1; } } } void haha1() interrupt 4 \\\/\\\/串口中断接受函数{ if(RI==1) \\\/\\\/这里已经修改 { RI=0; dat=SBUF; } } void haha2() interrupt 1 \\\/\\\/定时0工作模式1中断函数{ TH0=0x4c; TL0=0x00; flag++; if(flag==2) { flag=0; flag1=1; tlag++; tlag1++; if(tlag==2) {tlag=0;flag2=1;} if(tlag1==4) {tlag1=0;flag3=1;} } }
求助:51单片机与PC串行通行程序的修改,主要是接收和发送中断标志RI、TI。
你在send_int();函数里开了中断,void send_char(unsigned char txd)函数里就不要查询发送中断标志了,改成这样:uchar ch;\\\/\\\/定义个全局变量用于保存收到的字符uchar Txcount;\\\/\\\/发送计数void send_str(void)\\\/\\\/ 传送字串{SBUF = str[0]; Txcount=1;}\\\/\\\/加入中断响应函数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~void uart(void) interrupt 4 \\\/\\\/串口中断{if(RI) \\\/\\\/接收中断{ud=SBUF; \\\/\\\/读接收到的数据}else { TI=0; \\\/\\\/发送完成清标志if(str[Txcount] != '\\\\0')\\\/\\\/非结束符断续发送{SBUF = str[Txcount ++];}}}
无限急
单片机串口程序的问题
通常 支持 ISP 的单片机, 厂商在出厂前 都会烧一段程序在单片机里面了, 这段编程里面 就有 串口程序 了, 可以让你用 ISP不同的厂商的作法 有点不一样的Atmel : 他们在出货前, 会先把 ISP 的程序(里面会有串口程序) 烧在 FC00H, 支持ISP 的单片机, 开机会从 FC00H 开始执行, 如果开机时,单片机没接收到特定的命令来执行 ISP 工作, 马上就会跳到 0000H 继续执行. 没有 支持 ISP 的单片机, 开机会从 0000H 开始执行. Windbon : 有分 AP ROM 和 LD ROM. 用户可以自己来写 ISP 程序, 把 ISP 程序写到 LD ROM 里面. 当然 ISP 程序 里面会有 串口程序 或是 USB 程序, 方便做 ISP
如何在单片机上编写程序,将单片机中的数据通过串口传输到电脑上
具体实现:1.通信协议格式根据具体数据自定义2.单片机部分键盘处理程序,Flash读写程序,串口初始化程序,串口中断服务程序,通信协议解析程序3.电脑部分用VC++编一个软件,用于电脑上的操作,串口驱动,串口设置(自动还是手动),通信协议解析程序,界面显示,文件存储



