Communication(CAN, UART, etc)

Soft_UART 예제들

ElectricShock 2015. 8. 19. 17:12



bing[avr can 통신 예제]





질문있으면 언제든 댓글달아주세요

http://nexp.tistory.com/category/?page=45

▲여러가지 카테고리들 중

http://nexp.tistory.com/1236

▲휴대폰을 이용한 램프제어

http://nexp.tistory.com/1234

▲MSP430 Soft_UART 쌍방향 테스트

=============================================================================http://myfreetimehobbies.blogspot.kr/2012_10_01_archive.html

▲Example program using two UART  (PIC16F877A기반)....(AVR에 맞춰서 코드를 수정했다.)


/*This program inputs from on chip UART and output to Soft UART*/

char i, error, byte_read='1',uart_rd='1';    //Auxiliary variables

void main()

{

      DDRB=0xFF;    //원래코드:::TRISB = 0x00;.......Set PortB as Output (error signalization)

      PORTB = 0;    //Default Value

      UART1_Init(9600);    //통신속도


      error = Soft_UART_Init(&PORTC,1,0,9600,0);  //Initialize Soft_UART at 9600 bps

      if(error > 0)          //when erro=1, successful initialization

      {

         PORTB = error;      //put the error result in PORTB variable

         while(1);

      }

      Delay_ms(100);

      UART1_Write_Text("Enter Text Here(0 to exit)");

      do

      {

        if(UART1_Data_Ready())

        {

           UART1_Write(10);

           UART1_Write(13);

           uart_rd = UART1_Read();

           Soft_UART_Write(uart_rd);

           Delay_ms(100);

        }

      }

      while(uart_rd!='0');

}

==================================================================

http://myfreetimehobbies.blogspot.kr/2012_10_01_archive.html

▲인터럽트 (PIC16F877A 기반)




Code

  void interrupt(void)    //인터럽트 메소드
{
  PORTD++;          //Increment PORTD value by one
  //delay_ms(500);
  INTCON.INTF = 0;          // clear the interrupt flag
  //INTCON::GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
}
void main(void)
{
  TRISB = 0x01;
  TRISD = 0x00;
  INTCON.GIE = 1;                  //Enable Global Interrupt
  INTCON.INTE = 1;                //Enable RB0/INT external Interrupt
  INTCON.PEIE = 0;                //Disable all unmasked peripheral interrupt
  OPTION_REG.INTEDG = 1;    //Interrupt on rising edge
  PORTD=0;
do
  {
   } while(1);
}
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲