На Си под AVR пока не особо пытался программировать. А сейчас пытаюсь спрыгнуть с ассемблера.
На Си под AVR пока не особо пытался программировать. А сейчас пытаюсь спрыгнуть с ассемблера.
Да, но можно проще:DX168B писал(а):А, ну теперь понятно.![]()
А такая запись будет верна?Код: Выделить всё
if((PINC&(1<<PC0)) == 0x01){a=1;}
Код: Выделить всё
if(PINC&(1<<PC0)){a=1;}
Код: Выделить всё
if (PINC&0x01){ start = 1;}
да можно и так написать,но читайте строчку выше.А такая запись будет верна?
+1 согласен полностью и понятнее будет что к чему что за ногаЯ обычно создаю какой-никакой hw.h и в нём дефайню ноги переферии. Удобнее чуть-что в одном месте поменять, а не ползать по всей портянке.
Код: Выделить всё
#define PC0 (1<<0)
#define PC1 (1<<1)
........
Код: Выделить всё
in r16, PINC
andi r16, 0x01
cpi r16, 0x01
breq Label
Код: Выделить всё
sbic PINC, 0
rjmp Label
Код: Выделить всё
#define PC0 1Не совсем. Наверное всё-таки так :DX168B писал(а):думаю, что спасет это:Код: Выделить всё
#define PC0 (1<<0) #define PC1 (1<<1) ........
Код: Выделить всё
#define PC0 0
#define PC1 1
#define PC2 2
........
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
unsigned char var;
unsigned char x;
// Declare your global variables here
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
PORTD=0x24; // зажигаю цифру 4 и тушу цифру 8
}
// Timer2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
PORTD=0x18;// зажигаю цифру 8 и тушу цифру 4
}
void main(void)
{
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x04;
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0xC0;
// Global enable interrupts
#asm("sei")
while (1)
{
for (var=250;var>=3;var--)
{
OCR2=var;
delay_ms(50);
};
delay_ms(1000);
for (x=4;x<=250;x++)
{
OCR2=x;
delay_ms(50);
};
}
}
да нет, сэтим все ок.vitalik_1984 писал(а):у вас ошибок там никаких не показывает?а то может старую версию прошивки заливаем?
Не подскажете что может быть?if ((koord + atoi(RAZMER)) <= 999) {
if (c == 0) {PORTC = PORTC + 0b00000100;}
if (b == 0) {
if ((PINC&0b00000001) == 0x01){ b = 1; schet = schet + 1; }}
if (b == 1) {
if ((PINC&0b00000001) != 0x01) {b = 0;}
if (koord + schet == koord + atoi(RAZMER)) {start = 0; koord = koord + atoi(RAZMER);
c = 0; PORTC = PORTC - 0b00000100; RAZMER[0] = ' '; RAZMER[2] = ' '; RAZMER[3] = ' '; goto exit; }}
гениально самбы не догодался.Аlex писал(а):Разделить её на 4 байта и передавать.