欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5156|回復: 0
打印 上一主題 下一主題
收起左側

51單片機串口發(fā)送字符事例

[復制鏈接]
跳轉到指定樓層
樓主
ID:685767 發(fā)表于 2020-3-2 18:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#define jingzhen     11059200UL             /*使用22.1184M晶體*/     
#define botelv   9600UL             /*波特率定義為9600*/
unsigned char zifuchuan[]="您好!\n";            //待顯示字符。
volatile unsigned char sending;
sbit S4=P3^2;

void delay(unsigned char i)
{
    unsigned char j,k;
    for(j=i;j>0;j--)
        for(k=90;k>0;k--);
}
void init(void)                //串口初始化
{
EA=0; //暫時關閉中斷
TMOD&=0x0F;  //定時器1模式控制在高4位
TMOD|=0x20;    //定時器1工作在模式2,自動重裝模式
SCON=0x50;     //串口工作在模式1
TH1=256-jingzhen/(botelv*12*16);  //計算定時器重裝值
TL1=256-jingzhen/(botelv*12*16);
PCON|=0x80;    //串口波特率加倍
ES=1;         //串行中斷允許
TR1=1;        //啟動定時器1
REN=1;        //允許接收
EA=1;         //允許中斷
}

void send(unsigned char d)          //發(fā)送一個字節(jié)的數據,形參d即為待發(fā)送數據。
{

SBUF=d; //將數據寫入到串口緩沖
sending=1;     //設置發(fā)送標志
while(sending); //等待發(fā)送完畢
}

void sendc(unsigned char * pd)
{
while((*pd)!='\0') //發(fā)送字符串,直到遇到0才結束
{
  send(*pd); //發(fā)送一個字符
  pd++;  //移動到下一個字符
}
}

void main()
{
    init();
    while(1)
    {
        if(S4==0)
        {
            delay(20);
            if(!S4)
            {
                while(!S4);           
                sendc(zifuchuan);
            }
        }
    }
}

void uart(void) interrupt 4         //串口發(fā)送中斷
{
if(RI)    //收到數據
{
  RI=0;   //清中斷請求
}
else      //發(fā)送完一字節(jié)數據
{
  TI=0;
  sending=0;  //清正在發(fā)送標志
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表