Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Программная часть. Программа опроса клавиатуры. 4.2. Листинг программы (CodeVision AVR C)
4.1. Блок-схема алгоритма
4.2. Листинг программы (CodeVision AVR C)
#define dig1 PORTC.0 #define dig2 PORTC.1 #define dig3 PORTC.2 #define dig4 PORTC.3 #define dig5 PORTC.4 #define dig6 PORTC.5
#define COMA PORTF.0 #define COMB PORTF.1 #define COMC PORTF.2 #define COMD PORTF.3 #define COME PORTF.4 #define COMF PORTF.5 #define COMG PORTF.6 #define COMPT PORTF.7
#define KBR0 PORTD.4 #define KBR1 PORTD.5 #define KBR2 PORTD.6 #define KBR3 PORTD.7
unsigned char const decode[16]={ 0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111, 0b01110111, 0b01111100, 0b00111001, 0b01011110, 0b01111001, 0b01110001 };
unsigned char digits[8]={1,2,3,4,5,6,7,8}; unsigned char place_count=1; unsigned char key_buff=0; unsigned char key=0;
interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer 1 value TCNT1H=0xFB; TCNT1L=0x1D;
set_place(place_count); PORTC=dec_7seg(digits[place_count]); key_buff=PORTD & 0xF0; switch(key_buff) { case 0x10: key=0x10; break; case 0x20: key=0x20; break; case 0x40: key=0x30; break; case 0x80: dig4=0x40; break; default: key=0; } key+=place_count; if (place_count!= 6) { place_count++; } else { place_count=1; } }
void set_place(unsigned int place) { PORTA=0xFF; switch(place) { case 1: dig1=0; break; case 2: dig2=0; break; case 3: dig3=0; break; case 4: dig4=0; break; case 5: dig5=0; break; case 6: dig6=0; break; } }
unsigned char dec_7seg(unsigned char val_hex) { val_hex=decode[val_hex]; return val_hex; }
Список использованных источников
1. Atmel AT90USB646/647/1286/1287 Preliminary Datasheet 7593D-AVR-07/06. 2. Texas Instruments TLV1544, TLV1548 Low Voltage 10-bit Analog-to-Digital Converters Datasheet. 3. Analog Devices AD5446 Datasheet, Revision C. 4. Kingbright Cx56 Datasheet. 5. ULN2803A Datasheet. 6. Транзисторы средней и большой мощности. Справочник, - М. Радио и связь, 1989.
|