|
Новый вопрос возник., Опять новичек, опять простейшее (имхо). |
|
|
|
Mar 18 2006, 02:21
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Написал программу для Avr MEGA 8, которая занимается тем, что следит за состоянием кнопки на ножке PORTC.0 (ножка - кнопка - Vcc) и если кнопка нажата, то загорается диод, подключенный к ножке PORTB.0. Вся проблема в том, что ISIS напрочь отказывается выполнять программу, т.е. вне зависимости от того, нажата кнопка, или нет, светодиод либо горит либо нет (в зависимости от начальных условий). Бъюсь уже ап стену, но не помогает, может вы поможете? Вот исходник: /***************************************************** This program was produced by the CodeWizardAVR V1.24.5 Standard Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com
Project : Version : Date : 18.03.2005 Author : ps1x Company : ccc Comments:
Chip type : ATmega8 Program type : Application Clock frequency : 4,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/
#include <mega8.h>
// Declare your global variables here
void main(void) { // Declare your local variables here
// Input/Output Ports initialization // Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0xFF;
// Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // 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 TCCR0=0x00; TCNT0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge 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: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected 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;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;
for (;;)
{ while (PORTC.0 & 0); { PORTB.0=0; while (PORTC.0 & 1); { PORTB.0 = 1; } } }
|
|
|
|
|
Mar 18 2006, 03:07
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Приложил рисунок для ясности дела. Еще, может быть дело в симуляторе? или в CVAVR? Рисунок в момент работы симулятора, второй вариант тоже пробовал, однако не помогло... Еще настораживает момент, что (см рисунок) ярлычки рядом с кнопкой и на МК красные (на них Vcc???), хотя прошивка залита с 0 на всех разьемах порта C...
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 18 2006, 07:51
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912

|
не могу понять, что значит разнесены порты?... я тоже CVavr пользуюсь...
|
|
|
|
|
Mar 18 2006, 08:17
|
Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491

|
Цитата(MakFatum @ Mar 18 2006, 10:51)  не могу понять, что значит разнесены порты?... я тоже CVavr пользуюсь... Это значит, что чтобы вывести значение в порт надо написать PORTx, а чтобы считать значение - PINx.
|
|
|
|
|
Mar 18 2006, 12:48
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912

|
ага, понятно....просто термин "разнесены" сбил с толку... Вот вопрос по синтаксису...
for (;;)
вот это в скобках (;;) - что обозначает?... Попробую догадаться: Бесконечный цикл?
|
|
|
|
|
Mar 18 2006, 13:11
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата Сам лично предпочитаю while(true), красивее смотрится... smile.gif Красиво конечно, но как правило не оптимально, будут лишние операторы. До jmp label компилируется именно for (;;)
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|