欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

51单片机基础——串口通信字符串控制流水灯

发布时间:2024/1/8 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 51单片机基础——串口通信字符串控制流水灯 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
#include <reg52.h> #include<intrins.h> //位移头文件_crol_ #define uchar unsigned char unsigned char flag,i; char w='0'; char wu[15]; int k=0; int q=0; void receive() interrupt 4 //串口中断服务程序 {if(RI==1){RI=0; //重新清0等待接收w=SBUF;//接收电脑传输过来的数据wu[k]=w; //将W的值赋给wu数组k++;SBUF=w;//单片机把接收到的数据返回给电脑 TI=0; //清除发送中断标志位} }void init(){SCON=0x50;//串口控制寄存器,等价于SM0=0,SM1=1,SM2=0,串口方式一通信 TMOD=0X20; //设置定时器1为模式2,做为波特率发生器,8位初值自动重装的8位定时器,定时到TH1的值自动装到TL1 TH1=0xfd;//设置波特率为9600 TL1=0xfd; REN=1;//允许串口接收中断? EA=1;//开全局中断 ES=1;//串口中断允许 TR1=1; //启动波特率发生器 }void delay(unsigned int xms) { unsigned int i,j;for(i=xms;i>0;i--)for(j=112;j>0;j--); }void main() {init();P1=0xfe;//LED:1111 1110while(1){ if(w=='\n') //当发送了新行时,{k=0; //数组里的元素清零for(q=0;q<20;q++){wu[q]=0;}q=0;}//当串口调试助手发送sujunjun时执行10ms流水灯功能 if(wu[0]=='s'&&wu[1]=='u'&&wu[2]=='j'&&wu[7]=='n'&&wu[8]=='\r') { k=0; //数组里的元素清零while(1){delay(10);P1=_crol_(P1,1);//LED灯左移一位if(wu[0]=='q') //如果收到q则跳出sujunjun的流水灯break;}} //当串口调试助手发送suweiwei时执行50ms流水灯功能if(wu[0]=='s'&&wu[1]=='u'&&wu[2]=='w'&&wu[7]=='i'&&wu[8]=='\r') { k=0; //数组里的元素清零 while(1){delay(50);P1=_crol_(P1,1);//LED灯左移一位if(wu[0]=='q')//如果收到q则跳出suweiwei的流水灯break;}}} }

总结

以上是生活随笔为你收集整理的51单片机基础——串口通信字符串控制流水灯的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。