C51单片机发送字符串程序怎么写

C51单片机发送字符串程序怎么写,第1张

1、打开C51程序书写软件,新建工程,在d出的对话框编辑工程名并保存到要保存的地方。

2、保存之后会d出如下的窗口,点击Atmel的加号,选择AT89s52并确定。

3、此时就要开始建立程序了,点击如图的图标,新建程序,注意保存的时候一定要在名字后面加“.c”。

4、此时点击左边的文件夹,双击,会出现下一级的文件夹,继续双击,d出对话框中找到刚保存的C程序。双击它或者点击对话框下面的add,关闭d出的对话框,此时建立工程就完毕了。

5、点击窗口的Target 1左边的图标,选择如图的标签。勾选红色标注的地方(生成hex文件)。

6、 这样就进行后面的书写程序,编译吧。然后进入下一步,烧写程序,点击打开“打开程序文件”。到保存程序的地方,选中后缀为hax的文件并双击。

7、点击下载,此之前要连接单片机开发板,并且开发板电源处于关闭。

首先,你要用软件允许中断,即C语言中EA=1//允许总中断ES=1//允许串口中断汇编中可用SETBEA允许总中断SETBES允许串口中断当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。

当然,单片机发送完一帧数据,TI也会置1,同样会产生中断!一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据;接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器SBUF中,如果你之前有允许串行口中断,RI就会置1,向单片机CPU申请中断,并进入中断服务程序,即你问题中的serial()函数,做完这个函数后就会自动返回断点。

如果你没有允许中断,便不会产生串行中断。

其实,你的问题有个错误:别的中断都是某个I/O口电平变化产生。

这只是外部中断产生条件,不过,你之前也需要用软件允许外部中断。

另外,常见的51系列单片机有5个中断源三种中断5:

1、外部中断0和1;

2、定时器/计数器溢出中断0和1;

3、串行口中断。

另外,STC51系列还有定时器/计数器T2中断,A/D转换中断,PWM中断,串行中断2等等。你还有什么不懂的可以自己多翻一翻书,学到后面去了你就明白了。

你的问题中那个serial()函数中P1=SBUF是把接收的数据送到并行P1口,然后那条RI=0是不可少的,这是用软件清零RI,准备再次接受一帧数据产生中断,如果你没有这条语句,就会进入死循环,出不来了。有什么问题还可以Q我(1445090023),希望能给我评个最佳答案。

串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。

一般来说,过程如下:

1,配置串口参数、波特率等,开启串口中断;

void Init_UART()

{

}

2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;

程序一般为:

void UART_ISR() interrupt x using y

{

串口中断处理函数

}

x - 单片机的C51中断号

y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)

3,主程序

int main(void)

{

Init_UART()

while(1)

{

//数据发送函数

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11497005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存