Спасибо! Заработало ,
теперь можно пробовать и в железе попробовать воплотить.Добавлено (26.09.2012, 13:57)
---------------------------------------------
Начал планировать печатную плату, перемычек получается немеряно )))
Решил сделать вот таким вариантом , для четырех разрядных индикаторов
Code
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Chip type : ATmega8
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <mega8.h>
#include <spi.h>
//#define LED_DOT_MASK 0b01111111// ОА
#define LED_DOT_MASK 0b10000000 // ОК
typedef unsigned char byte;
//flash byte led_table[10]={
//0b11000000,
//0b11111001,
//0b10100100,
//0b10110000,
//0b10011001,
//0b10010010,
//0b10000010,
//0b11111000,
//0b10000000,
//0b10010000 }; //ОА
flash byte led_table[10]={
0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00000111,
0b01111111,
0b01101111 }; // ОК
byte led_dig=0;
byte led_buff[16];
interrupt [TIM0_OVF] void tmr0_ovf() {
spi(1<<led_dig); //Регистр общих анодов ????
spi(led_buff[led_dig]); //Регистр катодов первого сигментника
spi(led_buff[led_dig+4]); //Регистр катодов второго сигментника
spi(led_buff[led_dig+8]);
spi(led_buff[led_dig+12]);
PORTB.2=1;
PORTB.2=0;
led_dig++;
if (led_dig>3) led_dig=0;
}
void main() {
PORTB=0;
DDRB=0x2c;
ACSR=0x80;
SPCR=0x50;
SPSR=0;
#asm("sei")
TIMSK=1;
TCNT0=0xfd;
TCCR0=2;
while (1)
{
led_buff[0]=led_table[0]&LED_DOT_MASK;
led_buff[1]=led_table[1];
led_buff[2]=led_table[2];
led_buff[3]=led_table[3];
led_buff[4]=led_table[4]; //
led_buff[5]=led_table[5]; //
led_buff[6]=led_table[6]; //
led_buff[7]=led_table[7]; //
led_buff[8]=led_table[8];
led_buff[9]=led_table[9];
led_buff[10]=led_table[0]&LED_DOT_MASK;
led_buff[11]=led_table[1]&LED_DOT_MASK;
led_buff[12]=led_table[2] &LED_DOT_MASK; //
led_buff[13]=led_table[3]&LED_DOT_MASK;
led_buff[14]=led_table[4]&LED_DOT_MASK;
led_buff[15]=led_table[5]&LED_DOT_MASK;
};
}
И тут по ходу возник еще вопрос, который мне не получается решить самостоятельно.
Как управлять регистрами, сейчас там устанавливается 0 для индикаторов ОК нужно 1.
А так же, если буду ставить транзисторные ключи наверняка тоже потребуется инвертировать эти состояния.
Вы уж извините что злоупотребляю вашей добротой , но сам я никак...(((