Vit (08.02.2015 15:43 - 15:47, просмотров: 104) ответил Лагунов на вот так и пошел, сначала на SPI увидал свои 16 бит, теперь прицепился к SysTick и то же самое - с дискретностью 1 мсек. А потом надо самое неприятное - формировать цифры сотен, десятков, единиц, знакогенератор. Как-то на Си это? Вероятно
Есть ещё препроцессор. как понимаю, у Вас семисегментник с точкой, подключен к одному регистру, который на SPI, со вторым, где разряды, Вы сами разберетесь
Набросал, как оно может выглядеть
//Зарисуем номера битов, соответствующих сегментам, прям со схемы. Например разбросаны как-то так:
#define bA 2
#define bB 0
#define bC 3
#define bD 4
#define bE 7
#define bF 8
#define bG 6
#define bH 5
//Намалюем битовые маски
#define sA (1U << bA)
#define sB (1U << bB)
#define sC (1U << bC)
#define sD (1U << bD)
#define sE (1U << bE)
#define sF (1U << bF)
#define sG (1U << bG)
#define sH (1U << bH)
//теперь пропишем коды для цифр 0-F
//#define _8 (sA|sB|sC|sD|sE|sF|sG)
#define _0 (sA|sB|sC|sD|sE|sF )
#define _1 (sA|sB )
#define _2 (sA|sB |sD|sE |sG)
#define _3 (sA|sB|sC|sD |sG)
#define _4 ( sB|sC |sF|sG)
#define _5 (sA |sC|sD |sF|sG)
#define _6 (sA |sC|sD|sE|sF|sG)
#define _7 (sA|sB|sC )
#define _8 (sA|sB|sC|sD|sE|sF|sG)
#define _9 (sA|sB|sC|sD |sF|sG)
#define _A (sA|sB|sC |sE|sF|sG)
#define _B ( sC|sD|sE|sF|sG) /* b */
#define _C (sA |sD|sE|sF|sG)
#define _D ( sB|sC|sD|sE |sG) /* d */
#define _E (sA |sD|sE|sF|sG)
#define _F (sA |sE|sF|sG)
const unsigned char hex2segs[]={_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_A,_B,_C,_D,_E,_F};//такой вот знакогенератор
#define iHEX2SEGS_CONVERT(X) (hex2segs[((X) & 0x0F)]) // преобразование макросом
unsigned char hex2segs_convert(unsigned char dig){ // преобразование функцией
return hex2segs[(dig & 0x0F)];// & 0x0F для предотвращения обращения за границы массива
}
SPI_Out( hex2segs_convert(digit));
//добавить точку
SPI_Out( hex2segs_convert(digit) | sH );
//для инвертированного вывода
SPI_Out( ~( hex2segs_convert(digit) | sH ) );
как-то так