完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下程序用中断接收两个字节时,只接收到第一个,第二个乱码,波特率9600,为什么啊???接收问题?还是接收和发送没有配合好???请帮忙看看
#include "DrvConfig.h" #include "SM39R08A3.h"//"SM39R08A5.h" #include "global.h" #include "absacc.h" #include #include #include #define d_S0RELH 0x03 #define d_S0RELL 0xB8 #define UART_BUFFERSIZE 2 u8 table[UART_BUFFERSIZE]; u8 Byte,UART_Buffer_Size=0,UART_Input_First=0; //=============================================================== //GLOBAL VARIABLE //=============================================================== bit read_flag=0; bit send_flag=0; bit chang_flag=0; /********************************************************************************/ /*******************************串口功能*****************************************/ void init_UART0(void) { S0RELH = d_S0RELH; S0RELL = d_S0RELL; AUX |= 0x80; // BRS = 1 PCON |= 0x80; // SMOD =0,波特率4800 IEN0 |= 0x90; // EA=1, ES0=1, interrupt enable S0CON = 0x50; // mode 1, SM20=0, Revice enable ti=0; } //发送数据 void send_char(unsigned char n_temp0) { send_flag = 1; S0BUF = n_temp0; while(send_flag); { ; } } //向串口发送一个长度为strlen的字符串 void send_str(u8 *str,u16 strlen) { u16 k=0; do { send_char(*(str+k)); k++; } while(k void main(void) { EA=0; init_UART0(); EA=1; while(1) { if(read_flag) { read_flag=0; UART_Buffer_Size =0; if(table[1]=='c') { send_str("serial succeed to recvive 4 byte",33); } send_str(table,2); memset(table,0,2*sizeof(unsigned char)); } } } void serial() interrupt 4 { if(RI) { RI = 0; if( UART_Buffer_Size == 0) { // 如果是第一位 UART_Input_First = 0; } Byte = S0BUF; // 读取串口值 if (UART_Buffer_Size < UART_BUFFERSIZE) { table[UART_Input_First] = Byte; // 保存数据到数组中 ++UART_Buffer_Size; // 等待下一位 ++UART_Input_First; // 更新计数 } else { read_flag=1; //接收完成 } } else { send_flag=0; TI=0; } } |
|
相关推荐
2个回答
|
|
解决了,把波特率降到4800,接收函数用switch语句实现
|
|
|
|
你好?现在这个问题解决没?我的也是这个问题,十六进制能正常显示,但是其他都是乱码,网上有说是波特率的原因,我实验了所有的波特率都不行
|
|
|
|
只有小组成员才能发言,加入小组>>
3282 浏览 9 评论
2959 浏览 16 评论
3464 浏览 1 评论
9007 浏览 16 评论
4054 浏览 18 评论
1120浏览 3评论
577浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
572浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2305浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1861浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 05:59 , Processed in 1.192924 second(s), Total 83, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号