mshd.net
当前位置:首页 >> 51单片机串口发送问题 >>

51单片机串口发送问题

没有用过 STC12C5A60S2 这款单片机,但是从你接收的情况看,你重点检查: 1、串口助手的波特率和单片机设置的是否一致?...

可以不中断发数据,当然如果你需要的话,打开中断开关,然后中断函数里面处理

截图中没看到Dis_court,而是Dis_time。截图中的程序只发两次数,至于不停发送06是还有发送程序吧?与截图中的程序没什么关系吧?

void Uart_Init() { TMOD|=0x20; SCON=0x40; PCON|=0x80; TH1=0xf3; TL1=0xf3; TR1=1; ES=1; EA=1; } void Send_Byte(unsigned char dat) { SBUF=dat; while(!TI); TI=0; } void main() { Uart_Init();//只需要初始一次 while(1) { if(P37==0&&S...

#include void InitUART(void) { TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1; } void main(void) { InitUART(); } void UARTInterrupt(void) interrupt 4 { if(RI) { RI = 0; //add your code her...

#include #include unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0...

void ser()interrupt 4 { if(RI) { RI=0; a=SBUF; flag=1; } }

51串口是RS232还是RS485的,查一下程序,是程序发送的0吧,不然不会自己发0的。

你这里的难点在于"只发送一次",可以定义一个标志变量初始为0,当P1.1=0时且标志为0,向串口发送一个数据,并置该标志为1,即使P1.1依然为0也不会一直发送;当检测到P1.1=1时,置标志为0,以便下次再触发。其他依此类推。

不知道你的发送值范围如果是小于16的数,那么修改如下: void send_com(unsigned char x) { SBUF=x+128; while(TI==0); TI=0; }

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com