помогите с индикацией
Добавлено: Вс янв 22, 2012 00:05:24
Привет Усатым.. Помогите в чем я напортачила?
2 семисигментных индикатора
аттини2313
пб 0 пб 7 выходы
ПА0 и ПА1 сток но они не фурычат... в конце самом..
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
// LED 7 SEG Definitions and data
#define A_SEG (4) // 14 PB2
#define B_SEG (128) // 19 PB7
#define C_SEG (64) // 18 PB6
#define D_SEG (16) // 16 PB4
#define E_SEG (32) // 17 PB5
#define F_SEG (8) // 15 PB3
#define G_SEG (1) // 12 PB0
#define H_SEG (-2) // 13 PB1 - это не важно, и она работает норм
#define DIG_1 (char) ~(B_SEG+C_SEG)
#define DIG_2 (char) ~(A_SEG+B_SEG+G_SEG+E_SEG+D_SEG)
#define DIG_3 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+G_SEG)
#define DIG_4 (char) ~(B_SEG+C_SEG+G_SEG+F_SEG)
#define DIG_5 (char) ~(A_SEG+F_SEG+G_SEG+C_SEG+D_SEG)
#define DIG_6 (char) ~(A_SEG+C_SEG+D_SEG+E_SEG+F_SEG+G_SEG)
#define DIG_7 (char) ~(A_SEG+B_SEG+C_SEG)
#define DIG_8 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+E_SEG+F_SEG+G_SEG)
#define DIG_9 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+F_SEG+G_SEG)
#define DIG_0 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+E_SEG+F_SEG)
#define DIG_OFF (char) 255
char digits[] = {DIG_0, DIG_1, DIG_2, DIG_3, DIG_4,
DIG_5, DIG_6, DIG_7, DIG_8, DIG_9 };
char DISPLAY_value = 9; //значение которое будет отобр. всего от 00 до 99
char DIG_ONOFF = 0;
char DOTS_ONOFF = 0;
#define MAX_DIGITS 2 //Коллич цифр на дисплее 2
char IND_number = 0; //текущие цифры для отображения выводит с памяти норм.
#define DISPLAY_PORT PORTB
#define DISPLAY_DDR DDRB
#define DIGIT_PORT PORTA
#define DIGIT_DDR DDRA
Тему переместил в МК и ПЛИС.
ploop
2 семисигментных индикатора
аттини2313
пб 0 пб 7 выходы
ПА0 и ПА1 сток но они не фурычат... в конце самом..
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
// LED 7 SEG Definitions and data
#define A_SEG (4) // 14 PB2
#define B_SEG (128) // 19 PB7
#define C_SEG (64) // 18 PB6
#define D_SEG (16) // 16 PB4
#define E_SEG (32) // 17 PB5
#define F_SEG (8) // 15 PB3
#define G_SEG (1) // 12 PB0
#define H_SEG (-2) // 13 PB1 - это не важно, и она работает норм
#define DIG_1 (char) ~(B_SEG+C_SEG)
#define DIG_2 (char) ~(A_SEG+B_SEG+G_SEG+E_SEG+D_SEG)
#define DIG_3 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+G_SEG)
#define DIG_4 (char) ~(B_SEG+C_SEG+G_SEG+F_SEG)
#define DIG_5 (char) ~(A_SEG+F_SEG+G_SEG+C_SEG+D_SEG)
#define DIG_6 (char) ~(A_SEG+C_SEG+D_SEG+E_SEG+F_SEG+G_SEG)
#define DIG_7 (char) ~(A_SEG+B_SEG+C_SEG)
#define DIG_8 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+E_SEG+F_SEG+G_SEG)
#define DIG_9 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+F_SEG+G_SEG)
#define DIG_0 (char) ~(A_SEG+B_SEG+C_SEG+D_SEG+E_SEG+F_SEG)
#define DIG_OFF (char) 255
char digits[] = {DIG_0, DIG_1, DIG_2, DIG_3, DIG_4,
DIG_5, DIG_6, DIG_7, DIG_8, DIG_9 };
char DISPLAY_value = 9; //значение которое будет отобр. всего от 00 до 99
char DIG_ONOFF = 0;
char DOTS_ONOFF = 0;
#define MAX_DIGITS 2 //Коллич цифр на дисплее 2
char IND_number = 0; //текущие цифры для отображения выводит с памяти норм.
#define DISPLAY_PORT PORTB
#define DISPLAY_DDR DDRB
#define DIGIT_PORT PORTA
#define DIGIT_DDR DDRA
Тему переместил в МК и ПЛИС.
ploop