ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
15 января
1462079 Топик полностью
Boвa (09.09.2024 11:00, просмотров: 232) ответил Kpoк на Для этого нужен ПИК
Ніт. Издеваться можно и на сях для кейла под MCS51 
typedef union 
{
   DWORD Data;
   BYTE  B[4]; 
} ADC_Buff;
DWORD  Get_ADC()
{
   ADC_Buff Buff;
   Buff.B[0]= Get_ADC_Byte();//младший
   Buff.B[1]= Get_ADC_Byte();//средний    
   Buff.B[2]= Get_ADC_Byte();//старший 
   if ((Buff.B[2]&0x80)==0)  {Buff.B[3]=    0;}
   else                      {Buff.B[3]= 0xFF;}
return Buff.Data;
}

Можно внутренность и на асме переписать и проверять старший бит принятый с SPI сразу по приеме еще в аккумуляторе, после чего обнулять или устанавливать старший байт результата.

Установка старшего байта на ASM без проверки условий.

MOV A,  R6  ; расширяемый старший байт с АЦП
ADD A, #80 ; вызываем перенос при отрицательном числе
SUBB A, A ; если переноса нет - получим 0, иначе -1
MOV R7, A ; пишем куда-там расширенный байт

Как-то таг. Присобачите этот код к своему ибо мне уже надоело.