Как применить битовую манипуляцию (И очистить, ИЛИ установить и, возможно, проверить XOR) к каждому биту в двоичном файле?То, что я хотел бы сделать, это ввести символ или строку и вывести сообщение в двоичном виде на определенный вывод на моем MCU.Я хочу использовать битовую манипуляцию, потому что создание функции для каждого символа в таблице ascii заняло бы много памяти на моем MCU.
Как до сих пор видно, что я установил вывод вывода и объявил каждый бит какПеременная.Имеет ли это смысл до сих пор?
void bits (void)
{
#define RSTEST PORTBbits.RB5 //Declaring the port for serial
#define RSOUT TRISBbits.RB5 = 0 //Sets the port RB5 as an output
unsigned int b0 = 0 ; // Binary 00000000
unsigned int b1 = 0 ;
unsigned int b2 = 0 ;
unsigned int b3 = 0 ;
unsigned int b4 = 0 ;
unsigned int b5 = 0 ;
unsigned int b6 = 0 ;
unsigned int b7 = 0 ;
}
Причина, по которой я пытаюсь это сделать, заключается в том, что написание функции для каждого кода ASCII занимает много времени и занимает ненужное место в памяти.
void main(void)
{
while (1)
{
RSTEST ; // same config as above
// RSOUT = 1 ; // MSB
// __delay_ms(10);
// RSOUT = 0 ; // START
// __delay_us(25);
// RSOUT = 0 ; // 1
// __delay_us(25);
// RSOUT = 1 ; // 2
// __delay_us(25);
// RSOUT = 0 ; // 3
// __delay_us(25);
// RSOUT = 1 ; // 4
// __delay_us(25);
// RSOUT = 0 ; // 5
// __delay_us(25);
// RSOUT = 0 ; // 6
// __delay_us(25);
// RSOUT = 1 ; // 7
// __delay_us(25);
// RSOUT = 0 ; // 8
// __delay_us(25);
// RSOUT = 1 ; // STOP
//
// RSOUT = 1 ; // MSB
// __delay_ms(10);
// RSOUT = 0 ; // START
// __delay_us(25);
// RSOUT = 0 ; // 1
// __delay_us(25);
// RSOUT = 0 ; // 2
// __delay_us(25);
// RSOUT = 0 ; // 3
// __delay_us(25);
// RSOUT = 0 ; // 4
// __delay_us(25);
// RSOUT = 1 ; // 5
// __delay_us(25);
// RSOUT = 1 ; // 6
// __delay_us(25);
// RSOUT = 0 ; // 7
// __delay_us(25);
// RSOUT = 0 ; // 8
// __delay_us(25);
// RSOUT = 1 ; // STOP
//
// RSOUT = 1 ; // MSB
// __delay_ms(10);
// RSOUT = 0 ; // START
// __delay_us(25);
// RSOUT = 1 ; // 1
// __delay_us(25);
// RSOUT = 0 ; // 2
// __delay_us(25);
// RSOUT = 1 ; // 3
// __delay_us(25);
// RSOUT = 0 ; // 4
// __delay_us(25);
// RSOUT = 0 ; // 5
// __delay_us(25);
// RSOUT = 0 ; // 6
// __delay_us(25);
// RSOUT = 1 ; // 7
// __delay_us(25);
// RSOUT = 0 ; // 8
// __delay_us(25);
// RSOUT = 1 ; // STOP
}
}
Всеэти строки просто для печати JOE.
Могу ли я просто что-то похожее на printf ("JOE");
Я не хочу использовать аппаратное обеспечение TX и Rx EUSART, но программное обеспечение EUSART.