Mega8. перевести с "С+" на ASM. пользов-е UART
Добавлено: Чт дек 25, 2008 14:23:53
Я начал изучать мк на асм (по известному курсу
) и на "С" не совсем понимаю что написано. Мне нужно на меге8 задействовать ЮАРТ и передавать (через буфер 232 ессес-но) данные на ПК. Нашел в пример кусок кода на "С", но кто бы мне помог разъяснить или перевести в АСМ его? пжлст 
#include <mega8>
// Standard Input/Output functions
#include <stdio>
#include <delay>
// Declare your global variables here
void uart_putc(char data) {
while (!(UCSRA & 0x20)); // Wait untill USART data register is empty
// Transmit data
UDR = data;
}
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD |= 0x03; // RXD è TXD ïîäòÿãèâàþòñÿ â +U
DDRD &= ~0x01; // RXD âõîä
DDRD |= 0x02;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
uart_putc (0x52);
delay_ms(200);
};
}
#include <mega8>
// Standard Input/Output functions
#include <stdio>
#include <delay>
// Declare your global variables here
void uart_putc(char data) {
while (!(UCSRA & 0x20)); // Wait untill USART data register is empty
// Transmit data
UDR = data;
}
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD |= 0x03; // RXD è TXD ïîäòÿãèâàþòñÿ â +U
DDRD &= ~0x01; // RXD âõîä
DDRD |= 0x02;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
// Place your code here
uart_putc (0x52);
delay_ms(200);
};
}