примерно так создаю индикацию. Сразу извеняюсь если, чтото забыл но общий принцип следующий:
// знакогенератор для анодов(какие сигменты зажигать) unsigned char __flash indicator[]={0X7E,0X30,0X6D,0X79,0X33,0X5b,0X5F,0X70,0X7F,0X7B,0X4E}; // выбор номера разряда ( unsigned char __flash catodIn[]={0XF7,0XFB,0XFD,0XFE,0XEF,0XDF}; //буфер индикатора unsigned char buferInd[6]; unsigned char __flash *p_ind;
// функция записи в индикатор void IndicatorSave(unsigned char par1,unsigned char par2,unsigned char par3,unsigned char par4,unsigned char par5,unsigned char par6);
// так записываю в индикатор void IndicatorSave(unsigned char par1,unsigned char par2,unsigned char par3,unsigned char par4,unsigned char par5,unsigned char par6) { buferInd[0]=par6; buferInd[1]=par5; buferInd[2]=par4; buferInd[3]=par3; buferInd[4]=par2; buferInd[5]=par1; //первый символ }
//далее обслуживаю индикатор примерно так INDI_PORT=0; //гасим сигменты чтобы не было мерцания
// далее идет код обслуживания клавиатуры . . . //выбераю новую позициюпозицию знакоместа ind.catod++; if(ind.catod==5) { ind.catod=0; }
//включаю новое знакоместо CATOD_PORT=catodIn[ind.catod];
// включаю сегменты согласно знакоместу INDI_PORT=*(p_ind+buferInd[ind.catod]);
Примерно так
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|