Page 212 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 212

- 1 시작 비트
                                                              - 5,6,7,8,9 데이터 비트
                                                              - 없음, 짝수 또는 홀수 패리티 비트
                                                              - 1 또는 2 정지 비트




            14.  데이터  송신
              -  폴링  방식  :  UCSRA(UDRE)를  체크하여  데이터를  UDR에  넣어주기만  하면  된다.
                    폴링  방식의  직렬  수신  예제

                  void USART_Transmit(unsigned char data)
                    while (!(UCSRA & (1<<URE)); //전송버퍼가 비워질 때까지 대기
                     UDR = data; } //버퍼에 데이터를 넣어 데이터 전송
                  void TxChar(unsigned char t)     // ------ 한문자 전송함수 --------
                  {
                      while((UCSR0A & 0x20) == 0);
                      UDR0 = t;
                      UCSR0A |= 0x20; }
                  oid TxString(flash unsigned char *str) // ------ 문자열 전송함수 --------
                  {
                      int i =0;
                      while(str[i] != 0)         // 문자열 끝에 NULL 문자 “0” 검출 때 까지 전송
                      {
                              TxChar(str[i]);
                               i++;
                      }   }

            -  인터럽트  방식  :  UCSRA의  UDRE(데이터  레지스터  비움)  인터럽트,  TXC(전송  완료)
            인터럽트
                    UCSRA의  UDRE 플래그 체크  인터럽트를  위해 UCSRB(UDRIE)을 1로  활성화.
                        인터럽트에  의한  데이터  전송이  이루어질  때  데이터  레이지스터  비움  인터럽트  프로그
                 램은  UDRE를  클리어  시키기  위해  UDR에  새로운  데이터를  써넣거나  데이터  레지스터  비
                 움  인터럽트를  비활성화시켜야한다.  그렇지  않으면  인터럽트  프로그램이  종료할  때마다
                 새로운  인터럽트가  발생할  것이다.
                      TXC  플래그  체크  인터럽트를  위해  UCSRB(TXCIE)을  1로  활성화.
                      TXC  플래그는  전송  완료  인터럽트가  실행되어  자동으로  클리어  되거나  해당  비트에  “1”
                 을  써넣는  것으로  클리어  된다.
                  interrupt  [USART0_DRE]  void  usart0_transmit(void)  //  --  UDR  Empty  인터럽트  --
                  {
                          UDR0 = *ptr;
                          ptr++;
                          if(*ptr  ==0)
                                      ptr  = String;
                  }

                 ■  데이터  송신은  인터럽트  방식보다는  폴링  방식을  이용하는  것이  편리하다.




                                                         -  205  -
   207   208   209   210   211   212   213   214   215   216   217