完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
6个回答
|
|
|
|
|
|
你可以在适当的位置改吧改吧代码
#include #include unsigned char tmp; void send_char(unsigned char txd); main() { TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=TL1=0xFD; // 波特率9600 SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句 //SM0=0; //SM1=1; //REN=1; PCON =0x00; // 波特率不倍增 TR1 = 1; // 启动定时器1 while(1) { if(RI==1) // 是否有数据到来 { RI = 0; tmp = SBUF; // 暂存接收到的数据 P0 = tmp; // 数据传送到P0口 send_char(tmp); // 回传接收到的数据 } } } void send_char(unsigned char txd) // 传送一个字符 { SBUF = txd; while(!TI); // 等特数据传送 TI = 0; // 清除数据传送标志 } |
|
|
|
这是中断法 可以参考
#include #define uchar unsigned char #define uint unsigned int uchar idata trdata[]={'H','E','L','L','O','W','O','R','L','D','!','8','9','C','5','2',0x0d,0x0a,0x00}; ***it K1=P3^2; //对应开发板K1按键 /*-------------------------------------------------------------*/ //串口初始化 void UART_Init(void) { SCON = 0x50; //串口工作方式为1 , 串行允许接收 //SM0=0; //SM1=1; //REN=1; TMOD = 0x20; //定时器1 工作在方式2 //PCON = 0x80; //SMOD = 1; 波特率加倍 TH1 = 0xfd; //波特率 9600bps fosc="11".0592MHz TL1 = 0xfd; ES = 1; //开串口中断 TR1 = 1; //允许定时器1工作 EA = 1; //开总中断 } void delay1ms(uint i) { uchar j; while(i--) { for(j=0;j<115;j++) //1ms基准延时程序 { ; } } } /*-------------------------------------------------------------*/ //串口发送一个字节 void Uart_SendChar(unsigned char dat) { SBUF = dat; //待发送的数据写入缓冲区 while(!TI); //等待发送完成 TI = 0; //清零发送标志位 } /*-------------------------------------------------------------*/ //串口发送一个字符串 void Uart_SendString() { uchar i=0; while(trdata[i]!=0x00) { SBUF=trdata[i]; while(!TI); TI=0; i++; } } /*-------------------------------------------------------------*/ //主函数 void main(void) { UART_Init(); //初始化串口 while(1) { if(K1==0) { delay1ms(20); if(K1==0) { Uart_SendString(); //发送数据 while(!K1); //等待按键释放 } } } } /*-------------------------------------------------------------*/ //串口接收中断函数 void INT_UartRcv(void) interrupt 4 { unsigned char Rcv = 0; if(RI) //查询接收标志位(有数据发送过来时置为1) { RI = 0; //接收标志位清零 Rcv = SBUF; //存储缓冲区的数据 P0=SBUF; Uart_SendChar(Rcv); //让从计算机上传到单片机的数据 , 传回的计算机显示 } } |
|
|
|
也学习下,了解了解
|
|
|
|
|
|
|
|
楼主不在不吧。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
834 浏览 0 评论
1406 浏览 1 评论
ad把一个15mm*1.5mm的灯放到直径15mm的圆形pcb板上,可以实现吗
1268 浏览 1 评论
1534 浏览 1 评论
请问PCB覆铜规则改成了Direct Connect为什么还是Relief Connect连接?
1860 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:36 , Processed in 0.677742 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号