乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      單片機(jī)之串口通信

       zsok 2015-05-11


      串口通信是單片機(jī)一個重要的部分,單片機(jī)和PC,單片機(jī)和單片機(jī)之間的通信大都用串口。單片機(jī)的串口是全雙工異步串口通信方式。通過TXD(P3.1)發(fā)送,RXD(P3.0)引腳接收輸入。串口傳送數(shù)據(jù)是一幀一幀發(fā)送的,它有四種工作方式,同時也可以做并行I/O的擴(kuò)展。

      圖上是串口的結(jié)構(gòu)圖。

      SBUF是數(shù)據(jù)緩沖寄存器,發(fā)送和接收用的是一個地址,但是不用擔(dān)心沖突,讀只能從接收緩沖區(qū),寫只能在發(fā)送緩沖區(qū)里。

      寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)

      SM0和SM1: 工作方式選擇(0-3),方式1和方式3使用T1產(chǎn)生波特率,方式0和方式2是固定速率。

      SM2 :在方式2和方式3的多級通信控制位

      REN:允許串行接收控制位,0禁止接收

      TB8:對于方式2和方式3,是發(fā)送的第9位

      RB8:對于方式2和方式3,是接收的第9位;對于方式1,是接收到的停止位

      TI:發(fā)送中斷標(biāo)志,發(fā)送完一幀后置位,必須由軟件清零

      RI:發(fā)送中斷標(biāo)志,接收完一幀后置位,必須由軟件清零

      寄存器PCON(最高位SMOD)

      SMOD=1時,波特率加倍

      程序:PC與單片機(jī)通信,PC發(fā)送字符,單片機(jī)接收后返回給PC

      PC端程序,VB編寫,使用MSCOMM控件

      Private Sub Command1_Click()

      MSComm1.Output = Text1.Text '發(fā)送數(shù)據(jù)

      End Sub

      Private Sub Form_Load()

      MSComm1.CommPort = 4 '設(shè)置串口的端口號

      MSComm1.Settings = '9600,n,8,1' '設(shè)置串口的波特率等參數(shù)

      MSComm1.RThreshold = 1 '設(shè)置最小接收的字節(jié)數(shù)

      MSComm1.PortOpen = True '打開串口

      End Sub

      Private Sub MSComm1_OnComm()

      Select Case MSComm1.CommEvent

      Case comEvReceive

      Text2.Text = Text2.Text & MSComm1.Input '接收數(shù)據(jù)

      End Select

      End Sub

      單片機(jī)程序:

      #include

      void UartInit();

      void UartSendchar(unsigned char ch);

      void main(void)

      {

      UartInit();

      while(1);

      }

      void UartInit()

      {

      SCON = 0x50; // SCON: 模式1

      TMOD = 0x20; // TMOD: 定時器1 模式2

      PCON = 0x00; // SMOD=0;

      TH1 = 0xFD; // Baud:9600 波特率=2SMOD×fosc/(32×12×(256-TH1))

      TL1 = 0xFD;

      IE = 0x90;

      TR1 = 1;

      EA = 1;

      }

      void UartSendChar(unsigned char ch)

      {

      SBUF = ch;

      while(TI==0);

      TI=0;

      }

      void UartRec() interrupt 4

      {

      unsigned char ch;

      ch = SBUF;

      if(RI)

      {

      RI = 0;

      UartSendChar(ch);

      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多