viewforum.php?f=61vadd писал(а):А можно ссылку на раздел "Периферия"
Тема - viewtopic.php?f=61&t=79801
viewforum.php?f=61vadd писал(а):А можно ссылку на раздел "Периферия"
Импульс писал(а):Я не помню ,когда втыкаю стк 200/300 в разьём lpt порта, компьютер должен как то реагировать?
Код: Выделить всё
int co = 1;
int ct = 3;
int Value = 0;
void o0(void) {
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
}
void o1(void) {
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=1;
PORTD.5=1;
PORTD.6=1;
}
void o2(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=1;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=1;//f
PORTD.6=0;//g
}
void o3(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=1;//f
PORTD.6=0;//g
}
void o4(void) {
PORTD.0=1;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=1;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o5(void) {
PORTD.0=0;//a
PORTD.1=1;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o6(void) {
PORTD.0=0;//a
PORTD.1=1;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o7(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=1;//d
PORTD.4=1;//e
PORTD.5=1;//f
PORTD.6=1;//g
}
void o8(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o9(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void t0(void) {
PORTB.0=0;
PORTB.1=0;
PORTB.2=0;
PORTB.3=0;
PORTB.4=0;
PORTB.5=0;
PORTB.6=1;
}
void t1(void) {
PORTB.0=1;
PORTB.1=0;
PORTB.2=0;
PORTB.3=1;
PORTB.4=1;
PORTB.5=1;
PORTB.6=1;
}
void t2(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=1;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=1;//f
PORTB.6=0;//g
}
void t3(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=1;//f
PORTB.6=0;//g
}
void t4(void) {
PORTB.0=1;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=1;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t5(void) {
PORTB.0=0;//a
PORTB.1=1;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t6(void) {
PORTB.0=0;//a
PORTB.1=1;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t7(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=1;//d
PORTB.4=1;//e
PORTB.5=1;//f
PORTB.6=1;//g
}
void t8(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t9(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void main( void ){
DDRD = 0xFF;
PORTD = 0xFF;
DDRB = 0xFF;
PORTB = 0xFF;
DDRA = 0x00;
PORTA = 0xFF;
while(1) {
co = value%10;
ct = value/10;
if (co == 0) { o0(); }
if (co == 1) { o1(); }
if (co == 2) { o2(); }
if (co == 3) { o3(); }
if (co == 4) { o4(); }
if (co == 5) { o5(); }
if (co == 6) { o6(); }
if (co == 7) { o7(); }
if (co == 8) { o8(); }
if (co == 9) { o9(); }
if (ct == 0) { t0(); }
if (ct == 1) { t1(); }
if (ct == 2) { t2(); }
if (ct == 3) { t3(); }
if (ct == 4) { t4(); }
if (ct == 5) { t5(); }
if (ct == 6) { t6(); }
if (ct == 7) { t7(); }
if (ct == 8) { t8(); }
if (ct == 9) { t9(); }
if(PINA.0) {value++;}
}
}
Код: Выделить всё
...
if (ct == 0) PORTB = 0b00000111;
if (ct == 1) PORTB = 0b00111000;
...Код: Выделить всё
unsigned char arr1[] = {0b00011100, 0b00011111, ...};
unsigned char arr2[] = {0b00011100, 0b00011111, ...};
...
while(1)
{
co = value%10;
ct = value/10;
PORTB = arr1[ct];
PORTD = arr2[co];
... или как там по тексту ...
}Код: Выделить всё
//расположение выводов на плате AFBGCDE
//PD.0 -> A 0 -> ABCDEF 0xb 01001000 0x48
//PC.5 -> F 1 -> BC 0xb 11101011 0xEB
//PC.4 -> B 2 -> ABDEG 0xb 01100100 0x64
//PC.3 -> G 3 -> ABCDG 0xb 01100001 0x61
//PC.2 -> C 4 -> BCGF 0xb 11000011 0xC3
//PC.1 -> D 5 -> ACDGF 0xb 01010001 0x51
//PC.0 -> E 6 -> ACDEGF 0xb 01010000 0x50
// 7 -> ABC 0xb 01101011 0x6B
// 8 -> ABCDEFG 0xb 01000000 0x40
// 9 -> ABCDFG 0xb 01000001 0x41
//соответствие портов индикаторам
//1 -> PB.4
//2 -> PB.5
//3 -> PB.3
//4 -> PD.7
//5 -> PB.2
//6 -> PB.1
//7 -> PD.6
#define DIG1 PORTB.4
#define DIG2 PORTB.5
#define DIG3 PORTB.3
#define DIG4 PORTD.7
#define DIG5 PORTB.2
#define DIG6 PORTB.1
#define DIG7 PORTD.6
// 0 1 2 3 4 5 6 7 8 9 C A H L r F
flash unsigned char digit[16]={0x48, 0xEB, 0x64, 0x61, 0xC3, 0x51, 0x50, 0x6B, 0x40, 0x41, 0x5C, 0x42, 0xC2, 0xDC, 0xF6, 0x56};
void display()
{
unsigned char temp, blink_seg, sg1, sg2, sg3;
//All digits off
DIG1 = 1;
DIG2 = 1;
DIG3 = 1;
DIG4 = 1;
DIG5 = 1;
DIG6 = 1;
DIG7 = 1;
temp = sg1 / 10;
PORTC = digit[temp];
DIG2 = 0;
delay_ms(4);
DIG2 = 1;
//minutes
temp = sg2 / 10;
PORTC = digit[temp];
DIG3=0;
delay_ms(4);
DIG3 = 1;
...
...
...
}
Можно. Гуглите на тему указатели на функцию.а можно ли в массив ф-ции засунуть?
0867532 писал(а):Всем Спасибо, а можно ли в массив ф-ции засунуть?
Код: Выделить всё
typedef unsigned char byte;
flash byte char0[8]={0x04, 0x14, 0x1F, 0x05, 0x04, 0x0A, 0x11, 0x11};//суваем то что сгенерировалось суда
flash byte char1[8]={0x04, 0x05, 0x1F, 0x14, 0x04, 0x0A, 0x11, 0x11};
flash byte char2[8]={0x1F, 0x11, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11};
flash byte char3[8]={0x1F, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F};
flash byte char4[8]={0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};
flash byte char5[8]={0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00};
flash byte char6[8]={0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00};
flash byte char7[8]={0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void main(void) {
...
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
...
lcd_putchar(0);
lcd_putchar(1);
lcd_putchar(2);//Выводим сгенерированые чары на экран
lcd_putchar(3);
lcd_putchar(4);
lcd_putchar(5);
lcd_putchar(6);
lcd_putchar(7);
...
}
Проверить заточенность лап.работает не корректно