51单片机基础——串口通信发送字符ab控制流水灯
生活随笔
收集整理的這篇文章主要介紹了
51单片机基础——串口通信发送字符ab控制流水灯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
當串口調試助手發送a時執行5ms流水燈功能,
當串口調試助手發送b時執行50ms流水燈功能
*/#include <reg52.h>
#include<intrins.h> //位移頭文件_crol_
#define uchar unsigned char
unsigned char flag,i;
char w='0';uchar code led[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f }; void receive() interrupt 4 //串口中斷服務程序
{if(RI==1){RI=0; //重新清0等待接收w=SBUF;//接收電腦傳輸過來的數據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=='a') //當串口調試助手發送a時執行流水燈功能{ while(1){delay(10);P1=_crol_(P1,1);//LED燈左移一位/* 也可以用數組方法P1=led[i]; //燈i++;if(i==8)i=0; */ if(w=='b')break;}} if(w=='b') //當串口調試助手發送b時執行流水燈功能{ //P1=0xef; while(1){delay(50);P1=_crol_(P1,1);//LED燈左移一位/* 用數組方法P1=led[i]; //燈i++;if(i==8)i=0; */ if(w=='a')break;}}if(flag==1){ flag=0;}}
}
總結
以上是生活随笔為你收集整理的51单片机基础——串口通信发送字符ab控制流水灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rational rose 2007安装
- 下一篇: 音质好的蓝牙耳机有哪些?音质好的蓝牙耳机