亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 51單片機串口發送字符事例 [打印本頁]

作者: 沒有如果123    時間: 2020-3-2 18:41
標題: 51單片機串口發送字符事例
#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)          //發送一個字節的數據,形參d即為待發送數據。
{

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

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

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

void uart(void) interrupt 4         //串口發送中斷
{
if(RI)    //收到數據
{
  RI=0;   //清中斷請求
}
else      //發送完一字節數據
{
  TI=0;
  sending=0;  //清正在發送標志
}
}





歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1