реклама на сайте
подробности

 
 
> программирование атмега16
zeonix
сообщение May 18 2011, 09:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 25-04-11
Пользователь №: 64 612



хочу с ком порта передать на на мк 8, код 56. И если он его примет то PORTB=0x01;

Но возникли вопросы по функции приема данных USART_Receive.
Брал с книги конечно , но неправильная она вроде

Код
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.1b Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 18.05.2011
Author  : Freeware, for evaluation and non-commercial use only
Company :
Comments:


Chip type               : ATmega16A
Program type            : Application
AVR Core Clock frequency: 1,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16a.h>

// Declare your global variables here

unsigned int USART_Receive(void)
{
unsigned char status,resh,resl;
while (!(UCSRA &(1<<RXC))){
status=UCSRA;
resh=UCSRB;
resl=UDR;
if (status & (1<<FE)|(1<<DOR)|(1<<UPE))
return -1;
resh=(resh>>1)&0x01;
return((resh<<8)|resl);    
}
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x01;
DDRB=0xFF;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

if (USART_Receive()==56)  
         PORTB=0x01;
         else  
          PORTB=0x04;


while (1)
      {
      // Place your code here

      }
}


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yashok
сообщение May 18 2011, 10:17
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 31-08-10
Из: Минск-Витебск
Пользователь №: 59 203



Если у вас проц на частоте 1 МГц работает, то все верно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zeonix   программирование атмега16   May 18 2011, 09:11
- - yashok   Немешало бы для начала настроить сам USART. В фун...   May 18 2011, 09:36
- - zeonix   Кодunsigned int USART_Receive(void) { unsi...   May 18 2011, 09:44
- - Палыч   Цитата(zeonix @ May 18 2011, 13:44) чет в...   May 18 2011, 09:53
- - yashok   USART не настроен. На какой частоте работает проц...   May 18 2011, 09:55
- - zeonix   объясните пожалуйста. Просто я реально новичок в э...   May 18 2011, 09:56
- - yashok   Глядя на код хочется взглянуть еще и на схему.   May 18 2011, 10:05
- - zeonix   схему пока показать не могу, нет возможности пока ...   May 18 2011, 10:07
|- - Палыч   1. Следует разобраться: почему у Вас при старте пр...   May 18 2011, 12:21
- - zeonix   то есть кварц поставить? Я кстати в авр студии 4....   May 19 2011, 05:16
- - zeonix   чето с Кодunsigned char status,resh,resl; unsign...   May 19 2011, 08:43
- - yashok   Какой эффект? Вы в прерывания попадаете??   May 19 2011, 13:52
- - zeonix   можете пояснить что происходит когда на МК на TxD ...   May 19 2011, 14:50
|- - Палыч   Цитата(zeonix @ May 19 2011, 18:50) Если ...   May 20 2011, 04:53
- - XVR   ЦитатаНу то есть прокомментируйте этот код:В коде ...   May 20 2011, 05:45
|- - Палыч   Цитата(XVR @ May 20 2011, 09:45) В коде 2...   May 20 2011, 06:09
- - zeonix   какие? Ну я и говорю. С книги списал.   May 23 2011, 10:57
|- - Палыч   Цитата(zeonix @ May 23 2011, 14:57) какие...   May 23 2011, 11:24
- - zeonix   ЦитатаЛучше - заглядывать в DS. че за сегмент данн...   May 24 2011, 07:04
- - alvy   DS = DataSheet   May 24 2011, 07:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016