⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 this is the firmware usbn2mc for atmega32
💻 C
字号:
#include <inttypes.h>#include <avr/io.h>#include "uart.h"void UARTInit(void){  //UCSRB |= (1<<TXEN);			// UART TX einschalten  //UCSRC |= (1<<URSEL)|(3<<UCSZ0);	// Asynchron 8N1	//UCSRB |= ( 1 << RXEN ); // RX aktivieren	//UCSRB |= ( 1 << RXCIE ); // RX interrupt aktivieren	//UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); 		UCSRA = (1 << RXC) | (1 << TXC);  UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE);  UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);	//ATmega32 bei 16MHz und f黵 19200 Baud  UBRRH  = 0;                                   // Highbyte ist 0  UBRRL  = 51;                                  // Lowbyte ist 51 ( dezimal )    // Flush Receive-Buffer  do  {      uint8_t dummy;      (void) (dummy = UDR);  }  while (UCSRA & (1 << RXC));}void UARTPutChar(unsigned char sign){  // bei neueren AVRs steht der Status in UCSRA/UCSR0A/UCSR1A, hier z.B. fuer ATmega16:  while (!(UCSRA & (1<<UDRE))); /* warten bis Senden moeglich                   */  	UDR = sign;                    /* schreibt das Zeichen x auf die Schnittstelle */}unsigned char UARTGetChar(void){    while (!(UCSRA & (1<<RXC)));  // warten bis Zeichen verfuegbar  return UDR;                   // Zeichen aus UDR an Aufrufer zurueckgeben}void UARTWrite(char* msg){  while(*msg != '\0')  {     UARTPutChar (*msg++);  }}unsigned char AsciiToHex(unsigned char high,unsigned char low){  unsigned char new;  // check if lower equal 9 ( assii 57 )  if(high <= 57) // high is a number    high = high -48;  else // high is a letter    high = high -87;  high = high << 4;  high = high & 0xF0;   // check if lower equal 9 ( assii 57 )  if(low <= 57) // high is a number    low = low -48;  else // high is a letter    low = low -87;  low = low & 0x0F;   new = high | low;   return new;}void SendHex(unsigned char hex){  unsigned char high,low;  // get highnibble  high = hex & 0xF0;  high = high >> 4;   // get lownibble  low = hex & 0x0F;   if(high<=9)    UARTPutChar(high+48);  else    UARTPutChar(high+87);    if(low<=9)    UARTPutChar(low+48);  else    UARTPutChar(low+87);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -