新手求助,51串口每秒发送数据。

2019-03-24 19:59发布

使用delay函数能串口能接收到字符串。但是,中断就悲剧了想来很久,还是不知道原因在哪里。求解。。。





#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;
uint16 cnt=0;
uint8 Buf[]="hello world! ";
void delay(uint16 ms){ uint8 i; while(ms--) { for(i=0;i<120;i++); }

}
void UART_init(void){
ES=1; EA=1;
SCON=0x50; TMOD=0x20;// TMOD=0x21; PCON=0x00;   
// TH0=0xD8; //设置定时器0// TL0=0xF0;

TH1=0xFA; //设置波特率 TL1=0xFA;
// TR0=1; TR1=1;
// ET0=1; ET1=0;}
void UART_send_byte(uint8 dat){ SBUF=dat; while(TI==0); TI=0;}
void UART_send_string(uint8 *buf){ while(*buf!='') { UART_send_byte(*buf++); }}
main(){ UART_init(); while(1) { UART_send_string(Buf); delay(1000); }// while(1);}/*void timeint() interrupt 1{
cnt++; TH0=0xD8; TL0=0xF0; if(cnt==200) { UART_send_string(Buf); cnt=0; }

} */ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zjjone1023
1楼-- · 2019-03-26 22:24
自己也正在学者写串口程序呢
she1987
2楼-- · 2019-03-27 00:26
我也正在学写串口程序。
she1987
3楼-- · 2019-03-27 03:27
请前辈帮我解答一个问题,下面是我写的一个串口程序:
#include
unsigned char flag;
unsigned int a;
sbit speak = P3^7;

void delay(unsigned char num)
{
unsigned char i;
for(i = 0; i < num; i++);
}

void init_uart() //初始化串口
{
SCON=0x50; //UART 工作模式1,REN=1
TMOD=0x20; //定时器工作方式2
PCON=0x00; //SMOD=0
TH1=0xFD; //定时器重装初值
TL1=0xFD;
EA=1; //允许中断
ES=1; //开串口中断
TR1=1; //启动定时器1
}



void main()
{
init_uart(); //初始化串口
speak = 0;
while(1)
{
if(flag==1)
{
ES=0; //关串口中断
flag=0;
SBUF=a; //发送数据
while(TI==0);
TI=0;
ES=1;
}
}
}

void serial() interrupt 4 //串口中断响应函数
{
RI=0;
a=SBUF; //接收数据
flag=1;
}
这个程序运行时发送接收是正常的,但只要是在while(1){ }中加入其它函数就不正常,比如加一个延时函数delay(50),向单片机发送0x11,单片机返回给PC机的是0x1或是011,这是什么原因呢?
xu__changhua
4楼-- · 2019-03-27 03:59
第一行和第二行都可以修改。
xu__changhua
5楼-- · 2019-03-27 09:29

原帖由 she1987 于 2011-5-12 17:41 发表 请前辈帮我解答一个问题,下面是我写的一个串口程序:#includeunsigned char flag;unsigned int a;sbit speak = P3^7;void delay(unsigned char num){unsigned char i;for(i = 0; i < num; i++);}void init_uart() / ...

 

再看最后一个程序

说说你对功能的要求

xu__changhua
6楼-- · 2019-03-27 14:16
 精彩回答 2  元偷偷看……

一周热门 更多>